Skip to content

Latest commit

 

History

History
161 lines (109 loc) · 5.21 KB

update.md

File metadata and controls

161 lines (109 loc) · 5.21 KB

Upgrade cluster

Перед обновлением версии кластера:

  • Обновление возможно только на следующую минорную версию или на патч версию. Например, что бы обновиться с 1.23.x до 1.25.x необходимо сначала обновиться до версии 1.24.x и только потом до 1.25.x. Обновляться с одной патч версии до другой можно в произвольной последовательности. Например, с 1.25.0 сразу до 1.25.4.
  • Обязательно прочтите Changelog версии на которую вы хотите обновиться. Велика вероятность, что в новой версии удалена поддержка каких либо API или у них изменена версия.
  • Поставьте где нибудь тестовый кластер с новой версией kubernetes. И там проверьте все ваши манифесты, helm charts, процедуры CI|CD. Не факт, что всё это будет работать в новой версии кластера.

Обновление версии кластера, документация.

План

Последовательность простая.

  1. Обновляем первую control ноду. Все остальные ноды будут получать необходимые параметры из первой ноды.
  2. Обновляем остальные контрол ноды.
  3. Обновляем worker ноды.

Не обновляйте ноды кластера одновременно.

Обновление первой control ноды

  1. Обновите приложения kubeadm, kubelet и kubectl до необходимой версии.

Например, в RedHat совместимом дистрибутиве.

dnf update kubelet-1.25.4-0.x86_64 -y
dnf update kubectl-1.25.4-0.x86_64 -y
dnf update kubeadm-1.25.4-0.x86_64 -y
  1. Запустите процедуру очистки (миграции приложений) этой ноды.
kubectl drain ИМЯ_НОДЫ --ignore-daemonsets
  1. Обновите ноду.
kubeadm upgrade apply v1.25.4 -y

Обновление ноды достаточно длительная процедура.

  1. Обязательно перезапустите kubelet.
systemctl restart kubelet
systemctl status kubelet
  1. В заключении разрешите планировщику размещать на ноде новые поды.
kubectl uncordon ИМЯ_НОДЫ
kubectl get nodes

Обновление остальных control нод

  1. Обновите приложения kubeadm, kubelet и kubectl до необходимой версии.

Например, в RedHat совместимом дистрибутиве.

dnf update kubelet-1.25.4-0.x86_64 -y
dnf update kubectl-1.25.4-0.x86_64 -y
dnf update kubeadm-1.25.4-0.x86_64 -y
  1. Запустите процедуру очистки (миграции приложений) этой ноды.
kubectl drain ИМЯ_НОДЫ --ignore-daemonsets
  1. Обновите ноду.
kubeadm upgrade node

Обновление ноды достаточно длительная процедура.

  1. Обязательно перезапустите kubelet.
systemctl restart kubelet
systemctl status kubelet
  1. Разрешите планировщику размещать на ноде новые поды.
kubectl uncordon ИМЯ_НОДЫ
kubectl get nodes

Обновление worker нод

  1. Обновите приложения kubeadm, kubelet и kubectl до необходимой версии.

Например, в RedHat совместимом дистрибутиве.

dnf update kubelet-1.25.4-0.x86_64 -y
dnf update kubectl-1.25.4-0.x86_64 -y
dnf update kubeadm-1.25.4-0.x86_64 -y
  1. Запустите процедуру очистки (миграции приложений) этой ноды.

На control ноде

kubectl drain ИМЯ_НОДЫ --ignore-daemonsets
  1. Обновите ноду.
kubeadm upgrade node

Обновление ноды достаточно длительная процедура.

  1. Обязательно перезапустите kubelet.
systemctl restart kubelet
systemctl status kubelet
  1. Разрешите планировщику размещать на ноде новые поды.

На control ноде:

kubectl uncordon ИМЯ_НОДЫ
kubectl get nodes

Немного автоматизации.

Я не проверял эти плейбуки на боевых серверах! Используйте их на свой страх и риск.

Собственно плейбук.