k8s采坑记 - 证书过期之kubeadm重新生成证书
重新生成证书
检查过期
新版本(1.15+):kubeadm certs check-expiration
或
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
其他同理
证书备份
cp -rp /etc/kubernetes /etc/kubernetes.bak
移除过期证书
rm -f /etc/kubernetes/pki/apiserver*
rm -f /etc/kubernetes/pki/front-proxy-client.*
rm -rf /etc/kubernetes/pki/etcd/healthcheck-client.*
rm -rf /etc/kubernetes/pki/etcd/server.*
rm -rf /etc/kubernetes/pki/etcd/peer.*
备注:可以使用命令
openssl x509 -in [证书全路径] -noout -text查看证书详情。
重新生成证书
老版本:kubeadm alpha certs renew all
或
新版本(1.15+):kubeadm certs renew all 使用该命令不用提前删除过期证书
重新生成配置文件
kubeadm 在生成 kubeconfig 文件时,需要关联 Kubernetes 集群的核心镜像(如 apiserver、controller-manager 等),而这些镜像的版本需与集群版本严格匹配。当未明确指定版本时,kubeadm 会尝试从远程仓库(默认是 k8s.gcr.io)获取最新版本,但如果本地 kubeadm 版本过旧,可能无法兼容远程最新版本,因此会自动回退到历史稳定版本。通过 --kubernetes-version 明确指定版本,可强制 kubeadm 使用目标版本,避免自动回退:remote version is much newer: v1.33.4; falling back to: stable-1.22。同时注意:确保 kubeadm、kubelet、kubectl 三者版本一致(主版本必须相同,如均为 v1.28.x),否则可能出现组件兼容性问题。
# 查看集群版本
kubectl get no
v1.22.1
# 重新生成配置
mv /etc/kubernetes/*.conf /tmp/
老版本:kubeadm alpha phase kubeconfig all
或
新版本(1.15+):kubeadm init phase kubeconfig all --kubernetes-version v1.22.1
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Using existing kubeconfig file: "/etc/kubernetes/admin.conf"
[kubeconfig] Using existing kubeconfig file: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Using existing kubeconfig file: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Using existing kubeconfig file: "/etc/kubernetes/scheduler.conf"
# 更新kubectl配置
cp -f /etc/kubernetes/admin.conf ~/.kube/config
重启kubelet
systemctl restart kubelet
systemctl status kubelet
systemctl stop kubelet
证书过期时间确认
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
其他同理
集群确认
kubectl get no
# 如果发现集群,能读不能写,则请重启一下组件:
docker ps | grep apiserver
docker ps | grep scheduler
docker ps | grep controller-manager
docker restart 容器标识
做一个有底蕴的软件工作者

浙公网安备 33010602011771号