Kubernetes kubelet 更新节点状态时出错



通过 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)
}

从worker中,我可以很好地使用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 获取新令牌并重试请求。

最新更新