c

csdn阿坤

V1

2022/12/28阅读:20主题:萌粉

【云原生 | 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