Нужна ли фаза kubeconfig после сертификата фазы в kubeadm? - PullRequest
2 голосов
/ 29 мая 2019

Я недавно обновил до kubeadm, который, как я ожидаю, будет вращать все сертификаты, и для хорошей меры я также выполнил kubeadm init phase certs all, но я не уверен, какие шаги необходимы, чтобы проверить, что сертификаты все правильно вместо и срок его действия не истекает.

Я видел SO ссылка на ссылку kubeadm init phase kubeconfig all требуется дополнительно, но не может найти в документации kubernetes kubeadm мне, что это должно быть использовано в сочетании с фазовыми сертификатами.

Что мне нужно сделать, чтобы убедиться, что кластер не встретит сертификаты с истекшим сроком действия?

Я попытался проверить, подключившись к безопасному локальному порту: echo -n | openssl s_client -connect localhost:10250 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep Not, что дает мнеистечения в следующем месяце.

В то время как openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text и openssl x509 -in /etc/kubernetes/pki/apiserver-kubelet-client.crt -noout -text приносят даты за год вперед.

Эти противоречивые даты, безусловно, меня беспокоят, что я окажусь, как и многие другие, с сертификатами с истекшим сроком действия,Как мне встать перед этим?

Спасибо за любые рекомендации.

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

По сути kubeadm init phase certs all регенерирует все ваши сертификаты, включая ваш ca.crt (центр сертификации), а компоненты Kubernetes используют аутентификацию на основе сертификатов для подключения к kube-apiserver (kubelet, kube-scheduler, kube-controller-manager) так что вам также придется восстановить практически все эти конфиги, запустив kubeadm init phase kubeconfig all

Имейте в виду, что вам придется регенерировать kubelet.conf на всех ваших узлах, так как он также должен быть обновлен для подключения к kube-apiserver с новым ca.crt. Также убедитесь, что вы добавили все свои имена хостов / IP-адреса , которые ваш kube-apiserver будет обслуживать, к команде kubeadm init phase certs all (--apiserver-cert-extra-sans)

Скорее всего, вы не видите обновленные сертификаты при подключении через openssl, потому что вы не перезапустили компоненты Kubernetes и, в частности, kube-apiserver. Таким образом, вам придется запустить ваш kube-apiserver, kube-scheduler, kube-controller-manager и т. Д. (Или kube-apiserver, kube-планировщики и т. Д., Если вы используете многоуровневую панель управления). Вам также придется перезапустить ваши кубелец на всех ваших узлах.

0 голосов
/ 05 июля 2019

Месяц спустя я узнал немного больше и хотел обновить этот вопрос для тех, кто следует за мной.

Я подал выпуск в Куберне, запрашивая дополнительную информацию о том, какпроцесс обновления kubeadm автоматически обновляет сертификаты.Документация по Kubernetes гласит:

Примечание: kubelet.conf не включен в список выше, потому что kubeadm настраивает kubelet для автоматического обновления сертификата.

После обновления я сделалне вижу автоматического обновления сертификата для kubelet.Затем мне сообщили, что:

решение о том, когда вращать сертификат, является недетерминированным, и это может произойти на 70 - 90% от общего срока службы сертификата, чтобы предотвратить перекрытие при поворотах сертификата узла.

Они также предоставили следующий процесс, который разрешил мою последнюю выдачу сертификатов:

sudo mv /var/lib/kubelet/pki /var/lib/kubelet/pki-backup
sudo systemctl restart kubelet
# the pki folder should be re-created.
...