详情页标题前

阿里云容器服务ACK节点资源预留策略-云淘科技

详情页1

ACK需要占用一定的节点资源来为kube组件和system进程预留资源,从而保证OS内核和系统服务、Kubernetes守护进程的正常运行。这会导致节点的资源总数Capacity与可分配的资源数Allocatable之间存在差异。ACK存在默认的资源预留策略,也支持通过kubelet配置自定义资源预留。

注意事项

  • 该预留策略仅适用于1.16.9及以上版本的集群。

  • 修改资源预留的值,请参见自定义节点池kubelet配置。不支持通过黑屏手动对kubelet配置文件进行修改,以避免配置冲突,导致后续节点池运维过程中的非预期结果。

  • 该预留策略对新添加的节点自动生效,无需手动配置。

  • 对于已存在节点:

    • 如果已存在节点没有进行过节点池运维操作,例如,自定义配置、节点池升级等,出于稳定性考虑,该预留策略不会对此类已存在节点自动生效。

    • 即使节点未配置过资源预留,已存在节点会在集群升级、节点池升级、修改节点池自定义Kubelet参数后,默认应用资源预留。

    • 改变资源预留的值可能会造成节点的可分配资源变少。对于资源水位较高的节点,可能会触发节点驱逐。

    • 如果您希望对已存在节点应用该资源预留策略,您可以将已有节点移除出集群,然后重新添加节点。新添加的节点会默认执行该资源预留策略。移除节点和添加节点的标准操作及带来的影响,请参见移除节点、添加已有节点。

查询节点可分配资源

执行以下命令,查看节点的资源总量和可分配资源。

kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6

预期输出:

Capacity:
  cpu:                4                 #节点的CPU总核数。
  ephemeral-storage:  123722704Ki       #节点的临时存储总量,单位KiB。
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             7925980Ki         #节点的内存总量,单位KiB。
  pods:               64
Allocatable:
  cpu:                3900m             #节点可分配的CPU核数。
  ephemeral-storage:  114022843818      #节点可分配的临时存储,单位Byte。
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             5824732Ki         #节点可分配的内存,单位KiB。
  pods:               64

计算节点可分配资源

可分配资源的计算公式:可分配资源(Allocatable) = 总资源(Capacity)-预留资源(Reserved)-驱逐阈值(Eviction-Threshold)

公式说明:

  • 总资源对应查询节点命令输出中的Capacity字段。

  • 关于预留资源的相关信息,请参见资源预留策略。

  • 关于驱逐阈值的相关信息,请参见节点压力驱逐。

资源预留策略

节点的预留资源量通常要考虑以下因素:

  • 由于规格较高的ECS节点通常会运行更多的Pod,为了保证节点的性能,ACK会为Kubernetes组件预留更多资源。

  • 由于Windows节点需要使用额外的资源来运行Windows操作系统和Windows Server相关组件,Windows节点通常会比Linux节点需要更多的预留资源。更多信息,请参见创建Windows节点池。

预留资源包括给kube组件预留的资源(kubeReserved)和给system进程预留的资源(systemReserved)。kubeReserved和systemReserved各占预留资源的50%。例如,节点总CPU 1 Core,则预留CPU为100 milliCore,其中kubeReserved占用50 milliCore,systemReserved占用50 milliCore。修改资源预留的值,请参见自定义节点池kubelet配置。

ACK会根据CPU和内存所在的不同区间来计算预留的资源量,节点的总预留资源量等于各区间的预留资源量之和。

  • CPU:计算节点的总CPU预留量示意图如下。阿里云容器服务ACK节点资源预留策略-云淘科技

    以32核的节点为例,总的CPU预留量计算如下:

    100+(32000-4000)×2.5%=800 milliCore

  • 内存:计算节点的总内存预留量示意图如下所示。阿里云容器服务ACK节点资源预留策略-云淘科技

    以256 GiB内存的节点为例,总的内存预留量计算如下:

    4×25%+(8-4)×20%+(16-8)×10%+(128-16)×6%+(256-128)×2%=11.88 GiB

ACK节点预留资源示例

节点总资源

预留资源

CPU

(单位:Core)

Memory

(单位:GiB)

CPU

(单位:milliCore)

Memory

(单位:MiB)

1

2

100

512

2

4

100

1024

4

8

100

1843

8

16

200

2662

16

32

400

3645

32

64

800

5611

64

128

1600

9543

128

256

2400

12164

256

512

3040

17407

512

1024

4320

27893

常见问题

如何查看节点总CPU和内存?

CPU

执行如下命令,查询节点总CPU。

cat /proc/cpuinfo | grep processor

预期输出:

processor       : 0
processor       : 1
processor       : 2
processor       : 3

内存

执行如下命令,查询节点总内存。

cat /proc/meminfo | grep MemTotal

预期输出:

MemTotal:        7660952 kB

相关文档

  • 配置自定义资源预留和驱逐阈值,请参见自定义节点池kubelet配置。

  • 根据可分配资源,您可以为业务Pod设置所需资源(request),节点上所有业务Pod所需资源之和不应该大于节点的可分配资源,否则业务Pod会因节点容量不足而调度失败。ACK为K8s原生的工作负载提供了资源画像能力,通过对资源使用量历史数据的分析,辅助您填写Pod所需资源。设置业务Pod所需资源的具体操作,请参见创建无状态工作负载Deployment。

  • 如果您希望对已存在节点应用自定义资源预留策略,您可以将已有节点移除出集群,然后重新添加节点。新添加的节点会默认执行自定义资源预留策略。移除节点和添加节点的标准操作及带来的影响,请参见移除节点、添加已有节点。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/167878.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云ECS云服务器PurchaseStorageCapacityUnit-云淘科技

    调用PurchaseStorageCapacityUnit购买一个或多个存储容量单位包SCU(Storage Capacity Unit)。 接口说明 请确保在使用该接口前,已充分了解存储容量单位包SCU的收费方式和价格。更多信息,请参见存储容量单位包计费方式。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后…

    阿里云服务器 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。