是什么让kubernetes节点不健康?

问题描述 投票:0回答:1

在过去的1个月里,我们在GKE集群上经历了4次AUTO_REPAIR_NODES事件(由命令gcloud container operations list显示)。节点自动修复的结果是节点被重新创建并连接新的外部IP,而新的外部IP(未被第三方服务列入白名单)最终导致在新节点上运行的服务失败。

我注意到我们在Kubernetes集群中启用了“自动节点修复”,并且很想禁用它,但在此之前,我需要了解更多有关情况的信息。

我的问题是:

  1. 导致节点不健康的一些常见原因是什么?我知道这篇文章https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair#node_repair_process说,“节点在给定时间阈值的连续检查中报告NotReady状态”将触发自动修复。但是什么可能导致节点变为NotReady?
  2. 我也知道这篇文章https://kubernetes.io/docs/concepts/architecture/nodes/#node-status提到了节点状态的完整列表:{OutOfDisk,Ready,MemoryPressure,PIDPressure,DiskPressure,NetworkUnavailable,ConfigOK}。我想知道,如果某个节点的{OutOfDisk,MemoryPressure,PIDPressure,DiskPressure,NetworkUnavailable}变为真,那该节点会变为NotReady吗?
  3. 在群集中禁用“自动节点修复”后,我可以得到什么负面影响?我基本上想知道我们是否最终会遇到比自动修复节点和新连接的非白名单IP更糟糕的情况。一旦“自动节点修复”被禁用,那么对于在自动修复的Unhealthy节点上运行的pod,Kubernetes会在其他节点上创建新的pod吗?
kubernetes google-cloud-platform google-kubernetes-engine
1个回答
1
投票

这里的困惑在于,当您运行由kube-apiserver报告的kubectl get nodes时会显示“Ready”和“NotReady”状态。但这些是独立的,并且从文档中不清楚它们如何与kubexswpoi所描述的kubelet状态相关你还可以在运行here时看到kubelet状态(在事件中)

回答问题的某些部分:

  1. 据kube-apiserver报道 Kubelet下来 docker或containerd或crio down(取决于您使用的垫片) kubelet状态 - 不清楚。
  2. 对于这些,除了Ready(kubectl describe nodes)之外,kubelet将开始驱逐或不安排pod。从文档中不清楚这些是如何从kubeapi-server报告的。
  3. 您可以让群集上的节点不被使用,并且您将为该用途付费。 是的,在某些准备就绪探测失败(可配置)后,k8s将重新安排pod。如果kubelet关闭或节点向下k8s将认为pod已关闭。 假设您的节点出现故障,最终可能会产生比将工作负载调度到k8s所需的容量更少的容量,无论如何都无法安排它们。

希望能帮助到你!

© www.soinside.com 2019 - 2024. All rights reserved.