【问题标题】:GKE, how to avoid DaemonSet being evicted by cluster autoscaler?GKE,如何避免 DaemonSet 被集群自动缩放器驱逐?
【发布时间】:2021-10-15 07:31:17
【问题描述】:

这是我的守护进程

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
      annotations:
        "cluster-autoscaler.kubernetes.io/enable-ds-eviction": "false"
        "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP

根据documentation.

cluster-autoscaler.kubernetes.io/enable-ds-eviction: "false" 应该防止缩减。

但 GKE 集群自动扩缩器会忽略此注解。

有什么方法可以防止 DaemonSet 被集群自动扩缩器驱逐?

【问题讨论】:

  • 您是说 DS 在节点本身上的其他部署之前被驱逐,还是您说整个节点正在缩小(当然包括 DS)
  • 整个节点正在缩小。希望有这种DS的时候不要把这个节点缩小。
  • 一个 DaemonSet 在 每个 节点上运行一个 pod;似乎这会阻止集群自动扩缩器进行扩展。
  • 我想做的是在 DaemonSet 完成工作后删除这个注解。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

一旦节点实际为空,cluster-autoscaler.kubernetes.io/enable-ds-eviction 注释将不适用。在缩减过程中,当自动扩缩器在别处驱逐/重新调度 pod 时,当 cluster-autoscaler.kubernetes.io/enable-ds-eviction 设置为 false 时,它​​将忽略守护程序集。一旦节点为空(即不再有任何已部署的 pod),该节点将被移除(并且 daemonset pod 将被正常终止)。

【讨论】:

  • 看来我误解了这个注释。谢谢你的回答。
  • 我想过。不管是真是假,这都会缩小。这个注解的真正用途是什么?
  • 这是为了确保在节点部署了 pod 时,守护程序集不会被驱逐。例如,如果自动缩放器确定它可以将 pod 移动到其他节点,它不会在缩减过程中驱逐守护程序集。但是一旦节点为空,就会移除节点。
猜你喜欢
  • 2022-11-11
  • 2011-01-17
  • 2018-05-13
  • 2021-06-23
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
  • 2019-08-16
  • 2023-01-26
相关资源
最近更新 更多