我正在尝试了解 Kubernetes 中的节点控制器。 Kubernetes documentation 提到节点心跳是使用 NodeStatus 和 LeaseObject 更新完成的。有人,请解释为什么需要这两种机制来监视节点健康状况。 Kubernetes master 内部是否使用 job/cronjob 进行节点健康检查处理?
答案 0 :(得分:0)
Lease 是一种轻量级资源,随着集群规模的扩大,可以提高节点心跳的性能。
Lease 对象被跟踪作为一种帮助心跳在集群扩展时继续有效运行的方式。根据文档,这将是它们与心跳相关的主要功能。
虽然 NodeStatus
用于 kubelet 的 Heartbeats,但 NodeStatus
也是 k8s 中其他控制器的重要信号。
例如:k8s调度器负责调度节点上的pod。它试图找到最适合节点的节点,以优化节点上的内存、cpu 和其他使用情况。但是,它不希望在 node status 条件设置为 NetworkUnavailable: true
的节点上调度 Pod,或者其他一些会使 Pod 不适合在该节点上运行的条件。
如果有一个或多个您不知道或不理解的信号,则很有可能有一个控制器使用该字段或信号来完成其逻辑。
编辑:
节点控制器是 kube-controller-manager 的一部分:
<块引用>Kubernetes 控制器管理器是一个嵌入核心的守护进程 Kubernetes 附带的控制循环。在机器人技术的应用和 自动化,控制回路是一个非终止回路,调节 系统的状态。在 Kubernetes 中,控制器是一个控制回路 通过 apiserver 监视集群的共享状态和 进行更改以尝试将当前状态移至所需的状态 状态。今天与 Kubernetes 一起提供的控制器的例子是 复制控制器、端点控制器、命名空间控制器、 和服务帐户控制器。
逻辑上,每个控制器都是一个单独的进程,但为了降低复杂性,它们都被编译成一个二进制文件并在单个进程中运行。
EDIT_2:
根据您的最新评论,我们还有两点需要解决:
<块引用>在实现 k8s 时,您可能不需要了解这种详细程度。所有对您有用的详细信息都已在 linked public docs 中。无需担心,但我知道它带来了更实际的问题:
<块引用>这就是 Considerations for large clusters 可以提供帮助的地方。它将向您展示如何处理大型集群以及在管理它们时可以使用哪些工具。