Если в процессе переключения образ какого-либо модуля не загрузился заново и модуль не переустановился, для устранения проблемы воспользуйтесь инструкцией.

Переключение на режим Direct

Для переключения уже работающего кластера на режим Direct выполните следующие шаги:

При первом переключении с режима Unmanaged на режим Direct произойдёт полный перезапуск всех компонентов DKP.

  1. Перед переключением выполните миграцию на использование модуля registry.

  2. Убедитесь, что модуль registry включен и работает. Для этого выполните следующую команду:

    d8 k get module registry -o wide
    

    Пример вывода:

    NAME       WEIGHT ...  PHASE   ENABLED   DISABLED MESSAGE   READY
    registry   38     ...  Ready   True                         True
    
  3. Убедитесь, что все master-узлы находятся в состоянии Ready и не имеют статуса SchedulingDisabled, используя следующую команду:

    d8 k get nodes
    

    Пример вывода:

    NAME       STATUS   ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready    control-plane,master  ...
    

    Пример вывода, когда master-узел (master-2 в примере) находится в статусе SchedulingDisabled:

    NAME       STATUS                      ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready,SchedulingDisabled    control-plane,master  ...
    
  4. Проверьте, чтобы очередь Deckhouse была пустой и без ошибок:

    d8 system queue list
    

    Пример вывода:

    Summary:
    - 'main' queue: empty.
    - 107 other queues (0 active, 107 empty): 0 tasks.
    - no tasks to handle.
    
  5. Установите настройки режима Direct в ModuleConfig deckhouse. Если используется registry, отличный от registry.deckhouse.ru, ознакомьтесь с конфигурацией модуля deckhouse для корректной настройки.

    Пример конфигурации:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: deckhouse
    spec:
      version: 1
      enabled: true
      settings:
        registry:
          mode: Direct
          direct:
            imagesRepo: registry.deckhouse.ru/deckhouse/ee
            scheme: HTTPS
            license: <LICENSE_KEY> # Замените на ваш лицензионный ключ
    
  6. Проверьте статус переключения registry в секрете registry-state, используя инструкцию.

    Пример вывода:

    conditions:
    # ...
      - lastTransitionTime: "..."
        message: ""
        reason: ""
        status: "True"
        type: Ready
    hash: ..
    mode: Direct
    target_mode: Direct
    

Переключение на режим Proxy

Для переключения уже работающего кластера на режим Proxy выполните следующие шаги:

  • При первом переключении с режима Unmanaged на режим Proxy произойдёт полный перезапуск всех компонентов DKP.
  • Переключение из режима Local в Proxy недоступно. Для переключения из режима Local необходимо переключить registry на другой доступный режим (например, Direct).
  1. Перед переключением выполните миграцию на использование модуля registry.

  2. Убедитесь, что модуль registry включен и работает. Для этого выполните следующую команду:

    d8 k get module registry -o wide
    

    Пример вывода:

    NAME       WEIGHT ...  PHASE   ENABLED   DISABLED MESSAGE   READY
    registry   38     ...  Ready   True                         True
    
  3. Убедитесь, что все master-узлы находятся в состоянии Ready и не имеют статуса SchedulingDisabled, используя следующую команду:

    d8 k get nodes
    

    Пример вывода:

    NAME       STATUS   ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready    control-plane,master  ...
    

    Пример вывода, когда master-узел (master-2 в примере) находится в статусе SchedulingDisabled:

    NAME       STATUS                      ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready,SchedulingDisabled    control-plane,master  ...
    
  4. Проверьте, чтобы очередь Deckhouse была пустой и без ошибок:

    d8 system queue list
    

    Пример вывода:

    Summary:
    - 'main' queue: empty.
    - 107 other queues (0 active, 107 empty): 0 tasks.
    - no tasks to handle.
    
  5. Установите настройки режима Proxy в ModuleConfig deckhouse. Если используется registry, отличный от registry.deckhouse.ru, ознакомьтесь с конфигурацией модуля deckhouse для корректной настройки.

    Пример конфигурации:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: deckhouse
    spec:
      version: 1
      enabled: true
      settings:
        registry:
          mode: Proxy
          proxy:
            imagesRepo: registry.deckhouse.ru/deckhouse/ee
            scheme: HTTPS
            license: <LICENSE_KEY> # Замените на ваш лицензионный ключ
    
  6. Проверьте статус переключения registry в секрете registry-state, используя инструкцию.

    Пример вывода:

    conditions:
    # ...
      - lastTransitionTime: "..."
        message: ""
        reason: ""
        status: "True"
        type: Ready
    hash: ..
    mode: Proxy
    target_mode: Proxy
    

