Ответ
Да, сталкивался. Это классическая проблема при долгой эксплуатации self-managed кластеров, развернутых с помощью kubeadm. Сертификаты компонентов управления (API Server, etcd, scheduler) по умолчанию имеют срок действия 1 год.
Симптомы: Кластер перестает отвечать. Команды kubectl выдают ошибки типа Unable to connect to the server: x509: certificate has expired or is not yet valid.
Как я решал эту проблему:
- Проверка срока действия: Подключался к control-plane ноде и проверял сертификаты.
# Проверяем все сертификаты в /etc/kubernetes/pki kubeadm certs check-expiration - Обновление сертификатов: Использовал
kubeadmдля обновления.# Обновляем все сертификаты kubeadm certs renew all - Обновление kubeconfig: После обновления сертификатов нужно обновить конфиг пользователя.
sudo cp /etc/kubernetes/admin.conf ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config - Перезапуск статических подов управления: Перезапускал Pod'ы API Server, Controller Manager, Scheduler, которые работают как статические манифесты.
# Находим и перезапускаем статические поды docker ps | grep kube-apiserver | grep -v pause | awk '{print $1}' | xargs docker restart # Аналогично для других компонентов
Проактивные меры, которые я внедрил после этого случая:
- Настройка автоматического обновления: Добавил в
kubeadm-конфиг параметрcertificateRenewal: trueи настроил регулярный запускkubeadm certs renewчерез CronJob или systemd timer. - Мониторинг: Настроил алерты в Prometheus на истечение срока действия сертификатов, используя метрику
kubelet_certificate_manager_client_ttl_secondsили внешние скрипты проверки. - Рассмотрение managed-решений: Для production-нагрузок стал чаще рекомендовать managed-Kubernetes (EKS, GKE, AKS), где проблема обновления сертификатов лежит на провайдере.