c
csdn阿坤
V1
2022/12/28阅读:32主题:萌粉
【云原生 | 02】kubernetes1.23.1证书更新
证书更新期限至 100 年。
1 原文链接
-
支持证书热更新 -
支持修改证书更新期限 -
C站原文链接欢迎扫描 食用

2 环境
[root@master-4 ~]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@master-4 ~]# screenfetch
.. user1@master-4
.PLTJ. OS: CentOS
<><><><> Kernel: x86_64 Linux 3.10.0-1160.25.1.el7.x86_64
KKSSV' 4KKK LJ KKKL.'VSSKK Uptime: 93d 2h 7m
KKV' 4KKKKK LJ KKKKAL 'VKK Packages: 523
V' ' 'VKKKK LJ KKKKV' ' 'V Shell: bash 4.2.46
.4MA.' 'VKK LJ KKV' '.4Mb. Disk: 2.7T / 6.3T (45%)
. KKKKKA.' 'V LJ V' '.4KKKKK . CPU: Intel Xeon Gold 5218R @ 4x 2.095GHz
.4D KKKKKKKA.'' LJ ''.4KKKKKKK FA. GPU: Cirrus Logic GD 5446
<QDD ++++++++++++ ++++++++++++ GFD> RAM: 17293MiB / 31993MiB
'VD KKKKKKKK'.. LJ ..'KKKKKKKK FV
' VKKKKK'. .4 LJ K. .'KKKKKV '
'VK'. .4KK LJ KKA. .'KV'
A. . .4KKKK LJ KKKKA. . .4
KKA. 'KKKKK LJ KKKKK' .4KK
KKSSA. VKKK LJ KKKV .4SSKK
<><><><>
'MKKM'
''
[root@master-4 ~]#
3 步骤
注意
:所有master
节点都需要进行以下操作
3.1 备份配置文件
mkdir ~/confirm
cp -rf /etc/kubernetes/ ~/confirm/
mkdir ~/confirm/data_etcd
cp -rf /var/lib/etcd/* ~/confirm/data_etcd
cp /usr/bin/kubeadm /usr/bin/kubeadm.bak

3.2 二次编译环境安装
mkdir k8s-cet
cd k8s-cet/
tar xzf go1.19.4.linux-amd64.tar.gz -C /usr/local/
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/go
:wq
source /etc/profile

3.3 kubeadm二次编译并修改期限
unzip kubernetes-1.23.1.zip
cd kubernetes-1.23.1/
vim cmd/kubeadm/app/constants/constants.go
#搜索CertificateValidity
修改证书时间 :CertificateValidity = time.Hour * 24 * 365 * 100
vim staging/src/k8s.io/client-go/util/cert/cert.go
#搜索KeyUsageDigitalSignatur
修改 :NotAfter: now.Add(duration365d * 100).UTC(),
make -j4 WHAT=cmd/kubeadm
rm -rf /usr/bin/kubeadm
cp /srv/soft/k8s-cet/kubernetes-1.23.1/_output/bin/kubeadm /usr/bin/kubeadm
kubeadm certs renew all
kubeadm certs check-expiration


注意
:可以看到图中所圈区域时间年限已经变成99年了,但是这不意味着结束,还需要执行一个关键步骤“重启静态pod”
3.4 重启静态pod
静态pod是什么?
静态Pod是由kubelet进行管理的仅存在于特定Node的Pod上,他们不能通过API Server进行管理,无法与ReplicationController、Deployment或者DaemonSet进行关联,并且kubelet无法对他们进行健康检查。简单来说就是组成k8s本身的pod例如:etcd、kube-apiserver、kube-controller-manager、kube-scheduler
cd ~/confirm
tar -cvf static.tar.gz /etc/kubernetes/manifests/*
tar -tf static.tar.gz
rm -f /etc/kubernetes/manifests/*.yaml
# 等待20s 命令死掉(kubectl get ns 执行报错后开始执行下面解压命令)
# HA集群需要所有主节点一起进行,否则无法验证kubectl服务pod是否停止(会轮询道其他主节点)
tar -xvf static.tar.gz -C /etc/kubernetes/manifests/
说明
:这样做的目的好处是 在不影响现有的线上服务动态Pod前提起到重启静态pod的效果从而实现所谓的“热更新”
3.5 更新kubeconfig
cd /etc/kubernetes/
cp admin.conf /root/.kube/config
# 如果文件存在则会问是否覆盖,输入y回车即可
y

注意
:如果不更新kubeconfig则kubectl将无权限管理Pod
3.6 验证
kubectl get ns
检验kubectl命令
检验整个HA集群证书时间
检验报警是否恢复
4 结束语
本次k8s证书更新项目实战到此结束了,感谢认真读完,如果觉得还可以并且给予了你一定的帮助,那么给作者点赞、收藏、关注吧!
参考文献
:使用 kubeadm 进行证书管理

作者介绍
c
csdn阿坤
V1