【Kubernetes集群证书续签】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

文章目录


前言

K8S集群证书是保障各组件间安全通信的核心要素,一旦过期将导致集群服务不可用。本文档基于三主两从的高可用集群架构,系统梳理证书更新的两种场景操作流程:集群正常运行时的证书到期前主动续签,以及证书已过期导致集群瘫痪时的紧急恢复方案,帮助运维人员从容应对证书生命周期管理

我的实验环境:

主机名 IP地址 作用说明
k8s-master1 192.168.13.136 K8s集群Master节点1,管理集群、执行运维命令
k8s-master2 192.168.13.137 K8s集群Master节点2,高可用冗余控制平面
k8s-master3 192.168.13.138 K8s集群Master节点3,高可用冗余控制平面
k8s-node1 192.168.13.139 K8s业务工作节点,运行业务Pod
k8s-node2 192.168.13.140 K8s业务工作节点,运行业务Pod

一、证书过期前续签

每个master都要重复下面这套操作

yaml 复制代码
## 1. 查看证书过期时间
root@k8s-master1:~# kubeadm certs check-expiration
yaml 复制代码
## 2. 备份/etc/kubernetes目录文件
root@k8s-master1:~# mkdir /tmp/etcd
root@k8s-master1:~# ls /tmp/etcd
root@k8s-master1:~# cp -r /etc/kubernetes/* /tmp/etcd
root@k8s-master1:~# ls /tmp/etcd
admin.conf  controller-manager.conf  kubelet.conf  manifests  pki  scheduler.conf

## 3. 更新所有证书
root@k8s-master1:~# kubeadm certs renew all

## 4. 查看证书过期时间
root@k8s-master1:~# kubeadm certs check-expiration
yaml 复制代码
## 5. 解码查看当前 kubectl 管理员配置端证书过期时间
root@k8s-master1:~# cat .kube/config
yaml 复制代码
## 或者直接执行这一条命令
root@k8s-master1:~# kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' | base64 -d | openssl x509 -noout -dates
yaml 复制代码
## 6. 把集群管理员认证配置拷贝到当前用户的kubectl 默认路径
root@k8s-master1:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
cp: overwrite '/root/.kube/config'? y
yaml 复制代码
root@k8s-master1:~# kubectl get all -A | grep kube-system
yaml 复制代码
## 7. 删除当前master节点控制平面静态pod,触发kubelet自动重建,让组件加载更新后的新证书
root@k8s-master1:~# kubectl delete pod -n kube-system kube-apiserver-k8s-master1 kube-controller-manager-k8s-master1 kube-scheduler-k8s-master1 etcd-k8s-master1

当我们把所有master节点上的证书更新完成后,我们可以在worker节点上执行systemctl restart kubelet,这会强制 kubelet 重新加载新的证书,使更新立即生效

到此,k8s集群证书续签成功!

二、证书过期后续签

每个master都要重复下面这套操作

yaml 复制代码
## 1. 查看集群信息,必然报错证书过期
root@k8s-master1:~# kubectl get node
或
## 查看证书过期时间
root@k8s-master1:~# kubeadm certs check-expiration
yaml 复制代码
## 2. 备份/etc/kubernetes目录文件
root@k8s-master1:~# mkdir /tmp/etcdbak
root@k8s-master1:~# cp -r /etc/kubernetes/* /tmp/etcdbak/

## 3. 更新证书
root@k8s-master1:~# kubeadm certs renew all

## 4. 把集群管理员认证配置拷贝到当前用户的kubectl 默认路径
root@k8s-master1:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
cp: overwrite '/root/.kube/config'? y

## 5. 更新kubelet证书
root@k8s-master1:~# cat /var/lib/kubelet/pki/kubelet-client-current.pem |openssl x509 -noout -subject
subject=O = system:nodes, CN = system:node:k8s-master1
root@k8s-master1:~# kubeadm kubeconfig user --org system:nodes --client-name system:node:k8s-master1 > /etc/kubernetes/kubelet.conf

## 6. 重启kubelet
root@k8s-master1:~# systemctl restart kubelet
root@k8s-master1:~# systemctl status kubelet

上述步骤master节点都需要操作

下面续签worker节点的kubelet证书,每个worker节点都需要操作

yaml 复制代码
## 1. 续签worker节点kubelet证书
root@k8s-node1:~# cat /var/lib/kubelet/pki/kubelet-client-current.pem |openssl x509 -noout -subject
subject=O = system:nodes, CN = system:node:k8s-node1
root@k8s-master1:~# kubeadm kubeconfig user --org system:nodes --client-name system:node:k8s-node1 > node1.conf
root@k8s-master1:~# scp node1.conf root@192.168.13.139:/etc/kubernetes/kubelet.conf

## 2. 重启kubelet
root@k8s-node1:~# systemctl restart kubelet
root@k8s-node1:~# systemctl status kubelet

这样,k8s集群就恢复正常了!


注:

文中若有疏漏,欢迎大家指正赐教。

本文为100%原创,转载请务必标注原创作者,尊重劳动成果。

求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

相关推荐
Lsetea4 小时前
Kubernetes 1.37 Pod证书怎么签发:Signer与mTLS信任链排查
云原生·kubernetes·ssl证书·tls·mtls
鹤落晴春1 天前
【K8s】从 ConfigMap 到 Argo CD:Kubernetes 配置管理链路
运维·云原生·容器·kubernetes
名字还没想好☜1 天前
Docker 镜像瘦身进阶:用 distroless/scratch 把 Go 服务打到 10MB,以及没 shell 怎么调试
运维·docker·容器·golang·kubernetes
陈聪.1 天前
Kubernetes 集群网络插件迁移:从 Flannel 到 Calico 实战总结
云原生·kubernetes
陈聪.1 天前
Kubernetes Service 与 Ingress 知识总结
云原生·容器·kubernetes
A-刘晨阳3 天前
K8s集群中的数据库新范式:KES-Operator解锁部署、扩缩容、备份全链路自动化
运维·数据库·云原生·kubernetes·自动化
江畔柳前堤3 天前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
2601_962299244 天前
云原生时代的技术进阶:从零到精通掌握Kubernetes实战
云原生·kubernetes·学习路径·技术进阶·实战指南
名字还没想好☜4 天前
Docker 数据卷实战:volume、bind mount、tmpfs 到底怎么选,数据持久化与权限坑
运维·docker·容器·kubernetes
探索云原生4 天前
Kueue + HAMi vGPU 实战:显存与算力配额管理
docker·ai·云原生·kubernetes·gpu