Стадия жизненного цикла модуля: General Availability

Как поднять кластер

  1. Настройте облачное окружение.
  2. Включите модуль или передайте флаг --extra-config-map-data base64_encoding_of_custom_config с параметрами модуля в скрипт установки install.sh.
  3. Создайте один или несколько custom resource GCPInstanceClass.
  4. Создайте один или несколько custom resource NodeGroup для управления количеством и процессом заказа машин в облаке.

Добавление CloudStatic узлов в кластер

К виртуальным машинам, которые вы хотите добавить к кластеру в качестве узлов, добавьте Network Tag, аналогичный префиксу кластера.

Префикс кластера можно узнать, воспользовавшись следующей командой:

d8 k -n kube-system get secret d8-cluster-configuration -o json | jq -r '.data."cluster-configuration.yaml"' \
  | base64 -d | grep prefix

Как создать прерываемые узлы в GCP?

Прерываемые виртуальные машины в Google Cloud называются preemptible-инстансами. Чтобы группа узлов заказывала их, установите параметр preemptible ресурса GCPInstanceClass в true.

Пример:

apiVersion: deckhouse.io/v1
kind: GCPInstanceClass
metadata:
  name: worker-preempt
spec:
  machineType: n1-standard-4
  diskSizeGb: 30
  preemptible: true
---
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: worker-preempt
spec:
  nodeType: CloudEphemeral
  cloudInstances:
    classReference:
      kind: GCPInstanceClass
      name: worker-preempt
    minPerZone: 2
    maxPerZone: 4
    zones:
      - europe-west4-a

Вместе с этим параметром Deckhouse Platform (DP) отключает автоматический перезапуск виртуальной машины и задаёт её остановку при обслуживании хоста.

Ограничения прерываемых узлов в GCP

Учитывайте следующие ограничения:

  • Параметр preemptible действует только для групп узлов типа CloudEphemeral, потому что GCPInstanceClass применяется только к ним.
  • DP не отслеживает уведомления Google Cloud о предстоящем прерывании и не выполняет drain узла заранее. Когда Google Cloud останавливает инстанс, узел переходит в состояние NotReady, а группа заказывает новый узел взамен прерванного. До этого момента поды остановленного узла могут отображаться в Kubernetes API в состоянии Running, хотя они уже недоступны.
  • Размещайте на прерываемых узлах только ту нагрузку, которая переносит внезапную потерю узла.

Изменение параметра preemptible в существующем GCPInstanceClass приводит к пересозданию всех узлов соответствующей группы.