k8s之部署metrics-server 转载

k8s之部署metrics-server

 

Metrics Server是Kubernetes内置自动缩放管道的可扩展,高效的容器资源指标来源。

Metrics Server从Kubelet收集资源指标,并通过Metrics API在Kubernetes apiserver中公开它们, 以供Horizontal Pod Autoscaler和Vertical Pod Autoscaler使用。也可以通过访问Metrics APIkubectl top,从而更轻松地调试自动缩放管道。

Metrics Server并非用于非自动缩放目的。例如,请勿将其用于将指标转发到监视解决方案,也不要将其用作监视解决方案指标的来源。

Metrics Server提供:

适用于大多数集群的单个部署(请参阅需求)

可扩展支持多达5,000个节点集群

资源效率:Metrics Server使用0.5m的CPU核心,每个节点使用4 MB的内存

用于监测node,pod等的CPU,内存使用情况。

推荐版本 0.3.6 阿里源有资源包可以拉取镜像

img

image.png

项目下载地址

https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.3.6

1、修改配置 检查 API Server 是否开启了 Aggregator Routing:查看 API Server 是否具有 --enable-aggregator-routing=true 选项。 ···swift [root@k8s-master ~]# ps -ef |grep apiserver|grep true

 

img

image.png

1.1添加参数 [root@k8s-master ~]# grep -A 10 command /etc/kubernetes/manifests/kube-apiserver.yaml

 

img

image.png

  • --enable-aggregator-routing=true

kubeadm部署的在/etc/kubernetes/manifests/kube-apiserver.yaml这里修改,kubelet会监听这个yaml文件的变化修改这个文件后kubelet会将自动终止原有的 kube-apiserver的 Pod,并自动创建一个使用了新配置参数的 Pod 作为替代。

2,metrics-server部署

官方下载 wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

修改components.yaml 文件,替换国内镜像源地址:

image: registry.cn-hangzhou.aliyuncs.com/ljck8s/metrics-server-amd64:v0.3.6

修改配置,根据群集设置

  • --kubelet-insecure-tls #不要验证Kubelets提供的服务证书的CA。仅用于测试目的。

  • --kubelet-preferred-address-types=InternalIP #metrics-server默认使用的是hostname,但是coredns中并没有三台物理机器的hostname和IP地址的关系,需要改为使用主机IP地址;

img

image.png

PS:k8s集群版本低于1.14的,还需修改 nodeSelector 字段 kubernetes.io/os 替换成 beta.kubernetes.io/os

 

 

 

部署metrics-server

kubectl apply -f components.yaml

 

img

image.png

kubectl get pods -n kube-system

 

img

image.png

kubectl top pods -A

 

img

image.png

kubectl top node

 

img

image.png

在node节点上 docker ps -a |grep sh* 可以找出名称中包含sh* 的 容器

docker top CONTAINER ID 可以查看具体某个容器的 情况

 

img

image.png

docker stats 命令查看 docker stats 命令用来返回运行中的容器的实时数据流,

默认情况下,stats 使用参数-a或者--all,命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。

docker stats -a

CONTAINER ID CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 1ad181f01c76 0.00% 1.766MiB / 30.89GiB 0.01% 0B / 0B 0B / 0B 1 73c1189ddd0e 0.04% 1.178GiB / 2GiB 58.88% 0B / 0B 0B / 254kB 68 ed1a36493259 0.00% 1.25MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1 05c08624b3d7 0.00% 1.543MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1 9013e1d0a243 0.00% 1.578MiB / 30.89GiB 0.00% 0B / 0B 0B / 0B 1

[CONTAINER]:以短格式显示容器的 ID。 [CPU %]:CPU 的使用情况。 [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。 [MEM %]:以百分比的形式显示内存使用情况。 [NET I/O]:网络 I/O 数据。 [BLOCK I/O]:磁盘 I/O 数据。 [PIDS]:PID 号。

格式化输出 docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

 

img

image.png

上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。

下面是自定义的格式中可以使用的所有占位符: .Container 根据用户指定的名称显示容器的名称或 ID。 .Name 容器名称。 .ID 容器 ID。 .CPUPerc CPU 使用率。 .MemUsage 内存使用量。 .NetIO 网络 I/O。 .BlockIO 磁盘 I/O。 .MemPerc 内存使用率。 .PIDs PID 号。 有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。

4、日志分析方式: k8s日志查看 kubectl logs <pod-name> kubectl logs -f <pod-name> # 实时查看日志

kubectl logs -f test-huishi-server-6c68d8c769-5lf9z docker日志查看 docker logs da0072b10205

参考链接:https://www.jianshu.com/p/bd442ae73394

扩展阅读 从kubectl top看K8S监控 https://www.jianshu.com/p/64230e3b6e6c

博文源地址:https://www.jianshu.com/p/1e825ac69f40

posted @   不用去猜。  阅读(335)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示