Продлить кубернетес пки после истекшего срока - PullRequest
1 голос
/ 27 мая 2019

Срок действия моей PKI kubernetes истек (сервер API, если быть точным), и я не могу найти способ его обновить. Я получаю ошибку

May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922595    8751 server.go:417] Version: v1.14.2
May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922784    8751 plugins.go:103] No cloud provider specified.
May 27 08:43:51 node1 kubelet[8751]: I0527 08:43:51.922800    8751 server.go:754] Client rotation is on, will bootstrap in background
May 27 08:43:51 node1 kubelet[8751]: E0527 08:43:51.925859    8751 bootstrap.go:264] Part of the existing bootstrap client certificate is expired: 2019-05-24 13:24:42 +0000 UTC
May 27 08:43:51 node1 kubelet[8751]: F0527 08:43:51.925894    8751 server.go:265] failed to run Kubelet: unable to load bootstrap
kubeconfig: stat /etc/kubernetes/bootstrap-kubelet.conf: no such file or directory

Документация по https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/ описывает, как обновить, но это работает только в том случае, если срок службы сервера API не истек. Я пытался сделать

kubeadm alpha cert renew all

и выполнить перезагрузку, но это привело к отказу всего кластера, поэтому я сделал откат к снимку (мой кластер работает на VMware).

Кластер работает, и все контейнеры, кажется, работают, но я не могу получить к нему доступ через kubectl, поэтому не могу развернуть или запросить. Любая документация или руководство о том, как обновить, очень помогло бы

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Таким образом, решение было (сначала резервное копирование)

$ cd /etc/kubernetes/pki/
$ mv {apiserver.crt,apiserver-etcd-client.key,apiserver-kubelet-client.crt,front-proxy-ca.crt,front-proxy-client.crt,front-proxy-client.key,front-proxy-ca.key,apiserver-kubelet-client.key,apiserver.key,apiserver-etcd-client.crt} ~/
$ kubeadm init phase certs all --apiserver-advertise-address <IP>
$ cd /etc/kubernetes/
$ mv {admin.conf,controller-manager.conf,mv kubelet.conf,scheduler.conf} ~/
$ kubeadm init phase kubeconfig all
$ reboot

тогда

$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

, который сделал эту работу за меня, и спасибо за ваши подсказки:)

1 голос
/ 27 мая 2019

Попробуйте выполнить обновление сертификата с помощью команды kubeadm init phase certs.

Вы можете проверить срок действия сертификатов с помощью следующей команды:

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text

openssl x509 -in /etc/kubernetes/pki/apiserver-kubelet-client.crt -noout -text

Сначала убедитесь, что у вас есть самая последняя резервная копия инвентаризации сертификатов k8s /etc/kubernetes/pki/*.

Удалить файлы сертификатов apiserver.* и apiserver-kubelet-client.* в каталоге /etc/kubernetes/pki/.

Создать новые сертификаты с помощью команды kubeadm init phase certs:

sudo kubeadm init phase certs apiserver

sudo kubeadm init phase certs apiserver-kubelet-client

Перезапустите kubelet и docker демонов:

sudo systemctl restart docker; sudo systemctl restart kubelet

Более подробную информацию вы можете найти в официальной документации K8s .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...