Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Выключение платформы

В данном разделе описана процедура корректного выключения платформы Nova Container Platform.

1. Подготовительные действия для выключения Nova Container Platform

  • Выполните полное резервное копирование мастер-узлов перед выключением кластера Kubernetes

    Убедитесь, что резервная копия надежно сохранена на внешнем хранилище. В случае возникновения проблем с Nova Container Platform резервная копия позволит восстановить кластер в прежнее состояние.

  • Если планируется отключение кластера Kubernetes на продолжительное время, проверьте срок действия TLS-сертификатов

  • (Опционально) Выполните резервное копирование данных пользовательских приложений предусмотренным методом

2. Выключение узлов кластера

Узлы кластера Kubernetes можно выключить на срок не более 1 года от даты первоначальной установки платформы или перевыпуска сертификатов в кластере. При соблюдении указанных сроков кластер Kubernetes запустится корректно и продолжит функционировать.

2.1. Предварительные условия

  • Выполнено полное резервное копирование мастер-узлов

  • Имеется доступ к кластеру с учетной записью, имеющей роль cluster-admin в Kubernetes

  • Установлена утилита kubectl для работы с Kubernetes

    1. Установите на каждом узле кластера Kubernetes запрет на запуск новых нагрузок:

      for node in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl cordon ${node} ; done
      Пример вывода
      for node in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl cordon ${node} ; done
      
      nova-infra-1.mycompany.local
      node/nova-infra-1.mycompany.local cordoned
      nova-master-1.mycompany.local
      node/nova-master-1.mycompany.local cordoned
      nova-worker-1.mycompany.local
      node/nova-worker-1.mycompany.local cordoned
    2. Остановите существующие нагрузки и освободите от них рабочие узлы кластера Kubernetes:

      for node in $(kubectl get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s ; done
      Пример вывода
      for node in $(kubectl get nodes -l node-role.kubernetes.io/worker -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s ; done
      
      nova-worker-1.mycompany.local
      node/nova-worker-1.mycompany.local already cordoned
      Warning: ignoring DaemonSet-managed Pods: kube-system/cilium-bhndt, kube-system/kube-proxy-4c5t6, nova-csi-drivers/nova-oauth-csi-provider-s4zk5, nova-csi-drivers/nova-secrets-store-csi-driver-t65px, nova-ingress-public/nova-ingress-public-controller-lzjhk, nova-monitoring/nova-cadvisor-s2pc4, nova-monitoring/nova-prometheus-node-exporter-nqhmq, nova-secrets-webhook/nova-oauth-secrets-webhook-dzvlk
      node/nova-worker-1.mycompany.local drained
    3. Остановите существующие нагрузки и освободите от них инфраструктурные узлы кластера Kubernetes:

      for node in $(kubectl get nodes -l node-role.kubernetes.io/infra -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s ; done
      Пример вывода
      for node in $(kubectl get nodes -l node-role.kubernetes.io/infra -o jsonpath='{.items[*].metadata.name}'); do echo ${node} ; kubectl drain ${node} --delete-emptydir-data --ignore-daemonsets=true --timeout=15s ; done
      
      nova-infra-1.mycompany.local
      node/nova-infra-1.mycompany.local already cordoned
      Warning: ignoring DaemonSet-managed Pods: kube-system/cilium-vh7xq, kube-system/kube-proxy-qkdc8, nova-csi-drivers/nova-oauth-csi-provider-4rp6k, nova-csi-drivers/nova-secrets-store-csi-driver-2l7mj, nova-ingress-internal/nova-ingress-internal-controller-97mkb, nova-monitoring/nova-cadvisor-pdncn, nova-monitoring/nova-prometheus-node-exporter-4626w, nova-secrets-webhook/nova-oauth-secrets-webhook-sc8ms
      evicting pod nova-monitoring/prometheus-main-0
      evicting pod kube-system/nova-dns-6fb4489cd7-qn8mw
      evicting pod nova-gitops/image-automation-controller-5ffdb68d9d-t4flv
      evicting pod kube-system/coredns-6ccbfbdc9d-6fk7l
      ...
    4. Выключите узлы кластера Kubernetes:

      for node in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do kubectl debug node/${node} --image=hub.nova-platform.io/registry/nova/support-tools:v1.0.0 -n kube-system -- chroot /host shutdown -h 1; done
      Пример вывода
      for node in $(kubectl get nodes -o jsonpath='{.items[*].metadata.name}'); do kubectl debug node/${node} --image=hub.nova-platform.io/registry/nova/support-tools:v1.0.0 -n kube-system -- chroot /host shutdown -h 1; done
      
      Creating debugging pod node-debugger-nova-infra-1.mycompany.local-n6vjk with container debugger on node nova-infra-1.mycompany.local.
      Creating debugging pod node-debugger-nova-master-1.mycompany.local-78gfx with container debugger on node nova-master-1.mycompany.local.
      Creating debugging pod node-debugger-nova-worker-1.mycompany.local-xd6wc with container debugger on node nova-worker-1.mycompany.local.

      Если кластер Kubernetes установлен в закрытом сетевом окружении с использованием Nova Universe, необходимо использовать образ hub.<universe>/nova-universe/nova/support-tools:v1.0.0 из хранилища образов Nova Universe.

    5. Выключите при необходимости связанные с Nova Container Platform внешние ресурсы (внешние хранилища, службы каталогов, хранилища образов и тому подобное).

Для включения кластера Nova Container Platform следуйте процедуре перезапуска узлов платформы.