k8s资源监控
查看集群资源状态
# 查看master组件状态
kubectl get cs
# 查看node状态
kubectl get node
# 查看Apiserver代理的url
kubectl cluster-info
# 查看集群详细信息
## 调试和诊断集群信息
kubectl cluster-info dump
# 查看资源的详情
kubectl describe 资源类型/资源名称
## 查看node的详细信息
### 可以查看该node的cpu,内存分配情况
kubectl describe node/master

# 查看资源信息
kubectl get 资源类型/资源名称
# 查看资源的详细信息
## 查看基本信息,ip,所在node等
kubectl get 资源类型/资源名称 -o wide
## 以yaml格式输出详细信息
kubectl get 资源类型/资源名称 -o yaml
kubectl get cs显示scheduler Unhealthy,controller-manager Unhealthy
参考: https://blog.csdn.net/m0_47219942/article/details/115231303
解决办法:
将/etc/kubernetes/manifests/kube-scheduler.yaml和/etc/kubernetes/manifests/kube-controller-manager.yaml这两个配置文件中–port注释掉.

然后重启kubelet服务即可.
# 重启kubelet服务
systemctl restart kubelet
监控集群资源利用率
这个命令需要由
metric-server服务提供数据,而这个服务默认没有安装,还需要手动部署下
metric-server项目地址: https://github.com/kubernetes-sigs/metrics-server
安装metric-server服务
安装了metric-server服务才能执行kubectl top命令.

metric-server服务工作原理:
- 用户发送 kubectl top 命令到 API Server。
- API Server 将请求转发给 Metric Server。
- Metric Server 监听 Kubernetes 中所有节点上的 Kubelet 的 cadvisor 指标接口。
- Kubelet 收集每个容器的资源使用率数据并将其发送到 cadvisor。
- cadvisor 将数据发送给 Kubelet,然后 Kubelet 将其汇报给 Metric Server。
- Metric Server 整理数据并将其返回给 API Server。
- API Server 再将数据返回给用户,用户就可以看到所有容器的资源利用率了。
kubectl top -> apiserver
–> metric-server(pod)
–> 所有节点kubelet(cadvisor指标接口)
–> 所有容器资源利用率
使用yaml资源清单部署metric-server服务
项目地址:https://github.com/kubernetes-sigs/metrics-server
# 下载yaml资源清单
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
修改资源清单–(必须执行)
验证证书的部署方法: https://blog.csdn.net/zorsea/article/details/105037533
找到 container 下的 args 部分,添加以下行:
# 不验证证书
- --kubelet-insecure-tls
可选:修改yaml中镜像为阿里云的地址
# 修改资源清单中的containers
## 修改镜像地址
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2
## 忽略证书,不验证证书
- --kubelet-insecure-tls

在 spec 下,添加如下参数:
https://linux.cn/article-15714-1.html
# 非必需参数
hostNetwork: true

执行部署命令
# apply资源清单
kubectl apply -f components.yaml
检查是否部署成功-(必须执行)
# 如果状态为True并且能返回数据,说明Metrics Server服务工作正常
## 检查metrics是否注册到apiservices,为True则注册成功
kubectl get apiservices |grep metrics

## 查看节点上有无metrics数据,--raw是原始json格式
## 模拟请求/apis/metrics.k8s.io/v1beta1/nodes接口,看是否返回数据
kubectl get --raw=/apis/metrics.k8s.io/v1beta1/nodes

使用kubectl top命令查看资源消耗
metric-server服务部署好之后,就可以正常使用
kubectl top命令了
# 查看pod资源消耗
kubectl top po/pod名 -n namespace名
kubectl top po

# 查看node资源消耗
kubectl top node/node名 -n namespace名
kubectl top node

资源占用排序-根据cpu
# 根据cpu占有率排序查看所有pod
## -A 所有
## -l 指定匹配标签
kubectl top pod -A -l app=flannel --sort-by=cpu


4万+

被折叠的 条评论
为什么被折叠?



