GKE, как избежать удаления набора демонов кластерным автомасштабером?

# #kubernetes #google-kubernetes-engine

Вопрос:

Это мой демонический набор

 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
 

Согласно документации.

cluster-autoscaler.kubernetes.io/enable-ds-eviction: «ложь» должна предотвращать уменьшение масштаба.

Но GKE cluster autoscaler игнорирует эту аннотацию.

Есть ли какой-либо способ предотвратить удаление набора демонов автомасштабером кластера?

Комментарии:

1. Вы говорите, что DS удаляется до других развертываний на самом узле, или вы говорите, что весь узел сокращается (что, конечно, включает DS)

2. Весь узел масштабируется. Я надеюсь, что не буду уменьшать масштаб этого узла, когда существует такой тип DS.

3. Однако набор демонов запускает модуль на каждом узле; похоже, что это вообще предотвратит масштабирование кластерного автоскейлера.

4. Что я хочу сделать, так это удалить эту аннотацию, когда DaemonSet завершит свою работу.

Ответ №1:

cluster-autoscaler.kubernetes.io/enable-ds-eviction Аннотация не применяется, если узел фактически пуст. Во время процесса уменьшения масштаба, в то время как автоскейлер удаляет/переназначает модули в другом месте, он будет игнорировать наборы демонов, если cluster-autoscaler.kubernetes.io/enable-ds-eviction установлено значение false. Как только узел будет пуст (т. Е. Больше не будет развернутых модулей), узел будет удален (и модуль набора демонов будет изящно завершен).

Комментарии:

1. Похоже, я неправильно понял эту аннотацию. Спасибо вам за ваши ответы.

2. Я думал об этом. Независимо от того, правда это или ложь, это будет уменьшаться. В чем реальная польза этой аннотации?

3. Это делается для того, чтобы гарантировать, что, пока на узле развернуты модули, набор демонов не будет удален. Например, если автоскейлер определит, что он может перемещать модули на другие узлы, он не будет удалять набор демонов во время процесса уменьшения масштаба. Но как только узел опустеет, он удалит узел.