Как связаться с модулем daemonset из другого модуля в том же узле?
Я хочу daemonset-redis, где каждый узел будет иметь свое собственное кэширование, и каждый модуль развертывания будет взаимодействовать со своим локальным daemonset-redis, как этого добиться? как ссылаться на модуль daemonset в том же узле из docker-контейнера?
ОБНОВЛЕНИЕ: я скорее не использую сервисную опцию и удостоверяюсь, что каждый модуль имеет доступ к своему локальному демону
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
2 ответа
Есть способ не использовать service
,
Вы можете раскрыть информацию о контейнерах в контейнерах через переменные среды.
И вы можете использовать status.hostIP
узнать IP-адрес узла, где pod
это работает. Это было введено в Kubernetes 1,7 ссылка
Вы можете добавить это к вашему pod
или же deployment
YAML:
env:
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
Это установит переменную HOST_IP
который будет иметь значение узла IP, на котором pod
работает, то вы можете использовать его для подключения к локальной DeamonSet
,
Вы должны определить службу (выбрать все модули Redis), а затем общаться с Redis из других модулей.