如果集群内所有components的证书都还没有过期时,更新证书很容就一个命令
kubeadm alpha certs renew all
然后他会自动在/etc/kubernetes/pki
目录下把所有证书都更新一遍。但是如果过期的话,那我就不知道了,不过可以通过手动签发证书来生成
以下已apiserver为例,其余的组件etcd、controller manager、scheduler类似
查看证书的Common Name、Organization、Serial Number(没有的话忽略),并记下来
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text -noout
csr即为certificate signing request,用于提出签发申请,输入必要的证书签发信息,等待下一步的ca同意签发
在生成csr的时候输入跟之前一样的Common Name、Organization、Serial Number,原来就是空的话就不用输,其余字段随意,空着就好
openssl req -new -key apiserver.key -out apiserver.csr
{Serial Number}填回跟之前证书一样的,-days 3650
表示10年有效
openssl x509 -req -in apiserver.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -set_serial {Serial Number} -days 3650 -out apiserver.crt
control plane上可以直接用下面命令一键重启,也可以用kubectl(如果kubectl还能用的话)
docker ps | grep apiserver | grep -v pause | awk '{print $1}' | xargs docker restart
对于剩下的components也一样处理