【问题标题】:how to communicate with daemonset pod from another pod in the same node?如何与同一节点中另一个 pod 的 daemonset pod 通信?
【发布时间】:2019-10-27 00:57:55
【问题描述】:

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

更新: 我宁愿不使用服务选项并确保每个 pod 都访问其本地守护程序集

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

【问题讨论】:

    标签: kubernetes daemonset


    【解决方案1】:

    有一种方法使用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

    【讨论】:

      【解决方案2】:

      您应该定义一个服务(选择所有 redis pod),然后从其他 pod 与 redis 通信

      【讨论】:

      • 我也认为这是解决方案,但是 pod 会严格与本地守护进程通信吗?服务是否提供这种保证?
      • 我宁愿不使用服务。我认为还有另一种方法我希望通过使用某种别名访问运行 pod 的节点来获得答案
      猜你喜欢
      • 2022-01-25
      • 2019-12-17
      • 2021-12-30
      • 1970-01-01
      • 2019-04-08
      • 2021-06-19
      • 1970-01-01
      • 2020-02-20
      • 2019-10-26
      相关资源
      最近更新 更多