etcdctl version: 3.4.7
我已经使用 etcdadm 工具为我的 Kubernetes集群部署了 3 节点外部 ETCD 数据库( )集群v1.18.6
。我的证书将在几个月内到期。
我相信kubeadm alpha certs renew all
命令将更新 kubernetes 证书。您知道更新外部 ETCD 数据库集群证书的正确步骤吗?
我的集群证书详细信息
# kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Jul 20, 2021 14:13 UTC 152d no
apiserver Jul 20, 2021 14:13 UTC 152d ca no
apiserver-kubelet-client Jul 20, 2021 14:13 UTC 152d ca no
controller-manager.conf Jul 20, 2021 14:13 UTC 152d no
front-proxy-client Jul 20, 2021 14:13 UTC 152d front-proxy-ca no
scheduler.conf Jul 20, 2021 14:13 UTC 152d no
CERTIFICATE AUTHORITY EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
ca Apr 17, 2030 01:19 UTC 9y no
front-proxy-ca Apr 17, 2030 01:19 UTC 9y no
主节点证书详细信息
/etc/kubernetes/pki/ca.crt, Apr 17 01:19:52 2030 GMT
/etc/kubernetes/pki/apiserver.crt, Jul 20 14:13:09 2021 GMT
/etc/kubernetes/pki/apiserver-kubelet-client.crt, Jul 20 14:13:10 2021 GMT
/etc/kubernetes/pki/front-proxy-ca.crt, Apr 17 01:19:52 2030 GMT
/etc/kubernetes/pki/front-proxy-client.crt, Jul 20 14:13:10 2021 GMT
/etc/etcd/pki/ca.crt, Apr 17 01:19:35 2030 GMT
/etc/etcd/pki/server.crt, Apr 19 01:19:36 2021 GMT
/etc/etcd/pki/peer.crt, Apr 19 01:19:36 2021 GMT
/etc/etcd/pki/etcdctl-etcd-client.crt, Apr 19 01:19:36 2021 GMT
/etc/etcd/pki/apiserver-etcd-client.crt, Apr 19 01:19:36 2021 GMT
谢谢 SR
答案1
我使用这些步骤来更新 kubernets 集群上的证书v1.18.6
。
编译
etcdadm
证书分支代码git clone -b cert https://github.com/pytimer/etcdadm.git cd etcdadm docker run --rm -it -v "$PWD":/etcdadm golang bash cd /etcdadm make cp etcdadm etcdadm-cert
将文件复制
etcdadm-cert
到所有三个服务器。更新第一个 master 上的证书
/opt/bin/etcdadm-cert 证书更新 kubeadm alpha 证书更新全部
重启第一个 master
检查 etcd 成员和 kubernetes 证书过期数据
在主节点上重复步骤 2 至 5
使用这些命令来验证
/opt/bin/etcdctl.sh member list
kubeadm alpha certs check-expiration
谢谢 SR
答案2
对于遇到过此主题的其他任何人(我认为 OP 已经解决了这个问题):
如果您已使用 kubeadm 部署了证书并且它们位于正确的位置,那么您可以执行与对其他 Kubernetes 节点完全相同的操作:
kubeadm alpha certs renew all
这将更新 kubeadm 识别并可以更新的所有证书(可以更新 = 将其作为私钥)。
如果您已像 kubernetes 文档中所述配置了外部 etcd 集群,则与 etcd 关联的私钥 (/etc/kubernetes/pki/etcd/ca.key) 很可能只在第一个 etcd 节点上。这意味着您只能在那里更新与 etcd 相关的证书。
解决此问题的最简单方法是将此密钥复制到所有其他节点的正确默认路径(如上所述),然后 kubeadm 应该能够续订所有证书,您就可以开始了。您无需重置 etcd 容器,它们会自动重新读取证书。
对于较新版本的 kubeadm kubeadm certs renew all
(没有“alpha”)应该可以工作。
您可以对其余 kubernetes 节点执行相同操作,当然,这些节点需要访问 etcd API。通常情况下,您应该重新启动 kube-system 中的控制平面节点 pod(apiserver、controller-manager、scheduler)。