现象 harbor镜像平台服务器出现内部错误,请求无法完成
排查 登陆dashboard发现node节点状态都为not ready,然后登陆node节点看到确实都为not ready ,本能反应是把kubelet、kube-proxy服务都重新一遍,重新后状态任然为notready状态。 这时细看nodes节点状态age为368d,感觉应该是什么过期了,之前还特意申请证书为10年,应该不是证书的问题,后来查阅部署文档发现kubelet也需要证书授权。
解决 最后kubectl get csr发现果然node-csr都是Pending状态,需要重新kubectl certificate approve才能生效。 查资料发现默认签署的的证书只有 1 年有效期,如果想要调整证书有效期可以通过设置 kube-controller-manager 的 –experimental-cluster-signing-duration 参数实现,该参数默认值为 8760h0m0s,关于怎样增加默认签署证书时间及自动证书轮换可以参考kubernetes认证授权机制。
步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| [root@k8s01 bin]# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.88.34 NotReady <none> 368d v1.13.1 192.168.88.65 NotReady <none> 368d v1.13.1 [root@k8s01 bin]# kubectl get csr NAME AGE REQUESTOR CONDITION node-csr-d8End93rQqSFRHpV65KA2yL-4CnYHT4te6D85lzO5QA 18m kubelet-bootstrap Pending node-csr-iuBw7qxuiCeyiQ1x5WqTASgqVheII-KpTX0L-S8Md8Y 10m kubelet-bootstrap Pending [root@k8s01 bin]# kubectl certificate approve node-csr-d8End93rQqSFRHpV65KA2yL-4CnYHT4te6D85lzO5QA certificatesigningrequest.certificates.k8s.io/node-csr-d8End93rQqSFRHpV65KA2yL-4CnYHT4te6D85lzO5QA approved [root@k8s01 bin]# kubectl certificate approve node-csr-iuBw7qxuiCeyiQ1x5WqTASgqVheII-KpTX0L-S8Md8Y certificatesigningrequest.certificates.k8s.io/node-csr-iuBw7qxuiCeyiQ1x5WqTASgqVheII-KpTX0L-S8Md8Y approved [root@k8s01 bin]# kubectl get csr NAME AGE REQUESTOR CONDITION node-csr-d8End93rQqSFRHpV65KA2yL-4CnYHT4te6D85lzO5QA 19m kubelet-bootstrap Approved,Issued node-csr-iuBw7qxuiCeyiQ1x5WqTASgqVheII-KpTX0L-S8Md8Y 11m kubelet-bootstrap Approved,Issued [root@k8s01 bin]# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.88.34 Ready <none> 368d v1.13.1 192.168.88.65 Ready <none> 368d v1.13.1
|