Инструкция актуальна только для Deckhouse Kubernetes Platform версии 1.75 и ниже.
Миграция выполняется с полным простоем кластера: будут перезапущены все поды и узлы. Оценочное время выполнения — около 1 часа.
Для миграции выполните следующие шаги:
-
Включите модуль
cni-cilium:apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig metadata: name: cni-cilium spec: version: 1 settings: tunnelMode: VXLAN enabled: true -
Дождитесь запуска компонентов Cilium:
d8 k -n d8-cni-cilium get podsПример вывода:
NAME READY STATUS RESTARTS AGE agent-5zzfv 2/2 Running 5 (23m ago) 26m agent-gqb2b 2/2 Running 5 (23m ago) 26m agent-wtv4p 2/2 Running 5 (23m ago) 26m operator-856d69fd49-mlglv 2/2 Running 0 26m safe-agent-updater-26qpk 3/3 Running 0 26m safe-agent-updater-qlbrh 3/3 Running 0 26m safe-agent-updater-wjjr5 3/3 Running 0 26mЕсли поды агента Cilium не переходят в состояние
Ready:-
Сохраните манифест
d8-kube-proxy:d8 k -n kube-system get ds d8-kube-proxy -oyaml > d8-kube-proxy.yaml -
Выполните действия для восстановления запуска:
d8 k delete validatingadmissionpolicies.admissionregistration.k8s.io label-objects.deckhouse.io d8 k -n kube-system delete ds d8-kube-proxy d8 k -n d8-cni-cilium delete po -l app=agent -
Если запуск Cilium продолжается более 5 минут, перезапустите
kube-proxy:d8 k -n kube-system delete pod -l k8s-app=kube-proxy
-
-
Сохраните манифест DaemonSet:
d8 k -n d8-cni-simple-bridge get ds simple-bridge -o yaml > simple-bridge.yaml # или d8 k -n d8-cni-flannel get ds flannel -o yaml > flannel.yaml -
Отключите модуль
cni-simple-bridgeилиcni-flannel. Выполняйте шаг после того, как поды Cilium перешли в состояниеReady:d8 k -n d8-system exec -it svc/deckhouse-leader -- deckhouse-controller module disable cni-simple-bridge # или d8 k -n d8-system exec -it svc/deckhouse-leader -- deckhouse-controller module disable cni-flannel -
Удалите
validating webhook(если присутствует):d8 k delete validatingwebhookconfigurations.admissionregistration.k8s.io d8-deckhouse-validating-webhook-handler-hooks -
Удалите неймспейс старого CNI (если не удалился автоматически):
d8 k delete ns d8-cni-simple-bridge # или d8 k delete ns d8-cni-flannel -
(Опционально) Очистите артефакты старого CNI. При необходимости удалите интерфейс и сбросьте правила iptables:
ip link delete cni0 iptables -t filter -F iptables -t filter -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -t raw -F iptables -t raw -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT -
Перезапустите все поды:
d8 k delete pods -A --all --wait=false -
Настройте внутренние балансировщики LoadBalancer (при использовании). Для всех TargetGroup, входящих во внутренний балансировщик, установите параметр:
Preserve client IP addresses = Off -
Перезагрузите узлы кластера по одному, включая master-узлы.