【问题标题】:Kubernetes Node healthcheckKubernetes 节点健康检查
【发布时间】:2021-05-03 09:25:39
【问题描述】:

我正在尝试了解 Kubernetes 中的节点控制器。 Kubernetes documentation 提到节点心跳是使用 NodeStatus 和 LeaseObject 更新完成的。有人,请解释为什么需要这两种机制来监控节点健康。 Kubernetes master 内部是否使用作业/cronjob 进行节点健康检查处理?

【问题讨论】:

    标签: kubernetes kubernetes-health-check


    【解决方案1】:

    Lease 是一种轻量级资源,随着集群的扩展,它可以提高节点心跳的性能。

    跟踪 Lease 对象是一种帮助心跳在集群扩展时继续有效运行的方式。根据文档,这将是它们与心跳相关的主要功能。

    NodeStatus 被 kubelet 用于心跳,NodeStatus 也是 k8s 中其他控制器的重要信号。

    例如:k8s 调度器负责调度节点上的 Pod。它试图找到最适合节点的节点,以优化节点上的内存、cpu 和其他使用情况。但是,它不想在 node status 条件设置为 NetworkUnavailable: true 的节点上调度 Pod,或者其他一些会使 Pod 不适合在该节点上运行的条件。

    如果有一个或多个您不知道或不理解的信号,则很有可能存在使用该字段或信号来完成其逻辑的控制器。

    编辑:

    节点控制器是kube-controller-manager的一部分:

    Kubernetes 控制器管理器是一个嵌入核心的守护进程 Kubernetes 附带的控制循环。在机器人技术的应用和 自动化,控制回路是一个非终止回路,它调节 系统的状态。在 Kubernetes 中,控制器是一个控制回路 通过 apiserver 监视集群的共享状态和 进行更改以尝试将当前状态移向所需的状态 状态。今天与 Kubernetes 一起提供的控制器的例子是 复制控制器、端点控制器、命名空间控制器、 和 serviceaccounts 控制器。

    从逻辑上讲,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译成一个二进制文件并在一个进程中运行。

    EDIT_2

    根据您最新的 cmets,我们还有 2 点需要解决:

    1. “节点控制器如何处理节点健康检查”

    在实现 k8s 时,您可能不需要了解这种详细程度。所有对你有用的细节都已经在linked public docs 中了。无需担心,但我知道它带来了更实际的问题:

    1. 我不确定大型集群会产生多少负载。

    这就是Considerations for large clusters 提供帮助的地方。它将向您展示如何处理大型集群以及在管理它们时可以使用哪些工具。

    【讨论】:

    • @Wiktor 谢谢的回答。是的,它部分回答了我的问题。实际上,kubelet 不仅使用 NodeStatus 来通知节点心跳。关于租赁,我发现了一个有助于更多地理解租赁的链接。 github.com/hongchaodeng/community/blob/… 我仍然需要了解节点控制器如何处理节点健康检查,比如错过健康检查。
    • 嗨@Kiran。很高兴你现在更清楚了。如果丢失心跳,节点控制器会将NodeReadyCondition 更新为ConditionUnknown,表明节点可能因任何原因而关闭。
    • @Wiktor 是的。节点控制器必须定期检查心跳以了解节点是否处于活动状态。我想这将通过节点控制器上的某种作业/cronjob 来完成。我正在寻找相同的参考资料..
    • 实际上,节点控制器是一个嵌入了 Kubernetes 附带的核心控制循环的守护进程。我将更新我的答案以反映这一点。
    • @Wiktor 感谢您提供的信息。我知道 kube-controller 守护进程。正如您正确指出的那样,我想知道控制回路处理是如何完成的。由于 Kube-controller 以主动-被动模式运行,所有监控都由单个 Kube-controller 节点完成。我不确定一个大集群可以产生多少负载。我假设检查节点的健康状况或确保运行所需数量的 pod 的实际处理已卸载到某种工作人员作业。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 2019-01-08
    • 2019-02-17
    • 2019-01-06
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多