[英]Kubernetes kubelet error updating node status
通過EKS在AWS中運行kubernetes集群。 一切似乎都按預期工作,但只是檢查所有日志以進行驗證。 我跳到一個工作節點上,並且在查看kubelet服務時注意到一堆錯誤。
Oct 09 09:42:52 ip-172-26-0-213.ec2.internal kubelet[4226]: E1009 09:42:52.335445 4226 kubelet_node_status.go:377] Error updating node status, will retry: error getting node "ip-172-26-0-213.ec2.internal": Unauthorized
Oct 09 10:03:54 ip-172-26-0-213.ec2.internal kubelet[4226]: E1009 10:03:54.831820 4226 kubelet_node_status.go:377] Error updating node status, will retry: error getting node "ip-172-26-0-213.ec2.internal": Unauthorized
節點都顯示為就緒,但是我不確定為什么會出現這些錯誤。 有3個工作節點,所有3個都具有相同的kubelet錯誤(主機名明顯不同)
附加信息。 看來錯誤來自kubelet_node_status.go中的此行
node, err := kl.heartbeatClient.CoreV1().Nodes().Get(string(kl.nodeName), opts)
if err != nil {
return fmt.Errorf("error getting node %q: %v", kl.nodeName, err)
}
從工人那里,我可以使用kubectl執行get節點:
kubectl get --kubeconfig=/var/lib/kubelet/kubeconfig nodes
NAME STATUS ROLES AGE VERSION
ip-172-26-0-58.ec2.internal Ready <none> 1h v1.10.3
ip-172-26-1-193.ec2.internal Ready <none> 1h v1.10.3
原來這不是問題。 AWS針對這些錯誤的官方回復:
Kubelet將定期向Kubernetes API報告節點狀態。 這樣做時,需要aws-iam-authenticator生成的身份驗證令牌。 kubelet將調用aws-iam-authenticator,並將令牌存儲在其全局緩存中。 在EKS中,此身份驗證令牌將在21分鍾后過期。
kubelet不了解令牌的到期時間,因此它將嘗試使用其緩存中的令牌來訪問API。 當API返回未經授權的響應時,將提供一種重試機制,以從aws-iam-authenticator獲取新令牌並重試該請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.