K8S架构---节点
K8S Worker节点称为node.一个节点可以是一个物理机或者虚拟机。每个节点包含运行Pod的必要服务进程。这些服务包含容器运行时,kubelet和kube-proxy。节点状态节点状态包含四个方面AddressesConditionsCapacity and AllocatableInfo节点状态可以使用下面的命令查看:kubectl describe node <...
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的一个主要组件,管理着节点各项事宜。
控制器在节点声明周期扮演着多个角色
- CIDR块(我也不知道什么鬼,是不是计算机网络的那个CIDR)
- 保持控制器内部节点列表与云提供商一致
- 监控节点状态
Self-Registration of Nodes
节点自注册,--register-node
为true时,运行在每个节点kubelet会通过 API server来注册本身。
options | 描述 |
---|---|
–kubeconfig | 向apiserver认证自身的证书 |
–cloud-provider | 云服务商联系信息 |
–register-node | boolean值,是否使能自注册 |
–register-with-taints | Register the node with the given list of taints (comma separated <key>=<value>:<effect> ). No-op if register-node is false. |
–node-ip | 节点IP |
–node-labels | Labels to add when registering the node in the cluster (see label restrictions enforced by the NodeRestriction admission plugin in 1.13+). 呵呵,没啥用 |
–node-status-update-frequency | kubelet向Master节点报告状态的频率 |
References
更多推荐
所有评论(0)