Nes*_*uzo 11 kubernetes kubelet
我的两个集群节点有时会Kubelet stopped posting node status
进入。kubectl describe node
在该节点的日志中我看到:
Dec 11 12:01:03 alma-kube1 kubelet[946]: E1211 06:01:03.166998 946 controller.go:115] failed to ensure node lease exists, will retry in 6.4s, error: Get https://192.168.151.52:6443/apis/coordination.k8s.io/v1beta1/namespaces/kube-node-lease/leases/alma-kube1?timeout=10s: read tcp 192.168.170.7:46824->192.168.151.52:6443: use of closed network connection
Dec 11 12:01:03 alma-kube1 kubelet[946]: W1211 06:01:03.167045 946 reflector.go:289] object-"kube-public"/"myregistrykey": watch of *v1.Secret ended with: very short watch: object-"kube-public"/"myregistrykey": Unexpected watch close - watch lasted less than a second and no items received
Dec 11 12:01:03 alma-kube1 kubelet[946]: W1211 06:01:03.167356 946 reflector.go:289] object-"kube-system"/"kube-router-token-bfzkn": watch of *v1.Secret ended with: very short watch: object-"kube-system"/"kube-router-token-bfzkn": Unexpected watch close - watch lasted less than a second and no items received
Dec 11 12:01:03 alma-kube1 kubelet[946]: W1211 06:01:03.167418 946 reflector.go:289] object-"kube-public"/"default-token-kcnfl": watch of *v1.Secret ended with: very short watch: object-"kube-public"/"default-token-kcnfl": Unexpected watch close - watch lasted less than a second and no items received
Dec 11 12:01:13 alma-kube1 kubelet[946]: E1211 06:01:13.329262 946 kubelet_node_status.go:385] Error updating node status, will retry: failed to patch status "{\"status\":{\"$setElementOrder/conditions\":[{\"type\":\"MemoryPressure\"},{\"type\":\"DiskPressure\"},{\"type\":\"PIDPressure\"},{\"type\":\"Ready\"}],\"conditions\":[{\"lastHeartbeatTime\":\"2019-12-11T06:01:03Z\",\"type\":\"MemoryPressure\"},{\"lastHeartbeatTime\":\"2019-12-11T06:01:03Z\",\"type\":\"DiskPressure\"},{\"lastHeartbeatTime\":\"2019-12-11T06:01:03Z\",\"type\":\"PIDPressure\"},{\"lastHeartbeatTime\":\"2019-12-11T06:01:03Z\",\"type\":\"Ready\"}]}}" for node "alma-kube1": Patch https://192.168.151.52:6443/api/v1/nodes/alma-kube1/status?timeout=10s: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)
长话短说
ssh <failing node>
sudo systemctl restart kubelet
Run Code Online (Sandbox Code Playgroud)
我应该问自己“你尝试过打开和关闭它吗?”这句神奇的话。我不知道是什么导致我的kubelet
失败,但我只是ssh
进入虚拟机并重新启动kubelet
服务,一切都重新开始工作。
问题是kubelet有时无法修补其节点状态,超过 250 个资源停留在节点上,kubelet 无法同时使用 kube-apiserver 观看超过 250 个流。将 kube-apiserver 调整 --http2-max-streams-per-connection
为 1000 以减轻痛苦。
查看:kubernetes-patch。
编辑:
Kubernetes 使用客户端证书、不记名令牌、身份验证代理或 HTTP 基本身份验证通过身份验证插件对 API 请求进行身份验证。当向 API 服务器发出 HTTP 请求时,插件会尝试将以下属性与请求关联起来:
您可以一次启用多种身份验证方法。您通常应该至少使用两种方法:
当启用多个验证器模块时,成功验证请求的第一个模块会短路评估。API 服务器不保证验证器的运行顺序。
您可以在此处找到有关令牌的信息:令牌。
您还可以使用服务帐户,它是自动启用的身份验证器,它使用签名的不记名令牌来验证请求。
服务帐户通常由 API 服务器自动创建,并通过 ServiceAccount 准入控制器与集群中运行的 Pod 关联。不记名令牌安装在众所周知位置的 Pod 中,并允许集群内进程与 API 服务器通信。
服务帐户承载令牌在集群外部使用完全有效,并且可用于为希望与 Kubernetes API 通信的长期作业创建身份。要手动创建服务帐户,只需使用 kubectl create serviceaccount (NAME) 命令即可。这将在当前命名空间中创建一个服务帐户和关联的密钥。
秘密通常包含一系列重要的值,其中许多可能会导致 Kubernetes 内部(例如服务帐户令牌)和外部系统升级。即使单个应用程序可以推断出它期望与之交互的秘密的力量,同一命名空间内的其他应用程序也可以使这些假设无效。
要首先检查令牌,您必须列出秘密,然后描述它们 ( $ kubectl describe secret secret-name
)。
要列出机密,请执行以下命令:
$ kubectl get secret
Run Code Online (Sandbox Code Playgroud)
秘密通常包含一系列重要的值,其中许多可能会导致 Kubernetes 内部(例如服务帐户令牌)和外部系统升级。即使单个应用程序可以推断出它期望与之交互的秘密的力量,同一命名空间内的其他应用程序也可以使这些假设无效。
您可以在这里找到更多信息:秘密。
归档时间: |
|
查看次数: |
42668 次 |
最近记录: |