Node 是 Pod 真正运行的主机,可以是物理机也可以是虚拟机。每个 Node 节点上至少要运行 container runtime(比如 docker
或者 rkt
)、kubelet
和 kube-proxy
服务。
Node 本质上不是 Kubernetes 来创建的,Kubernetes 只是管理 Node 上的资源。虽然可以通过 Manifest 创建一个 Node 对象(如下 yaml 所示),但 Kubernetes 也只是去
检查是否真的是有这么一个 Node,如果检查失败,也不会往上调度 Pod。
这个检查是由 Node Controller 来完成的。Node Controller 负责
默认情况下,kubelet 在启动时会向 master 注册自己,并创建 Node 资源。
1 | kind: Node |
禁止 pod 调度到该节点上:1
kubectl cordon <node>
驱逐该节点上的所有 pod:1
kubectl drain <node>
该命令会删除该节点上的所有 Pod(DaemonSet
除外),在其他 node 上重新启动它们,通常该节点需要维护时使用该命令。直接使用该命令会自动调用 kubectl cordon <node>
命令。
当该节点维护完成,启动了 kubelet 后,再使用 kubectl uncordon <node>
即可将该节点添加到 kubernetes 集群中。
每个 Node 都包括以下状态信息:
kubelet
中的 --hostname-override
参数替代。conditions
字段描述所有运行节点的状态。True
Unknown
,健康为 True
,否则为 False
。True
,否则为 False
。True
,否则为 False
。True
,否则为 False
。True
,否则为 False
。