如何从同一节点中的另一个 pod 与 daemonset pod 通信?

how to communicate with daemonset pod from another pod in the same node?

我想要一个 daemonset-redis,其中每个节点都有自己的缓存,每个部署 pod 将与其本地 daemonset-redis 通信如何实现?如何从 docker-container?

中引用同一节点中的 daemonset pod

更新: 我宁愿不使用服务选项并确保每个 pod 访问其本地 daemonset

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: redislocal
spec:
  selector:
    matchLabels:
      name: redislocal
  template:
    metadata:
      labels:
        name: redislocal
    spec:
      hostNetwork: true
      containers:
      - name: redislocal
        image: redis:5.0.5-alpine
        ports:
        - containerPort: 6379
          hostPort: 6379

你应该定义一个服务(选择所有redis pods)然后从其他pods

与redis通信

有一种方法不是使用service

你可以Expose Pod Information to Containers Through Environment Variables.

并且您可以使用status.hostIP 来知道pod 是运行 的节点的IP 地址。 这是在 Kubernetes 1.7 link

中引入的

您可以将其添加到您的 poddeployment yaml:

env:
- name: HOST_IP
  valueFrom:
    fieldRef:
      fieldPath: status.hostIP

它会设置一个变量HOST_IP,它的值是pod是运行的节点ip,然后你可以用它连接到本地DeamonSet.