kubernetes1.4新特性:增加新节点健康状况类型DiskPressure

2023年 7月 10日 85.4k 0

背景资料

在Kubernetes架构图中可以看到,节点(Node)是一个由管理节点委托运行任务的worker。 它能运行一个或多个Pods,节点(Node)提供了运行容器环境所需要的所有必要条件,在Kubernetes之前版本中叫做Minion。

相关结构体

通过下面这张图可以看到在Kubernetes中节点(Node)的相关结构体信息:

• 结构体Node:表示Kubernetes中的节点,在节点上面运行POD。

• 结构体NodeSpec:存放节点的属性信息。

  • 属性PodCIDR:表示这个节点上面POD可以使用的IP范围。
  • 属性ExternalID:这是一个已经被放弃使用的属性。
  • 属性ProviderID:当节点是公有云厂商提供的云主机时,这个属性表示公有云系统中对云主机的唯一标识,格式为:://
  • 属性Unschedulable:这是一个布尔型变量,默认是false。如果为true的时候,表示这个节点不能被Kubernetes进行调度,也就是Kubernetes不能在这个节点上创建新的POD,但是不会改变这个节点上已经创建的POD。当要对节点进行维护,那么就可以将这个节点的Unschedulable变量设置成true,然后对节点进行维护操作。可以通过下面命令来修改这个属性:
  • 这里面有一个例外,就是如果使用daemonSet控制器来创建POD的时候,不会关心Unschedulable这个属性是否被设置成了true,这是因为daemonSet控制器认为任何节点上的daemonSet POD都是必须要创建的,同这个属性无关。

    •结构体NodeStatus:存放节点当前状态信息。

    1. 属性Capacity:存放节点上所有资源总量

    2. 属性Allocatable:存放节点上可以被调度使用的可用资源数量

    3. 属性Phase:存放节点当前所处在什么阶段,一共有三个取值,分别是“Pending”、“Running”和“Terminated”,分别表示如下阶段:

    1)Pending:表示节点已经被添加到Kubernetes集群中,但是还没有被Kubernetes进行配置

    2)Running:表示节点已经被Kubernetes配置完成,可以由Kubernetes进行调度使用

    3)Terminated:表示节点已经从Kubernetes集群中被删除掉了

    •结构体NodeCondition:存放节点健康状况。

    1.属性Type:节点健康状况类型,包括Ready、OutOfDisk、MemoryPressure、DiskPressure和NetworkUnavailable,分别表示:

    1)Ready:表示节点是健康的,可以随时在上面创建POD

    2)OutOfDisk:表示这个节点没有空闲的磁盘空间了,已经不能在上面创建POD了

    3)MemoryPressure:表示这个节点上可用内存已经很少了

    4)DiskPressure:表示这个节点上可用磁盘空间已经很少了

    5) NetworkUnavailable:表示这个节点上网络没有被正确配置

    2. 属性Status:表示某种类型健康状况的当前状态,目前只有True、False和Unknown,在kubernetes将来版本中还会继续添加新的状态。

    1)True:表示当前类型的健康状况确实存在

    2)False:表示当前类型的健康状况不存在

    3)Unknown:表示kubernetes无法确定当前类型的健康状况是否存在

  • 属性LastHeartbeatTime:表示上一次更新状态的时间
  • 属性LastTransitionTime:表示上一次状态变化的时间
  • 属性Reason:表示上一次状态变化的简单原因
  • 属性Message:表示上一次状态变化的详细原因
  • •  结构体AttachedVolume:存放挂载到节点上的数据卷信息。

  • 属性Name:挂载到节点上数据卷的名称
  • 属性DevicePath:挂载到节点上数据卷的有效路径
  • •  结构体NodeStats:存放节点的统计数据。

  • 属性NodeName:表示这个节点名称。
  • 属性SystemContainers:这是一个数组型变量,存放这个节点上所有系统容器的统计信息,这里系统容器指的是以Daemon状态运行的kubelet和Docker容器。
  • 属性StartTime:表示开始对节点进行统计的时间。
  • 属性CPU:表示CPU相关的统计数据。
  • 属性Memory:表示内存相关的统计数据
  • 属性Network:表示网络相关的统计数据。
  • 属性Fs:表示Kubernetes模块使用文件系统相关的统计数据。
  • 属性Runtime:表示用户容器运行时的统计数据。
  • 新特性

    在Kubernetes1.4中,结构体NodeCondition新增了一个健康状况类型DiskPressure,用来表示这个节点上可用磁盘空间已经很少了。

    新增了这个健康状况类型DiskPressure后,在两个方面会提升Kubernetes的使用:

    1.可以在调度POD的时候进行参考,如果节点上确实发生了DiskPressure这件事,那么就会由scheduler模块将POD调度到其他节点上。

    2.可以在控制节点的时候进行参考,如果节点上确实发生了DiskPressure这件事,那么就会由kubelet模块回收这个节点上的所有POD,将这些POD驱逐到其他节点上。

    下面介绍kubelet模块在控制节点的时候是如何参考使用DiskPressure的,这就需要更细致的分析结构体NodeStats中的五个属性:

    1. 属性CPU:表示CPU相关的统计数据。这个属性对应结构体CPUStats:

    其中属性Time表示统计数据更新时间,属性UsageNanoCores表示节点上所有CPU在采样窗口内的使用量,属性UsageCoreNanoSeconds表示节点上所有CPU历史使用总量。

    2. 属性Memory:表示内存相关的统计数据。这个属性对应结构体MemoryStats:

    其中属性Time表示统计数据更新时间,属性AvailableBytes表示可以使用的内存总量,属性UsageBytes表示已经被分配的内存大小,属性WorkingSetBytes表示已经被使用的内存大小,已经被使用的内存大小

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论