背景资料
在Kubernetes架构图中可以看到,节点(Node)是一个由管理节点委托运行任务的worker。 它能运行一个或多个Pods,节点(Node)提供了运行容器环境所需要的所有必要条件,在Kubernetes之前版本中叫做Minion。
相关结构体
通过下面这张图可以看到在Kubernetes中节点(Node)的相关结构体信息:
• 结构体Node:表示Kubernetes中的节点,在节点上面运行POD。
• 结构体NodeSpec:存放节点的属性信息。
1. 属性PodCIDR:表示这个节点上面POD可以使用的IP范围。
2. 属性ExternalID:这是一个已经被放弃使用的属性。
3. 属性ProviderID:当节点是公有云厂商提供的云主机时,这个属性表示公有云系统中对云主机的唯一标识,格式为:<ProviderName>://<ProviderSpecificNodeID>
4. 属性Unschedulable:这是一个布尔型变量,默认是false。如果为true的时候,表示这个节点不能被Kubernetes进行调度,也就是Kubernetes不能在这个节点上创建新的POD,但是不会改变这个节点上已经创建的POD。当要对节点进行维护,那么就可以将这个节点的Unschedulable变量设置成true,然后对节点进行维护操作。可以通过下面命令来修改这个属性:
这里面有一个例外,就是如果使用daemonSet控制器来创建POD的时候,不会关心Unschedulable这个属性是否被设置成了true,这是因为daemonSet控制器认为任何节点上的daemonSet POD都是必须要创建的,同这个属性无关。
• 结构体NodeStatus:存放节点当前状态信息。
1. 属性Capacity:存放节点上所有资源总量
2. 属性Allocatable:存放节点上可以被调度使用的可用资源数量
3. 属性Phaseÿ