K8S Worker节点称为node.一个节点可以是一个物理机或者虚拟机。每个节点包含运行Pod的必要服务进程。这些服务包含容器运行时,kubelet和kube-proxy。

节点状态

节点状态包含四个方面

  • Addresses
  • Conditions
  • Capacity and Allocatable
  • Info

节点状态可以使用下面的命令查看:

kubectl describe node <insert-node-name-here>

Addresses

根据云提供商或者机器配置:

  • HostName: 节点内核报告的主机名。
  • ExternalIP:外部IP,集群外也可以访问到
  • InternalIP:仅集群内部可访问

Conditions
描述所有集群节点状态。

条件描述
OutofDisk是否有空间添加一个新的Pod
Ready是否健康
MemoryPressure内存是否紧张
PIDPressure节点运行进程数是否过多,因为每个进程有唯一PID
DiskPressure磁盘可用空间是否紧张
NetworkUnavailable节点网络是否正确配置

Condition用JSON格式表示,以下响应表示一个健康节点:

在这里插入图片描述

Capacity and Allocatable

节点有多少可用资源:CPU,内存,最大可调度POD数。
capacity表示总量,allocatable表示可用量。

Info
描述节点的通用信息,比如内核版本,K8S版本,Docker版本,OS名等。这些信息从每个节点的Kubelet中收集。

Management

不像Pod和service,节点不是K8S来创建的,而是由GCE(Google Compute Engine)这样的云提供商来创建的,节点存在于主机池中。当K8S创建一个对象的时候,也仅仅是创建一个节点的对象表示。比如使用以下信息来创建一个节点:

{
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    "name": "10.240.79.157",
    "labels": {
      "name": "my-first-k8s-node"
    }
  }
}

K8S创建一个节点对象,根据metadata.name验证节点状态。如果所有的必要服务都在运行,它就是个健康节点。否则,任何集群活动都会忽略这个节点知道节点可用。

Node Controller

node控制器是K8S的一个主要组件,管理着节点各项事宜。
控制器在节点声明周期扮演着多个角色

  1. CIDR块(我也不知道什么鬼,是不是计算机网络的那个CIDR)
  2. 保持控制器内部节点列表与云提供商一致
  3. 监控节点状态

Self-Registration of Nodes

节点自注册,--register-node为true时,运行在每个节点kubelet会通过 API server来注册本身。

options描述
–kubeconfig向apiserver认证自身的证书
–cloud-provider云服务商联系信息
–register-nodeboolean值,是否使能自注册
–register-with-taintsRegister the node with the given list of taints (comma separated <key>=<value>:<effect>). No-op if register-node is false.
–node-ip节点IP
–node-labelsLabels to add when registering the node in the cluster (see label restrictions enforced by the NodeRestriction admission plugin in 1.13+). 呵呵,没啥用
–node-status-update-frequencykubelet向Master节点报告状态的频率

References

  1. Kubernetes Concepts Note
  2. K8s Overview
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