Переключение на режим Local

Для переключения уже работающего кластера на режим Local выполните следующие шаги:

  • При первом переключении с режима Unmanaged на режим Local произойдёт полный перезапуск всех компонентов DKP.
  • Переключение из режима Proxy в Local недоступно. Для переключения из режима Proxy необходимо переключить registry на другой доступный режим (например, Direct).
  1. Перед переключением выполните миграцию на использование модуля registry.

  2. Убедитесь, что модуль registry включен и работает. Для этого выполните следующую команду:

    d8 k get module registry -o wide
    

    Пример вывода:

    NAME       WEIGHT ...  PHASE   ENABLED   DISABLED MESSAGE   READY
    registry   38     ...  Ready   True                         True
    
  3. Убедитесь, что все master-узлы находятся в состоянии Ready и не имеют статуса SchedulingDisabled, используя следующую команду:

    d8 k get nodes
    

    Пример вывода:

    NAME       STATUS   ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready    control-plane,master  ...
    

    Пример вывода, когда master-узел (master-2 в примере) находится в статусе SchedulingDisabled:

    NAME       STATUS                      ROLES                 ...
    master-0   Ready    control-plane,master  ...
    master-1   Ready    control-plane,master  ...
    master-2   Ready,SchedulingDisabled    control-plane,master  ...
    
  4. Проверьте, чтобы очередь Deckhouse была пустой и без ошибок:

    d8 system queue list
    

    Пример вывода:

    Summary:
    - 'main' queue: empty.
    - 107 other queues (0 active, 107 empty): 0 tasks.
    - no tasks to handle.
    
  5. Подготовьте архивы с образами DKP текущей версии. Для этого, воспользуйтесь командой d8 mirror.

    Пример:

    TAG=$(
     d8 k -n d8-system get deployment/deckhouse -o yaml \
     | yq -r '.spec.template.spec.containers[] | select(.name == "deckhouse").image | split(":")[-1]'
    ) && echo "TAG: $TAG"
    
    EDITION=$(
     d8 k -n d8-system exec -it svc/deckhouse-leader -- deckhouse-controller global values -o yaml \
     | yq .deckhouseEdition
    ) && echo "EDITION: $EDITION"
    
    d8 mirror pull \
    --license="<LICENSE_KEY>" \
    --source="registry.deckhouse.ru/deckhouse/$EDITION" \
    --deckhouse-tag="$TAG" \
    /home/user/d8-bundle
    
  6. Установите настройки режима Local в ModuleConfig deckhouse.

    Пример конфигурации:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: deckhouse
    spec:
      version: 1
      enabled: true
      settings:
        registry:
          mode: Local
    
  7. Проверьте статус переключения registry в секрете registry-state, используя инструкцию. В статусе необходимо дождаться запуска проверки RegistryContainsRequiredImages. Условие отобразит отсутствие или наличие образов в запущенном локальном registry.

    Пример вывода:

    conditions:
    # ...
    - lastTransitionTime: "..."
      message: |-
        Mode: Default
        master-1: 0 of 166 items processed, 166 items with errors:
        - source: module/control-plane-manager/control-plane-manager133
          image: 10.128.0.5:5001/system/deckhouse@sha256:00202db19b40930f764edab5695f450cf709d50736e012055393447b3379414a
          error: HEAD https://10.128.0.5:5001/v2/system/deckhouse/manifests/sha256:00202db19b40930f764edab5695f450cf709d50736e012055393447b3379414a: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details)
        - source: module/cloud-provider-yandex/cloud-metrics-exporter
          image: 10.128.0.5:5001/system/deckhouse@sha256:05517a86fcf0ec4a62d14ed7dc4f9ffd91c05716b8b0e28263da59edf11f0fad
          error: HEAD https://10.128.0.5:5001/v2/system/deckhouse/manifests/sha256:05517a86fcf0ec4a62d14ed7dc4f9ffd91c05716b8b0ed86d6a1f465f4556fb8: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details)
        - source: module/control-plane-manager/kube-controller-manager132
          image: 10.128.0.5:5001/system/deckhouse@sha256:13f24cc717698682267ed2b428e7399b145a4d8ffe96ad1b7a0b3269b17c7e61
          error: HEAD https://10.128.0.5:5001/v2/system/deckhouse/manifests/sha256:13f24cc717698682267ed2b428e7399b145a4d8ffe96ad1b7a0b3269b17c7e61: unexpected status code 404 Not Found (HEAD responses have no body, use GET for details)
    
          ...and more
      reason: Processing
      status: "False"
      type: RegistryContainsRequiredImages
    
  8. Загрузите образы в локальный registry с помощью команды d8 mirror. Загрузка образов в локальный registry осуществляется через Ingress по адресу registry.${PUBLIC_DOMAIN}.

    Получите пароль read-write пользователя локального registry:

    $ d8 k -n d8-system get secret/registry-user-rw -o json | jq -r '.data | to_entries[] | "\(.key): \(.value | @base64d)"'
    name: rw
    password: KFVxXZGuqKkkumPz
    passwordHash: $2a$10$Phjbr6iinLf00ZZDD2Y7O.p9H3nDOgYzFmpYKW5eydGvIsdaHQY0a
    

    Загрузите образы в локальный registry:

    d8 mirror push \
    --registry-login="rw" \
    --registry-password="KFVxXZGuqKkkumPz" \
    /home/user/d8-bundle \
    registry.${PUBLIC_DOMAIN}/system/deckhouse
    
  9. Проверьте статус переключения registry в секрете registry-state, используя инструкцию. После загрузки образов статус RegistryContainsRequiredImages должен быть в состоянии Ready

    Пример вывода:

    conditions:
    # ...
    - lastTransitionTime: "..."
      message: |-
        Mode: Default
        master-1: all 166 items are checked
      reason: Ready
      status: "True"
      type: RegistryContainsRequiredImages
    hash: ..
    mode: Direct
    target_mode: Local
    
  10. Дождитесь завершения переключения. Для проверки статуса переключения воспользуйтесь инструкцией.

    Пример вывода:

    conditions:
    # ...
      - lastTransitionTime: "..."
        message: ""
        reason: ""
        status: "True"
        type: Ready
    hash: ..
    mode: Local
    target_mode: Local
    

