Kubernetes:如何确保在每个工作节点上调度一个Pod?
目标:在每个节点上至少安排一个 pod(即“日志抓取器”)一次,但不超过一次
假设一个集群有以下节点
节点
- 主/控制平面
- 工人 1
- 工人 2
- 工人 2
我正在使用的 Pod
apiVersion: v1
kind: Pod
metadata:
name: log-scraper
spec:
volumes:
- name: container-log-dir
hostPath:
path: /var/log/containers
containers:
- image: "logScraper:latest"
name: log-munger
volumeMounts:
- name: container-log-dir
mountPath: /var/log/logging-app
添加亲和性以仅选择“工作”节点(或非母节点)
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "worker"
operator: In
values:
- "true"
问题 1:我如何确保每次node运行ONE-AND-ONLY-ONE pod类型log-scraper
问题 2:应该应用/添加哪些其他清单来实现这一目标?
回答
您可能应该使用Daemonsets,它正是为此目的而制作的,即为每个节点安排一个 pod,并在集群自动缩放的情况下自动添加到新节点。