k8s1.30 监控并限制节点使用资源(kubelet+metrics-server)

发布于:2025-03-05 ⋅ 阅读:(18) ⋅ 点赞:(0)

新集群容器突然全挂了,一看是node节点无法登录,只有一台还在苟颜残喘,内存和cpu已经到达极限。为避免出现类似情况,需要为系统和kubelet保留一定的cpu和内存资源。
处理思路如下
1、无法登录hang死的机器先关机重启
2、当前节点都配置污点,这样重启以后节点也不会接受任何调度
3、重启后配置kubelet参数
4、取消污点

一、节点资源限制

1.1、配置污点

kubectl taint nodes k8s-node-c31 memory=NotReady:NoSchedule-
kubectl taint nodes k8s-node-c32 memory=NotReady:NoSchedule-

1.2、查看污点

# 查看所有节点的污点
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
# 或者查看特定节点的污点
kubectl describe node k8s-node-c31 | grep -A5 Taints

1.3、kubelet配置资源保留参数

/var/lib/kubelet/config.yaml 添加到最尾部

kubeReserved:
  memory: "1Gi"
  cpu: "500m"
systemReserved:
  memory: "1Gi"
  cpu: "500m"
evictionHard:
  memory.available: "500Mi"
  nodefs.available: "10%"

添加后重启服务systemctl restart kubelet

1.4、节点恢复后移除污点

kubectl taint nodes k8s-node-c31 memory=NotReady:NoSchedule-
kubectl taint nodes k8s-node-c32 memory=NotReady:NoSchedule-

最终确认服务的启动状态,节点的调度也会随之变均衡
如果无法使用kubectl top nodes命令,就需要安装metrics-server

二、安装metrics-server监控节点状态

2.1、首先下载配置文件

curl -L https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml > metrics-server.yaml

2.2、修改deployment参数

不添加的话会出现tls错误,不多考虑修复他,直接用http吧

# 在 Deployment 部分的 args 中添加:
- --kubelet-insecure-tls