8

我想要一个 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

4

2 回答 2

13

有一种使用service.

您可以通过环境变量向容器公开 Pod 信息

您可以使用它来了解正在运行status.hostIP的节点的 IP 地址。pod这是在 Kubernetes 1.7链接中引入的

您可以将其添加到您的poddeploymentyaml 中:

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

它将设置一个变量,该变量HOST_IP的值为运行 ip 的节点pod,然后您可以使用它连接到本地DeamonSet

于 2019-08-02T11:02:53.943 回答
2

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

于 2019-06-12T13:45:57.807 回答