我是靠谱客的博主 暴躁橘子,最近开发中收集的这篇文章主要介绍kubeadm证书过期问题延期,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 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证书过期问题延期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部