Выключение платформы
В данном разделе описана процедура корректного выключения платформы Nova Container Platform.
1. Подготовительные действия для выключения Nova Container Platform
-
Выполните полное резервное копирование мастер-узлов перед выключением кластера Kubernetes
Убедитесь, что резервная копия надежно сохранена на внешнем хранилище. В случае возникновения проблем с Nova Container Platform резервная копия позволит восстановить кластер в прежнее состояние.
-
Если планируется отключение кластера Kubernetes на продолжительное время, проверьте срок действия TLS-сертификатов
-
Для проверки срока действия сертификатов используйте раздел Проверка срока действия сертификатов платформы
-
При необходимости обновления сертификатов воспользуйтесь разделом Обновление сертификатов платформы
-
-
(Опционально) Выполните резервное копирование данных пользовательских приложений предусмотренным методом
2. Выключение узлов кластера
|
Узлы кластера Kubernetes можно выключить на срок не более 1 года от даты первоначальной установки платформы или перевыпуска сертификатов в кластере. При соблюдении указанных сроков кластер Kubernetes запустится корректно и продолжит функционировать. |
2.1. Предварительные условия
-
Имеется доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes -
Установлена утилита
kubectlдля работы с Kubernetes-
Установите на каждом узле кластера 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 -
Остановите существующие нагрузки и освободите от них рабочие узлы кластера 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 -
Остановите существующие нагрузки и освободите от них инфраструктурные узлы кластера 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 ... -
Выключите узлы кластера 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. -
Выключите при необходимости связанные с Nova Container Platform внешние ресурсы (внешние хранилища, службы каталогов, хранилища образов и тому подобное).
-
Для включения кластера Nova Container Platform следуйте процедуре перезапуска узлов платформы.