1 k8s节点设置的概念和原理
k8s是Google开源的容器集群管理系统,用于自动化部署、扩展和管理容器化应用程序。在k8s中,Node是指容器运行的物理或虚拟机器。Node可以是一个物理机或一个虚拟机器,k8s通过其调度器将Pod调度到每个Node上。对于一个Node来说,可以设置其CPU的上限来控制该Node上运行的容器的资源限制,从而达到控制该Node上负载的目的。
通常情况下,k8s集群中每个Node的CPU资源是有限的,而且受到Kubernetes中各种抢占行为的影响,这些抢占行为可能导致某些Node的CPU资源被耗尽。因此,为了保证Kubernetes集群的稳定性和可靠性,需要对k8s节点设置CPU高于一定水平不允许调度容器。
2 如何设置k8s节点的CPU限制
k8s节点的CPU限制可以通过设置k8s调度器的参数来实现,具体步骤如下:
1)打开k8s调度器的配置文件 kube-scheduler.yaml;
2)在spec configuration parameters中找到--kube-reserved参数,并添加如下配置项: --kube-reserved cpu=1000m,memory=1Gi,ephemeral-storage=1Gi
3)修改配置参数--cpu-limit-percent的数值,将其设置为一个合理的值;
4)保存并退出文件。
这里需要注意的是,对于k8s节点的CPU调度限制的设置,需要根据实际情况进行调整,比如内存大小、容器数量、容器类型等因素。一般情况下,k8s节点的CPU调度限制默认为100%,而实际调度节点的CPU利用率一般不会超过80%左右,因此,合理的CPU限制数值应该小于80%。同时为了保证一定的CPU资源用于Node的正常运行,建议将CPU限制调低一些。
3 如何验证k8s节点的CPU限制是否生效
为了验证k8s节点的CPU限制是否生效,可以通过以下两种方法进行验证:
1)k8s dashboard验证
进入k8s dashboard,选择Pods - Nodes选项卡,在Nodes列表中选择需要验证的Node,在该Node的Details选项中找到Allocated Resources的CPU信息,可以看到该节点的CPU利用率是否达到了限制值。
kubectl proxy
http://localhost:8001/api/v1/nodes/your_node_name_here/proxy/
访问dashboard即可。
2. 使用kubectl top命令验证:在Node所在的集群上运行以下命令:
kubectl top node
该命令将返回Node的CPU和内存使用情况,以及节点的CPU利用率。