概述
kubeadm搭建过k8s集群的,应该都知道默认证书为一年,一年过期后,会导致kubelet服务启动不了,所以在部署完毕的时候要提前避免
[root@master pki]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
scheduler Healthy ok
我这个环境是1.19的
(1)查看证书过期时间
[root@master ~]# cd /etc/kubernetes/pki
[root@master pki]# for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A 3 'Validity' ; done
===== apiserver.crt =====
Validity
Not Before: Dec 14 04:41:00 2020 GMT
Not After : Dec 14 04:41:00 2021 GMT
Subject: CN=kube-apiserver
===== apiserver-etcd-client.crt =====
Validity
Not Before: Dec 14 04:41:01 2020 GMT
Not After : Dec 14 04:41:02 2021 GMT
Subject: O=system:masters, CN=kube-apiserver-etcd-client
===== apiserver-kubelet-client.crt =====
Validity
Not Before: Dec 14 04:41:00 2020 GMT
Not After : Dec 14 04:41:00 2021 GMT
Subject: O=system:masters, CN=kube-apiserver-kubelet-client
===== ca.crt =====
Validity
Not Before: Dec 14 04:41:00 2020 GMT
Not After : Dec 12 04:41:00 2030 GMT
Subject: CN=kubernetes
===== front-proxy-ca.crt =====
Validity
Not Before: Dec 14 04:41:01 2020 GMT
Not After : Dec 12 04:41:01 2030 GMT
Subject: CN=front-proxy-ca
===== front-proxy-client.crt =====
Validity
Not Before: Dec 14 04:41:01 2020 GMT
Not After : Dec 14 04:41:01 2021 GMT
Subject: CN=front-proxy-client
通过上面看到证书是一年的额,所以我我们要在部署完、或者过期之前避免出现这个问题
(2)证书来源详细信息查看https://github.com/yuyicai/update-kube-cert
1、拉取脚本
git clone https://github.com/yuyicai/update-kube-cert.git
cd update-kubeadm-cert
chmod 755 update-kubeadm-cert.sh
执行时请使用 ./update-kubeadm-cert.sh all 或者 bash update-kubeadm-cert.sh all ,不要使用 sh update-kubeadm-cert.sh all,因为某些发行版 sh 并不是链接到 bash,可能会不兼容
2、更新证书
如果有多个 master 节点,在每个 master 节点都执行一次
执行命令:
./update-kubeadm-cert.sh all
将更新以下证书和 kubeconfig 配置文件
/etc/kubernetes
├── admin.conf
├── controller-manager.conf
├── scheduler.conf
├── kubelet.conf
└── pki
├── apiserver.crt
├── apiserver-etcd-client.crt
├── apiserver-kubelet-client.crt
├── front-proxy-client.crt
└── etcd
├── healthcheck-client.crt
├── peer.crt
└── server.crt
(3)重新查看证书过期时间
[root@master ~]# cd /etc/kubernetes/pki
[root@master pki]# for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A 3 'Validity' ; done
===== apiserver.crt =====
Validity
Not Before: Jul 28 09:00:23 2021 GMT
Not After : Jul 26 09:00:23 2031 GMT
Subject: CN=kube-apiserver
===== apiserver-etcd-client.crt =====
Validity
Not Before: Jul 28 09:00:22 2021 GMT
Not After : Jul 26 09:00:22 2031 GMT
Subject: O=system:masters, CN=kube-apiserver-etcd-client
===== apiserver-kubelet-client.crt =====
Validity
Not Before: Jul 28 09:00:23 2021 GMT
Not After : Jul 26 09:00:23 2031 GMT
Subject: O=system:masters, CN=kube-apiserver-kubelet-client
===== ca.crt =====
Validity
Not Before: Dec 14 04:41:00 2020 GMT
Not After : Dec 12 04:41:00 2030 GMT
Subject: CN=kubernetes
===== front-proxy-ca.crt =====
Validity
Not Before: Dec 14 04:41:01 2020 GMT
Not After : Dec 12 04:41:01 2030 GMT
Subject: CN=front-proxy-ca
===== front-proxy-client.crt =====
Validity
Not Before: Jul 28 09:00:24 2021 GMT
Not After : Jul 26 09:00:24 2031 GMT
Subject: CN=front-proxy-client
发现延长了10年之久
(4)检查相关证书文件是否已更新
[root@master pki]# ll /etc/kubernetes/pki
总用量 64
-rw-r--r--. 1 root root 1220 7月 28 17:00 apiserver.crt
-rw-r--r--. 1 root root 1094 7月 28 17:00 apiserver-etcd-client.crt
-rw-------. 1 root root 1675 12月 14 2020 apiserver-etcd-client.key
-rw-------. 1 root root 1675 12月 14 2020 apiserver.key
-rw-r--r--. 1 root root 1103 7月 28 17:00 apiserver-kubelet-client.crt
-rw-------. 1 root root 1675 12月 14 2020 apiserver-kubelet-client.key
-rw-r--r--. 1 root root 1066 12月 14 2020 ca.crt
-rw-------. 1 root root 1675 12月 14 2020 ca.key
-rw-r--r-- 1 root root 17 7月 28 17:00 ca.srl
drwxr-xr-x. 2 root root 176 7月 28 17:00 etcd
-rw-r--r--. 1 root root 1078 12月 14 2020 front-proxy-ca.crt
-rw-------. 1 root root 1675 12月 14 2020 front-proxy-ca.key
-rw-r--r-- 1 root root 17 7月 28 17:00 front-proxy-ca.srl
-rw-r--r--. 1 root root 1058 7月 28 17:00 front-proxy-client.crt
-rw-------. 1 root root 1675 12月 14 2020 front-proxy-client.key
-rw-------. 1 root root 1675 12月 14 2020 sa.key
-rw-------. 1 root root 451 12月 14 2020 sa.pub
[root@master pki]# ll /etc/kubernetes/pki/etcd
总用量 36
-rw-r--r--. 1 root root 1058 12月 14 2020 ca.crt
-rw-------. 1 root root 1675 12月 14 2020 ca.key
-rw-r--r-- 1 root root 17 7月 28 17:00 ca.srl
-rw-r--r--. 1 root root 1094 7月 28 17:00 healthcheck-client.crt
-rw-------. 1 root root 1679 12月 14 2020 healthcheck-client.key
-rw-r--r--. 1 root root 1131 7月 28 17:00 peer.crt
-rw-------. 1 root root 1675 12月 14 2020 peer.key
-rw-r--r--. 1 root root 1135 7月 28 17:00 server.crt
-rw-------. 1 root root 1679 12月 14 2020 server.key
证书问题解决
(5)如果失败,失败回滚
脚本会自动备份 /etc/kubernetes
目录到 /etc/kubernetes.old-$(date +%Y%m%d)
目录(备份目录命名示例:kubernetes.old-20200325)
若更新证书失败需要回滚,手动将备份 /etc/kubernetes.old-$(date +%Y%m%d)
目录覆盖 /etc/kubernetes
目录
(6) 其他方式
大于等于 v1.15 的版本建议直接使用 kubeadm alpha certs renew <cert_name>
来更新证书有效期,更新后证书有效期延长一年
若小于小于 v1.17 版本实用 kubeadm alpha certs renew <cert_name>
来更新证书,需要手动处理一下,这是一个 bug
若使用该脚本更新证书,无需再手动处理,可忽略该 bug
kubeadm alpha certs renew <cert_name>
后 手动处理
最后
以上就是暴躁橘子为你收集整理的kubeadm证书过期问题延期的全部内容,希望文章能够帮你解决kubeadm证书过期问题延期所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复