Обновление кластеров на VMware vSphere
В этом документе описано, как выполнить обновление Kubernetes-кластеров на VMware vSphere после завершения обновления дистрибутива на стороне платформы. Описанный рабочий процесс сосредоточен на обновлении control plane и worker nodes через ресурсы Cluster API.
Содержание
Последовательность обновленияПредварительные требованияШагиОткат неудачного обновленияПроверкаСледующие шагиПоследовательность обновления
Обновляйте кластеры VMware vSphere в следующем порядке:
- Завершите обновление версии дистрибутива, описанное в Обновление кластеров.
- Убедитесь, что control plane работает нормально и текущий кластер стабилен.
- Обновите версию Kubernetes control plane.
- Обновите worker nodes до целевой версии Kubernetes.
Предварительные требования
Перед началом убедитесь, что выполнены следующие условия:
- Обновление версии дистрибутива завершено.
- Control plane работает нормально и доступен.
- Все узлы находятся в состоянии
Ready. - Целевой VM template совместим с целевой версией Kubernetes.
- Machine config pools имеют достаточную емкость для rolling updates.
Templates являются неизменяемыми
Ресурсы VSphereMachineTemplate не могут быть изменены на месте. Для каждого обновления, которое меняет параметры VM или имя VM template, требуется создать новый VSphereMachineTemplate с новым именем и обновить ссылку в KubeadmControlPlane или MachineDeployment.
Шаги
Создайте целевые machine templates
Перед началом rolling upgrade создайте новые ресурсы VSphereMachineTemplate для control plane и worker nodes.
-
Экспортируйте существующий template control plane
-
Измените template control plane
Отредактируйте
new-cp-template.yaml:- Установите
metadata.nameв новое уникальное имя (например,<cluster_name>-control-plane-v2) - Обновите
spec.template.spec.templateдо имени целевого VM template - При необходимости обновите настройки CPU, memory или disk
- Удалите поля, сгенерированные сервером:
metadata.resourceVersion,metadata.uid,metadata.generation,metadata.creationTimestamp,metadata.managedFields,metadata.annotations["kubectl.kubernetes.io/last-applied-configuration"]иstatus
- Установите
-
Экспортируйте и измените worker template
Отредактируйте
new-worker-template.yaml:- Установите
metadata.nameв новое уникальное имя (например,<cluster_name>-worker-v2) - Обновите
spec.template.spec.templateдо имени целевого VM template - При необходимости обновите настройки CPU, memory или disk
- Удалите те же поля, сгенерированные сервером, перечисленные выше
- Установите
-
Примените оба новых template
Обновите control plane
Обновите ресурс KubeadmControlPlane, чтобы он ссылался на новый template control plane и целевую версию Kubernetes.
Обычно требуется изменить следующие параметры:
spec.version— целевая версия Kubernetesspec.machineTemplate.infrastructureRef.name— новое имяVSphereMachineTemplate- Связанные теги образов, например
dns.imageTagиetcd.local.imageTag, если они требуются целевым выпуском
Примените изменения:
Если целевому выпуску Kubernetes также требуются обновленные теги образов (например, dns.imageTag или etcd.local.imageTag), включите их в payload patch или примените полный manifest с помощью kubectl apply -f.
Отслеживайте rollout control plane:
Обновите worker nodes
После завершения обновления control plane обновите MachineDeployment, чтобы он ссылался на новый worker template и целевую версию Kubernetes.
Обычно требуется изменить следующие параметры:
spec.template.spec.version— целевая версия Kubernetesspec.template.spec.infrastructureRef.name— новое имяVSphereMachineTemplatespec.template.spec.bootstrap.configRef.name— новое имяKubeadmConfigTemplate, если требуется изменить настройки bootstrap (см. Обновление bootstrap templates)
Примените изменения:
Отслеживайте rollout worker nodes:
Откат неудачного обновления
Если rolling update завершается с ошибкой (например, новые VM не загружаются или узлы не переходят в состояние Ready), верните ссылки на template к предыдущим именам template. Старые templates по-прежнему существуют, и Cluster API выполнит откат к предыдущей конфигурации.
- Для control plane: выполните patch
KubeadmControlPlane, чтобы восстановить прежние значенияspec.machineTemplate.infrastructureRef.nameиspec.version. - Для worker nodes: выполните patch
MachineDeployment, чтобы восстановить прежние значенияspec.template.spec.infrastructureRef.nameиspec.template.spec.version.
Проверка
После обновления подтвердите следующие результаты:
KubeadmControlPlaneдостигает целевой версии и требуемого количества реплик.MachineDeploymentдостигает целевой версии и требуемого количества реплик.- Control plane и worker nodes возвращаются в состояние
Ready. - DaemonSet vSphere CPI остается доступным в workload cluster.
Следующие шаги
После завершения обновления Kubernetes продолжите стандартные операции с узлами в Управление узлами на VMware vSphere.