作者:前世梦0708 | 来源:互联网 | 2023-09-04 13:17
k8s增加node的CPU和Memory资源后,但显示资源没有更新,文中通过分析处理进行解决。
CentOS 7.6;
Kubernetes 1.23.5。
rh-node01虚拟机原有16C/32G,机器扩容到32C/64G后,虚拟机自动重启后,物理机查看资源已增加,但K8S查看资源显示没有变化,仍旧为16C/32G。
查看CPU资源,32core,系统层面已经识别:
[root@rh-node01 ~]# grep process proc/cpuinfo | wc -l
32
查看内存资源为64G,系统层面已经识别:
[root@rh-node01 ~]# free -h
total used free shared buff/cache available
Mem: 63G 16G 31G 39M 15G 46G
Swap: 0B 0B 0B
3. 查看kubelet服务
[root@rh-node01 ~]# systemctl status kubelet #服务启动时间较早,启动时间为2022-04-07 13:59:56
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service;
enabled; vendor preset: disabled)
Drop-In: usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Thu 2022-04-07 13:59:56 CST;
1 months 12 days ago
Docs: https://kubernetes.io/docs/
资源指标管道图:
kubelet: 用于管理容器资源的节点代理。可以使用 metrics/resource 和 stats kubelet API 端点访问资源指标。
Summary API: kubelet 提供的 API,用于发现和检索可通过 stats 端点获得的每个节点的汇总统计信息。
Metrics API:metrics-server 实现了 Metrics API。此 API 允许你访问集群中节点和Pod的 CPU 和内存使用情况。它的主要作用是将资源使用指标提供给 K8s 自动缩放器组件。
通过“资源指标管道”图和官方描述分析,集群中node节点CPU和内存等信息来源于kubelet,通过重启kubelet确保资源信息重新加载,最终资源显示正常。
通过重启kubelet,来确保k8s集群正常识别新增CPU和内存。
# systemctl restart kubelet
重启新增资源的node节点的kubelet服务,依赖较高的服务可能会有业务波动,甚至重启。
再次查看CPU,CPU资源已经增加,变为32个CPU。
[root@rh-node02 ~]# kubectl describe node rh-node01 | grep cpu
cpu: 32
cpu: 32
cpu 13270m
(41%) 25800m (80%)
https://kubernetes.io/zh/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/