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>手动处理

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值