Какие проблемы могут возникнуть при обновлении Kubernetes?

«Какие проблемы могут возникнуть при обновлении Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При обновлении Kubernetes (особенно minor/major версий) сталкиваюсь со следующими проблемами:

1. Устаревание и удаление API (API Deprecation): Манифесты, использующие deprecated API (например, extensions/v1beta1 для Deployments), перестанут работать. Перед обновлением необходимо провести аудит и миграцию.

# Используем kubectl convert для проверки и конвертации старых манифестов
kubectl convert -f old-deployment.yaml --output-version apps/v1

2. Изменения в поведении компонентов: Например, в версии 1.21 изменилась политика безопасности для PodSecurityPolicy, а в 1.25 она была полностью удалена, что требовало перехода на Pod Security Admission.

3. Несовместимость сетевых плагинов (CNI) или CSI-драйверов: Плагин Calico или Cilium может требовать определенной версии kube-proxy или иметь свои ограничения.

4. Даунтайм рабочих нагрузок: При обновлении control-plane нод (особенно в self-managed кластерах) возможны кратковременные перебои в работе API-сервера и планировщика.

Моя стратегия безопасного обновления:

  1. План: Изучаю kubeadm upgrade plan (для managed-сервисов — документацию провайдера) и changelog на предмет breaking changes.
  2. Бэкап: Всегда делаю снапшот etcd и экспорт критических ресурсов через kubectl get all -A -o yaml > backup.yaml.
  3. Поэтапное обновление: Сначала обновляю одну worker-ноду, дренирую ее (kubectl drain) и проверяю, что поды успешно переехали и работают.
  4. Контроль: После обновления запускаю набор health-чеков и smoke-тестов для ключевых сервисов.