В настоящее время я использую Kubernetes для планирования DaemonSet на главном и рабочем узлах.
Определение DaemonSet одинаково для обоих типов узлов (одно и то же изображение, одинаковые тома и т. Д.), Единственное отличие состоит в том, что при выполнении точки входа мне нужно написать другой файл конфигурации (который создается вPython с некоторыми динамическими значениями), если узел является мастером или рабочим.
В настоящее время, чтобы преодолеть это, я использую два разных определения DaemonSet со значением env, которое сообщает, является ли узел мастером или нет.Вот файл yaml (только соответствующие части):
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: worker-ds
namespace: kube-system
labels:
k8s-app: worker
spec:
...
spec:
hostNetwork: true
containers:
- name: my-image
...
env:
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: IS_MASTER
value: "false"
...
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: master-ds
namespace: kube-system
labels:
k8s-app: master
spec:
...
spec:
hostNetwork: true
nodeSelector:
node-role.kubernetes.io/master: ""
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule
containers:
- name: my-image
...
env:
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: IS_MASTER
value: "true"
...
Однако, поскольку единственное отличие - это значение IS_MASTER , я хочу свернуть оба определения в одном, которое программно понимаетесли текущий узел, на котором запланирован модуль, является мастером или рабочим.
Есть ли способ узнать эту информацию об узле программным путем (даже читая файл конфигурации [например, что-то, что имеет только мастер)или наоборот) в узле или что-то подобное)?
Заранее спасибо.