Kubernetes 中的認證
在Kubernetes cluster中,TLS認證是必要條件,也就是說在Kubernetes的各個節點間的通信必須走TLS加密來確保安全性(TLS 可以認為是SSL的升級)。
TLS的認證過程中要用證書,證書是有時效性的,證書過期后,TLS通信是被拒絕的。
Kubernetes認證過期的現象
- 首先,kubernetes cluster提供的服務突然不能用了,頭一天還正常運行,第二天沒做任何重新配置,重啟,就是無法訪問。
- 其次,使用kubectl 命令的時候出現:
xxxx:6443 was refused , did you specify the right host or port?
錯誤,這個錯誤說明,Kubernetes的apiserver沒有啟動。
3. 查看 Kubernetes的apiserver 的日志(/var/log/kube-apiserver.log),會發現如下循環出現的錯誤
authentication.go:63] "Unable to authenticate the request" err="[x509: certificate has expired or is not yet valid: 。。。
4.執行 kubeadm alpha certs check-expiration
會得到認證及其期限的一覽
解決辦法
解決辦法有很多,但是自己動手搭K8s的小伙伴大多是不可能買CA證書的,就是沖着免費去的。
所以,我也推薦大家直接使用K8s的命令更新證書,會延續一年的壽命。
kubeadm alpha certs renew all
執行完命令后,reboot 控制節點的機器應該就解決了。
注:文中所述命令都是在kubernetes集群的控制節點上運行。如果權限不足,請sudo