kubelet证书过时解决方法

昨天收到报警短信:集群中某node状态为notReady,因为是长期不用的,因此放到今天才有空处理,如下记录处理过程。node

查看kubelet日志,发现不停的打印证书过时相关提示信息。linux

如下操做基于kubernetes集群版本:v1.6.6bootstrap

kubelete 证书默认有效期一年api

1.查看证书有效期,这里使用之前下载的cfssl-certinfoapp

curl -s -L -o /usr/local/bin/cfssl-certinfo https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x /usr/local/bin/cfssl-certinfo
cfssl-certinfo -cert /etc/kubernetes/ssl/kubelet.crt
  显示内容以下:curl

{
"subject": {
"common_name": "test@1505813004",
"names": [
"test@1505813004"
]
},
"issuer": {
"common_name": "test@1505813004",
"names": [
"test@1505813004"
]
},
"serial_number": "1",
"sans": [
"test"
],
"not_before": "2017-10-24T09:23:24Z",
"not_after": "2018-10-24T09:23:24Z",
"sigalg": "SHA256WithRSA",
"authority_key_id": "",
"subject_key_id": "",
"pem": "-----BEGIN CERTIFICATE-----\nMIIDDKDK........EHi\nThGfI/wURC0=\n-----END CERTIFICATE-----\n"
}url

  1. 从新生成证书

在证书过时node删除kubelet相关证书文件及配置文件而后重启kubelet,
kubelet会向apiserver发起一个csr
rm /etc/kubernetes/kubelet.kubeconfig
rm /etc/kubernetes/ssl/kubelet.*
systemctl restart kubelet
systemctl status kubeletrest

//查看未受权的CSR请求:
kubectl get csr

//approve CSR 请求:
kubectl certificate approve csr-4pw6g
NAME AGE REQUESTOR CONDITION
csr-4pw6g 1h kubelet-bootstrap Approved,Issued日志

  1. 重启kubelet

//重启kubelet
systemctl restart kubeletserver

//查看node状态
kubectl get no
NAME STATUS AGE VERSION
external Ready 1y v1.6.6

  1. 另:在kubernetes1.7以后,能够采用集群自动签发证书方案,但仍然须要手动重启kubelet, 在1.8以后,就能够自动签发,自动renew证书;也能够设置更长的有效期。后继再添加整理相关内容。
相关文章
相关标签/搜索