k8s证书更新,kubeadm安装的K8S证书过期后无法使用后证书更新方法

k8s证书更新

1. 查看证书过期时间

#通过文件查看证书过期时间
for item in `find /etc/kubernetes/pki -maxdepth 2 -name "*.crt"`;do openssl x509 -in $item -text -noout| grep Not;echo ======================$item===============;done 
#通过命令查看证书过期时间
kubeadm certs check-expiration

k8s安装一年后证书显示过期。证书未自动续期。
以下操作需到所有master节点操作
一般情况下,k8s创建的集群节点上的/usr/bin/文件夹下会存在kubeadm二进制文件,如果发现master节点上没有kubeadm,可以从官方下载对应的版本并且安装。

2. 备份文件

## 将k8s和tecd相关文件做备份
cp -r /etc/kubernetes /etc/kubernetes.bak
cp -r /var/lib/etcd /var/lib/etcd.bak

3. 证书更新

kubeadm certs renew all          #新版本更新证书
kubeadm alpha certs renew all    #老版本更新证书

4. 更新kubeconfig

mv /etc/kubernetes/admin.conf  /root/
cp -r /root/.kube /root/.kube.bak
cp -f /etc/kubernetes/admin.conf /root/.kube/config
kubeadm init phase kubeconfig all  #更新kubeconfig

5. 验证

# 验证与组件重启,执行完上述更新证书操作后可以通过
echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate

#验证apiserver证书有效期是否更新,会发现证书有效期没有更新。此原因是k8s组件如果没有重启就不会使用新证书导致的,执行如下命令
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-apiserver)
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-controller-manager) 
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=kube-scheduler)
docker rm -f $(docker ps -q -f label=io.kubernetes.container.name=etcd)

#以重启k8s及etcd相关组件后,再次执行可以观察到证书有效期已经发生变化
echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate

# 注意:必须重启一下kubelet docker
systemctl restart kubelet docker

#docker重启后容器都是未运行中,请通过此命令运行所有的容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

#根据容器的状态,删除Exited状态的所有容器,不然K8S的组件(etcd,kube-apiserver,kube-controller-manager,kube-scheduler)重名运行不起来
docker rm $(sudo docker ps -qf status=exited)


#此时,还是无法使用kubectl get nodes,一定要重启机器
reboot

次博客是本人测试过v1.23.8版本后,没有问题后撰写的,请大家放心操作!

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES                  AGE   VERSION
k8s-master   Ready      control-plane,master   54d   v1.23.8
k8s-node1    Ready      <none>                 54d   v1.23.8
k8s-node2    Ready      <none>                 54d   v1.23.8
[root@k8s-master ~]# 

你可能感兴趣的:(kubernetes,linux,kubernetes,容器,云原生)