kubelet SSL证书到期

5 阅读1分钟

处理方法

针对 CCSE v1.17.3 集群

步骤1:修改kubelet配置(集群中所有节点)

sudo vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

ExecStart=/usr/bin/kubelet ...行追加配置

--rotate-certificates=true --rotate-server-certificates=true

追加后结果类似

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --node-ip=192.168.0.1 --root-dir=/dcos/data/docker/kubelet --rotate-certificates=true --rotate-server-certificates=true

步骤2:重启kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

步骤3:批准证书
登录任一Master节点
kubectl get csr可以看到类似以下结果

NAME        AGE     REQUESTOR                   CONDITION
csr-dszds   18s     system:node:192.168.0.1   Pending

approve以上证书

kubectl certificate approve <csr-name>

步骤4:验证结果,查看证书有效期
所有集群节点执行
echo -n | openssl s_client -connect localhost:10250 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep -A 2 Validity
可以看到类似以下结果

        Validity
            Not Before: Jun 16 09:04:56 2022 GMT
            Not After : Jun 16 09:04:56 2023 GMT

kubernetes证书过期

更新时间:2023-08-29 18:36:44

修复步骤

可使用kubeadm重新生成证书
kubeadm的早期版本生成证书的功能放在alpha命令集下,修复的指令为:

kubeadm  alpha certs check-expiration  查看证书

kubeadm alpha certs renew all
grep client-certificate-data /etc/kubernetes/kubelet.conf | cut -d: -f2 | tr -d ' ' | base64 -d | openssl x509 -noout -dates

比较新的kubeadm修复指令为:

kubeadm certs check-expiration  查看证书

kubeadm certs renew all

执行后必须重启节点上的组件
执行后,k8s的组件会删除
sudo mv /etc/kubernetes/manifests/ .yaml .
执行后,k8s的组件会重启
sudo mv ./
.yaml /etc/kubernetes/manifests/

验证步骤:
echo | openssl s_client -servername 127.0.0.1 -connect 127.0.0.1:10257 2>/dev/null | openssl x509 -noout -dates
echo | openssl s_client -servername 127.0.0.1 -connect 127.0.0.1:10259 2>/dev/null | openssl x509 -noout -dates