《Kubernets证书篇:kubernetes1.20.6证书修改时间限制》

文章目录

  • 一、背景
  • 二、查看证书有效期
  • 三、go环境部署
  • 四、下载K8S源码
  • 五、修改Kubeadm源码包更新证书策略
  • 六、查看证书有效期
  • 七、其它Master节点
  • 总结:整理不易,如果对你有帮助,可否点赞关注一下?


一、背景

Kubernetes 默认的证书有效期只有1年,因此需要每年手动更新一次节点上面的证书,特别麻烦而且更新过程中可能会出现问题,因此我们要对 Kubernetes 的 SSL 证书有效期进行修改,这里将证书的时间限制修改为100年。


二、查看证书有效期

kubeadm certs check-expiration

如下图所示:
《Kubernets证书篇:kubernetes1.20.6证书修改时间限制》_第1张图片
由上图可见,除了ca根证书,其他证书有效期都是1年。


三、go环境部署

# 1、安装go语言
wget https://studygolang.com/dl/golang/go1.17.1.linux-amd64.tar.gz
tar axf go1.17.1.linux-amd64.tar.gz -C /usr/local/

# 2、配置环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile

# 3、环境变量生效命令
source /etc/profile

四、下载K8S源码

mkdir -p /data/k8s-src && cd /data/k8s-src
wget https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.20.6.zip
unzip v1.20.6.zip

如下图所示:
在这里插入图片描述


五、修改Kubeadm源码包更新证书策略

# 1、添加内容
cd kubernetes-1.20.6
vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go # kubeadm1.14版本之后
const effectyear = time.Hour * 24 * 365 * 100
NotAfter:     time.Now().Add(effectyear).UTC(),
# 注意:vim staging/src/k8s.io/client-go/util/cert/cert.go  #kubeadm1.14版本之前

# 2、注释内容(如下图所示)
// NotAfter:     time.Now().Add(kubeadmconstants.CertificateValidity).UTC(),

# 3、编译kubeadm
# 注意路径
cd kubernetes-1.20.6
yum install rsync -y
make WHAT=cmd/kubeadm GOFLAGS=-v

# 4、原证书备份
cd kubernetes-1.20.6
cp -arp /etc/kubernetes /etc/kubernetes_`date +%F`
mv /usr/bin/kubeadm /usr/bin/kubeadm_`date +%F`
cp -a _output/bin/kubeadm /usr/bin

# 5、证书更新
kubeadm certs renew all 

如下图所示:
《Kubernets证书篇:kubernetes1.20.6证书修改时间限制》_第2张图片


六、查看证书有效期

#1、重启kube-apiserver, kube-controller-manager, kube-scheduler、etcd
docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash

#2、查看证书有效期
kubeadm certs check-expiration

如下图所示:
《Kubernets证书篇:kubernetes1.20.6证书修改时间限制》_第3张图片


七、其它Master节点

说明:如果当前kubernetes集群是多master的话,其它master节点可按如下操作执行。

这里,按照三个master节点来演示操作。
在这里插入图片描述
操作步骤如下:

# 1、备份另外两个matser节点证书文件及kubeadm工具
cp -arp /etc/kubernetes /etc/kubernetes_`date +%F`
mv /usr/bin/kubeadm /usr/bin/kubeadm_`date +%F`

# 2、将第一个master更新好的kubeadm工具拷贝到另外两个master节点的/usr/bin目录下
scp /usr/bin/kubeadm [email protected]:/usr/bin
chmod +x /usr/bin/kubeadm
scp /usr/bin/kubeadm [email protected]:/usr/bin
chmod +x /usr/bin/kubeadm

# 3、证书更新
kubeadm certs renew all 

#4、重启kube-apiserver, kube-controller-manager, kube-scheduler、etcd
docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash

# 5、查看证书有效期
kubeadm certs check-expiration

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

你可能感兴趣的:(《企业级K8s集群运维实战》,golang,linux,运维)