Переключение на режим Unmanaged

Для переключения уже работающего кластера на режим Unmanaged выполните следующие шаги:

Изменение registry в Unmanaged режиме приведёт к перезапуску всех компонентов DKP.

  1. Перед переключением выполните миграцию на использование модуля registry.

  2. Убедитесь, что модуль registry включен и работает. Для этого выполните следующую команду:

    d8 k get module registry -o wide
    

    Пример вывода:

    NAME       WEIGHT ...  PHASE   ENABLED   DISABLED MESSAGE   READY
    registry   38     ...  Ready   True                         True
    
  3. Проверьте, чтобы очередь Deckhouse была пустой и без ошибок:

    d8 system queue list
    

    Пример вывода:

    Summary:
    - 'main' queue: empty.
    - 107 other queues (0 active, 107 empty): 0 tasks.
    - no tasks to handle.
    
  4. Установите настройки режима Unmanaged в ModuleConfig deckhouse. Если используется registry, отличный от registry.deckhouse.ru, ознакомьтесь с конфигурацией модуля deckhouse для корректной настройки.

    Пример конфигурации:

    apiVersion: deckhouse.io/v1alpha1
    kind: ModuleConfig
    metadata:
      name: deckhouse
    spec:
      version: 1
      enabled: true
      settings:
        registry:
          mode: Unmanaged
          unmanaged:
            imagesRepo: registry.deckhouse.ru/deckhouse/ee
            scheme: HTTPS
            license: <LICENSE_KEY> # Замените на ваш лицензионный ключ
    
  5. Проверьте статус переключения registry в секрете registry-state, используя инструкцию.

    Пример вывода:

    conditions:
    # ...
      - lastTransitionTime: "..."
        message: ""
        reason: ""
        status: "True"
        type: Ready
    hash: ..
    mode: Unmanaged
    target_mode: Unmanaged
    
  6. При необходимости переключения на старый метод управления registry, ознакомьтесь с инструкцией.

Это устаревший (deprecated) формат управления registry.