我是靠谱客的博主 暴躁橘子,这篇文章主要介绍kubeadm证书过期问题延期,现在分享给大家,希望可以做个参考。

kubeadm搭建过k8s集群的,应该都知道默认证书为一年,一年过期后,会导致kubelet服务启动不了,所以在部署完毕的时候要提前避免

复制代码
1
2
3
4
5
6
7
[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)查看证书过期时间

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[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、拉取脚本

复制代码
1
2
3
4
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 节点都执行一次
执行命令:

复制代码
1
2
./update-kubeadm-cert.sh all

将更新以下证书和 kubeconfig 配置文件

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/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)重新查看证书过期时间

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[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)检查相关证书文件是否已更新

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@master pki]# ll /etc/kubernetes/pki 总用量 64 -rw-r--r--. 1 root root 1220 728 17:00 apiserver.crt -rw-r--r--. 1 root root 1094 728 17:00 apiserver-etcd-client.crt -rw-------. 1 root root 1675 1214 2020 apiserver-etcd-client.key -rw-------. 1 root root 1675 1214 2020 apiserver.key -rw-r--r--. 1 root root 1103 728 17:00 apiserver-kubelet-client.crt -rw-------. 1 root root 1675 1214 2020 apiserver-kubelet-client.key -rw-r--r--. 1 root root 1066 1214 2020 ca.crt -rw-------. 1 root root 1675 1214 2020 ca.key -rw-r--r-- 1 root root 17 728 17:00 ca.srl drwxr-xr-x. 2 root root 176 728 17:00 etcd -rw-r--r--. 1 root root 1078 1214 2020 front-proxy-ca.crt -rw-------. 1 root root 1675 1214 2020 front-proxy-ca.key -rw-r--r-- 1 root root 17 728 17:00 front-proxy-ca.srl -rw-r--r--. 1 root root 1058 728 17:00 front-proxy-client.crt -rw-------. 1 root root 1675 1214 2020 front-proxy-client.key -rw-------. 1 root root 1675 1214 2020 sa.key -rw-------. 1 root root 451 1214 2020 sa.pub [root@master pki]# ll /etc/kubernetes/pki/etcd 总用量 36 -rw-r--r--. 1 root root 1058 1214 2020 ca.crt -rw-------. 1 root root 1675 1214 2020 ca.key -rw-r--r-- 1 root root 17 728 17:00 ca.srl -rw-r--r--. 1 root root 1094 728 17:00 healthcheck-client.crt -rw-------. 1 root root 1679 1214 2020 healthcheck-client.key -rw-r--r--. 1 root root 1131 728 17:00 peer.crt -rw-------. 1 root root 1675 1214 2020 peer.key -rw-r--r--. 1 root root 1135 728 17:00 server.crt -rw-------. 1 root root 1679 1214 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证书过期问题延期内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部