K8S证书又过期了?掌握这招,让你轻松享受十年!

科技   2024-10-31 12:00   广东  

 码字不易,戳下方名片,关注+星标

维护过K8S的兄弟都知道,证书过期问题是绕不过去的坎,某个时间突然就发现集群操作不了了,所有业务开始出现问题,于是就开始手忙脚乱的排查,最后排查发现:wc,证书又过期了。
Kubernetes的证书有一定期限,一般默认是一年。K8S集群证书过期后,会导致API Server无法验证其身份,进而无法接受来自kubectl和其他组件的请求。最直观的现象就是:无法创建Pod,通过kubectl get nodes也无法获取信息,dashboard也无法访问。
所以我就写了一篇一次性将证书续期10年的文章,非常简单,让兄弟们尽情地享受下午茶。再也不用担心集群证书过期了。

1 检查当前集群证书状态

(1)查看apiserver证书
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  | grep Not
(2)查看所有证书
kubeadm  certs check-expiration

# 注意:较早版本使用以下命令查看
kubeadm alpha certs check-expiration

2 更新前备份文件

操作前必须做备份,用于升级失败回滚。
cp -rf /etc/kubernetes/  /etc/kubernetes.bak-$(date +%Y%m%d)
cp -rf /var/lib/etcd/  /var/lib/etcd.bak-$(date +%Y%m%d)

3 证书续期一年

一般情况下,一年过期后执行以下命令可以快速地又续期一年。
kubeadm certs renew all
在续签证书后,重启Kubernetes相关组件以应用新的证书
systemctl restart kubelet
再次查看,已经更新了一年
kubeadm  certs check-expiration

4 证书续期10年

如果要一下子续十年就要按照下面来
(1)更新证书
# 下载续期脚本
# 注意:该脚本由作者yuyicai所写
git clone https://github.com/yuyicai/update-kube-cert.git

# 进入目录
cd update-kube-cert

# 添加权限
chmod 755 update-kubeadm-cert.sh

# 执行续期操作
./update-kubeadm-cert.sh all --cri docker
【温馨提示】
  • 该脚本仅需要在 master 节点执行,无需在 worker node 节点执行
  • 如果runtime为containerd,请将docker改为containerd,默认是docker。
(2)查看证书状态
kubeadm certs check-expiration

可见证书已经延期了十年,再也不用担心证书过期了。
(3)查看集群状态
[root@k8s-master update-kube-cert]kubectl get node
NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   7d21h   v1.28.2
k8s-node1    Ready    worker          7d21h   v1.28.2
k8s-node2    Ready    worker          7d21h   v1.28.2

注意事项
  • 在进行任何更改之前,请确保你了解集群的当前配置。
  • 续期修改前做好相应文件备份。
  • 在生产环境中,建议在维护窗口期进行操作,以避免对业务造成影响。

5 证书失败回滚

若更新证书失败需要回滚,手动将备份 /etc/kubernetes.old-$(date +%Y%m%d)目录覆盖 /etc/kubernetes 目录

建议:在测试环境测试成功后再在企业生产环境进行操作

往期精彩文章

Linux上有趣的8个命令,你玩过几个?

万字长文:K8S命令详解汇总【自用珍藏版】

手把手教你搭建企业级Harbor镜像仓库

【Docker系列知识】常用命令大全汇总

局域网内构建统一可访问的YUM源(基础运维必备技能)

Linux文件处理三剑客详解(运维高手必备)

Nginx配置文件详解及常用功能配置(实用率90%)

运维李哥不背锅
专注于各种运维技术、,分享Linux基础知识,服务器,数据库,云原生和网络安全等相关技术,各种进阶知识等着你,助你成为技术达人!
 最新文章