前言
metrics server为Kubernetes自动伸缩提供一个容器资源度量源。metrics-server 从 kubelet 中获取资源指标,并通过 Metrics API 在 Kubernetes API 服务器中公开它们,以供 HPA 和 VPA 使用。
之前已经用k8s的二进制文件搭建了一套集群环境,搭建步骤见:二进制部署k8s集群-基于containerd。现需要在这个集群环境内部署Metrics-Server,用于配置应用自动伸缩。
集群环境:
- 主机:Debian 11
- Kubernetes版本:1.26.6
步骤
- wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server.yaml
复制代码
- 编辑yaml文件。之前部署集群用的自签名证书,metrics-server直接请求kubelet接口会证书校验失败,因此deployment中增加- --kubelet-insecure-tls参数。另外镜像原先在registry.k8s.io,国内下载不方便,下面的配置中修改成了国内镜像仓库地址。内网环境中可以先下载,然后再推到内网镜像仓库,镜像也改成内网镜像地址。
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- labels:
- k8s-app: metrics-server
- name: metrics-server
- namespace: kube-system
- spec:
- # ...
- 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
复制代码- kubectl apply -f metrics-server.yaml
复制代码- kubectl get pods -n kube-system | grep metrics
复制代码- 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"
- ]
- }
- ]
- }
复制代码 top命令
kubectl top命令用来查看node节点和pod的资源使用情况。- # 查看 top 命令的帮助
- kubectl top --help
- # 查看node节点的资源使用情况
- kubectl top node
- # 查看pod的资源使用情况
- kubectl top pod
- # 查看所有命名空间的pod资源使用情况
- kubectl top pod -A
复制代码 参考
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |