1、证书位置
通过kubeadm安装的集群,默认证书在master节点的/etc/kubernetes/pki与/etc/kubernetes目录下
2、查看证书过期时间
1.15之后的版本可以通过kubeadm alpha certs check-expiration 查看
for item in `find /etc/kubernetes/pki -maxdepth 2 -name "*.crt"`;do openssl x509 -in $item -text -noout| grep Not;echo $item; echo ======================$item===================;done
3、重新续期证书
# etcd使用的是external,不可以通过kubeadm续期。etcd证书有效期是10年,到期需要手动续期
# 先统一备份一下
cp -r /etc/kubernetes /etc/kubernetes_bak$(date +%F-%H)
# 更新证书
kubeadm alpha certs renew apiserver --config /root/kube/kubeadm.yaml
kubeadm alpha certs renew apiserver-kubelet-client --config /root/kube/kubeadm.yaml
kubeadm alpha certs renew front-proxy-client --config /root/kube/kubeadm.yaml
rm /etc/kubernetes/admin.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf
kubeadm init phase kubeconfig all --config /root/kube/kubeadm.yaml
# 重启相关服务使证书生效
docker ps |grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler' | awk -F ' ' '{print $1}' |xargs docker restart
# 查询apiserver,controller-manager,scheduler pod的日志,看是否有异常
将pod内的证书导出一份,确定使用的是最新证书
kubectl exec -it -n kube-system kube-apiserver-herlly.cn -- cat /etc/kubernetes/pki/apiserver-kubelet-client.crt > /tmp/apiserver-kubelet-client.crt
openssl x509 -in /tmp/apiserver-kubelet-client.crt -text -noout
kubelet 证书会自动轮转更新,不需要手动更新