前言

metrics server为Kubernetes自动伸缩提供一个容器资源度量源。metrics-server 从 kubelet 中获取资源指标,并通过 Metrics API 在 Kubernetes API 服务器中公开它们,以供 HPA 和 VPA 使用。

之前已经用k8s的二进制文件搭建了一套集群环境,搭建步骤见:二进制部署k8s集群-基于containerd。现需要在这个集群环境内部署Metrics-Server,用于配置应用自动伸缩。

集群环境:

  • 主机:Debian 11
  • Kubernetes版本:1.26.6

步骤

  1. 获取yaml文件。
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server.yaml
  1. 编辑yaml文件。之前部署集群用的自签名证书,metrics-server直接请求kubelet接口会证书校验失败,因此deployment中增加- --kubelet-insecure-tls参数。另外镜像原先在registry.k8s.io,国内下载不方便,下面的配置中修改成了国内镜像仓库地址。内网环境中可以先下载,然后再推到内网镜像仓库,镜像也改成内网镜像地址。
apiVersion: apps/v1kind: Deploymentmetadata:  labels:    k8s-app: metrics-server  name: metrics-server  namespace: kube-systemspec:  # ...  template:  spec:      containers:      - args:        - --cert-dir=/tmp        - --secure-port=4443        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname        - --kubelet-use-node-status-port        - --metric-resolution=15s        - --kubelet-insecure-tls        image: registry.cn-hangzhou.aliyuncs.com/rainux/metrics-server:v0.6.4
  1. 发布
kubectl apply -f metrics-server.yaml
  1. 查看是否在运行
kubectl get pods -n kube-system | grep metrics
  1. 获取集群的指标数据
kubectl get --raw /apis/metrics.k8s.io/v1beta1 | python3 -m json.tool

根据输出可见,集群提供nodes和pods的资源指标。

{    "kind": "APIResourceList",    "apiVersion": "v1",    "groupVersion": "metrics.k8s.io/v1beta1",    "resources": [        {            "name": "nodes",            "singularName": "",            "namespaced": false,            "kind": "NodeMetrics",            "verbs": [                "get",                "list"            ]        },        {            "name": "pods",            "singularName": "",            "namespaced": true,            "kind": "PodMetrics",            "verbs": [                "get",                "list"            ]        }    ]}
  1. 测试
kubectl top nodes

top命令

kubectl top命令用来查看node节点和pod的资源使用情况。

# 查看 top 命令的帮助kubectl top --help# 查看node节点的资源使用情况kubectl top node# 查看pod的资源使用情况kubectl top pod# 查看所有命名空间的pod资源使用情况kubectl top pod -A

参考

  • Kubernetes官方文档 – 资源指标管道
  • 博客园 – Kubernetes安装Metrics-Server
  • GitHub – kubernetes-sigs/metrics-server

本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/17669633.html