Node

除了 Master,Kubernetes 集群中的其他机器被称为 Node 节点。

  • 与 Master 一样,Node 节点可以是一台物理主机,也可以是一台虚拟机。

  • Node 节点是 Kubernetes 集群中的工作负载节点,每个 Node 都会被Master 分配一些工作负载,当某个 Node 宕机时,其上的工作负载会被 Master 自动转移到其他节点上去。

  • Node 节点可以在运行期间动态增加到 Kubernetes 集群中,一旦 Node 被纳入集群管理范围,kubelet 进程就会定时向 Master 节点汇报自身的情报,例如操作系统、Docker 版本、机器的 CPU 和内存情况,以及之前有哪些 Pod 在运行等,这样 Master 可以获知每个 Node 的资源使用情况,并实现高效均衡的资源调度策略。而某个 Node 超过指定时间不上报信息时,会被 Master 判定为“失联”,Node 的状态被标记为不可用(Not Ready),随后 Master 会触发“工作负载大转移”的自动流程。

关键进程

每个 Node 节点上都运行着以下一组关键进程:

  • kubelet

    负责 Pod 对应的容器的创建、启停等任务,对容器进行健康检查及监控,同时负责上报节点和节点上面 Pod 的状态。

  • kube-proxy

    负责各 Pod 之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。

  • Docker Engine(docker)

    Docker 引擎,负责本机的容器创建和管理工作。

  • CoreDNS

    用于 Kubernetes 集群内部 Service 的解析,可以让 Pod 把 Service 名称解析成 Service 的 IP,然后通过 Service 的 IP 地址连接到对应的应用上。

  • Calico

    符合 CNI 标准的一个网络插件,它负责给每个 Pod 分配一个不会重复的 IP,并且把每个节点当作一个“路由器”,这样一个节点的 Pod 就可以通过 IP 地址访问其他节点的 Pod。

相关命令

我们可以执行下述命令查看集群中有多少个 Node:

kubectl get nodes    

然后,通过 kubectl describe node <node_name> 来查看某个 Node 的详细信息:

kubectl describe node <node_name>

最后更新于