Kubernetes:如何确保在每个工作节点上调度一个 Pod?

Jum*_*ode 1 kubernetes kubernetes-pod

目标:在每个节点上至少安排一个 pod(即“日志抓取器”)一次,但不超过一次

假设一个集群有以下节点

节点

  1. 主/控制平面
  2. 工人 1
  3. 工人 2
  4. 工人 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
Run Code Online (Sandbox Code Playgroud)

添加亲和性以仅选择“工作”节点(或非母节点)

  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
            - key: "worker"
              operator: In
              values:
              - "true"
Run Code Online (Sandbox Code Playgroud)

问题 1:我如何确保每次node运行ONE-AND-ONLY-ONE pod类型log-scraper

问题 2:应该应用/添加哪些其他清单来实现这一目标?

Kri*_*sia 5

您可能应该使用Daemonsets,它正是为此目的而制作的,即为每个节点安排一个 pod,并在集群自动缩放的情况下自动添加到新节点。