kube-apiserver中service-account-key-file參數(shù)的影響

在用二進(jìn)制方式安裝k8s集群時(shí),安裝完master組件時(shí),使用systemctl status命令查看master各組件狀態(tài)時(shí)都正常,接著加入node組件,使用kubectl get nodes查看節(jié)點(diǎn)狀態(tài),結(jié)果顯示no resource,這顯然是kubelet沒有注冊(cè)成功,接下來使用journalctl -xeu kubelet來查看kubelet的日志。

發(fā)現(xiàn)一個(gè)這樣的錯(cuò)誤:

E0309 14:38:08.191651 1046698 reflector.go:123] k8s.io/kubernetes/pkg/kubelet/kubelet.go:459: Failed to list *v1.Node: nodes "192.168.88.180" is forbidden: User "system:anonymous" ...

看到這里我就很奇怪了,因?yàn)槲乙呀?jīng)開啟了bootstrap認(rèn)證,并且綁定了對(duì)應(yīng)的角色,這里是不應(yīng)該用anonymous去和apiserver通信的。

之后查閱資料發(fā)現(xiàn)bootstrap認(rèn)證是需要kube-controller-manager參與的,接下來就是查看kube-controller-manager的日志,發(fā)現(xiàn)以下錯(cuò)誤:

F0309 14:36:22.461671 1048173 client_builder.go:238] unable to get token for service account: timed out waiting for the condition

看到這里就可以知道應(yīng)該是和kube-controller-manager的service-account-private-key-file參數(shù)有關(guān),但是我能肯定這個(gè)參數(shù)設(shè)置的值沒有問題,接下來突然發(fā)現(xiàn)kube-apiserver有個(gè)類似的參數(shù)service-account-key-file,這時(shí)才發(fā)現(xiàn)是這個(gè)參數(shù)錯(cuò)了,這兩個(gè)參數(shù)所對(duì)應(yīng)的key和crt應(yīng)該是一一對(duì)應(yīng)的,而我service-account-key-file的值是之前卸載時(shí)殘留下來的,導(dǎo)致二者不匹配,所以kube-controller-manager拿不到service account對(duì)應(yīng)的token,從而所有使用bootstrap token和kube-apiserver通信的組件都無法與kube-apiserver通信。

既然知道了原因,解決方法就很簡單了,重新生成一個(gè)service-account-key-file需要的證書,并與service-account-private-key-file參數(shù)指定的key對(duì)應(yīng)就可以了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容