赞
踩
此文档从 Kubernetes 官网摘录
中文地址
英文地址
节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。
向 API 服务器添加节点的方式主要有两种:
节点的名称用来标识 Node 对象。
当 kubelet 标志 --register-node 为 true(默认)时,它会尝试向 API 服务注册自己。
对于自注册模式,kubelet 使用下列参数启动:
如果你未提供这个参数,kubelet 将使用节点默认的 IPv4 地址(如果有); 如果节点没有 IPv4 地址,则 kubelet 使用节点的默认 IPv6 地址。
可以使用 kubectl 来创建和修改 Node 对象。
如果你希望手动创建节点对象时,请设置 kubelet 标志 --register-node=false。
你可以修改 Node 对象(忽略 --register-node 设置)。 例如,你可以修改节点上的标签或并标记其为不可调度。
要标记一个 Node 为不可调度,执行以下命令:
kubectl cordon $NODENAME
一个节点的状态包含以下信息:
Kubernetes 节点发送的心跳帮助你的集群确定每个节点的可用性,并在检测到故障时采取行动。
对于节点,有两种形式的心跳:
节点控制器是 Kubernetes 控制面组件, 管理节点的方方面面。
节点控制器在节点的生命周期中扮演多个角色。 第一个是当节点注册时为它分配一个 CIDR 区段(如果启用了 CIDR 分配)。
第二个是保持节点控制器内的节点列表与云服务商所提供的可用机器列表同步。
第三个是监控节点的健康状况。节点控制器负责:
在节点不可达的情况下,在 Node 的 .status 中更新 Ready 状况。 在这种情况下,节点控制器将 NodeReady 状况更新为 Unknown。
如果节点仍然无法访问:对于不可达节点上的所有 Pod 触发 API 发起的逐出操作。 默认情况下,节点控制器在将节点标记为 Unknown 后等待 5 分钟提交第一个驱逐请求。
默认情况下,节点控制器每 5 秒检查一次节点状态,可以使用 kube-controller-manager 组件上的 --node-monitor-period 参数来配置周期。
大部分情况下,节点控制器把逐出速率限制在每秒 --node-eviction-rate 个(默认为 0.1)。 这表示它每 10 秒钟内至多从一个节点驱逐 Pod。
节点控制器会同时检查可用区域中不健康(Ready 状况为 Unknown 或 False) 的节点的百分比:
节点控制器还负责驱逐运行在拥有 NoExecute 污点的节点上的 Pod, 除非这些 Pod 能够容忍此污点。
Node 对象会跟踪节点上资源的容量(例如可用内存和 CPU 数量)。 通过自注册机制生成的 Node 对象会在注册期间报告自身容量。 如果你手动添加了 Node, 你就需要在添加节点时手动设置节点容量。
Kubernetes 调度器 保证节点上有足够的资源供其上的所有 Pod 使用。 它会检查节点上所有容器的请求的总和不会超过节点的容量。 总的请求包括由 kubelet 启动的所有容器,但不包括由容器运行时直接启动的容器, 也不包括不受 kubelet 控制的其他进程。
如果启用了 TopologyManager 特性门控, kubelet 可以在作出资源分配决策时使用拓扑提示。
要在节点上启用交换内存,必须启用 kubelet 的 NodeSwap 特性门控(默认启用), 同时使用 --fail-swap-on 命令行参数或者将 failSwapOn 配置设置为 false。 为了允许 Pod 使用交换内存,在 kubelet 配置中不应将 swapBehavior 设置为 NoSwap(默认行为)
用户还可以选择配置 memorySwap.swapBehavior 以指定节点使用交换内存的方式。例如:
memorySwap:
swapBehavior: LimitedSwap
如果启用了特性门控但是未指定 memorySwap 的配置,默认情况下 kubelet 将使用与 NoSwap 设置相同的行为。
采用 LimitedSwap 时,不属于 Burstable QoS 分类的 Pod (即 BestEffort/Guaranteed QoS Pod) 被禁止使用交换内存。为了保持上述的安全性和节点健康性保证, 在 LimitedSwap 生效时,不允许这些 Pod 使用交换内存。
在详细介绍交换限制的计算之前,有必要定义以下术语:
交换内存限制被配置为 (containerMemoryRequest / nodeTotalMemory) * totalPodsSwapAvailable
的值。
只有 Cgroup v2 支持交换内存,Cgroup v1 不支持。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。