容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
部署Metrics Server
## 1\. Metrics API Metrics API 包括 **Custom Metrics API**(自定义指标 API)和 Resource Metrics API(资源指标 API)。我们一般说的 Metrics API 泛指 Resource Metrics API,也就是通过 kubectl top 命令访问的API,是侠义上的。 ### 1.1 什么是Metrics API **Metrics API**,即**Kubernetes Resource Metrics API**。它是Kubernetes API组中的一员,在集群中提供了一组基本的指标( 允许管理员访问集群中节点和 Pod 的 CPU 和内存使用情况。),以支持自动伸缩和类似的用例。 ### 1.2 Metrics API 的作用 - 它的主要作用是将资源使用指标提供给 K8s 自动扩缩器组件。 - Metrics API 提供有关节点和 Pod 的资源使用情况的信息, 包括 CPU 和内存的指标。 - Metrics API可以监听K8s集群中每个节点和Pod的CPU和内存使用量。 - 如果将 Metrics API 部署到集群中, 那么 Kubernetes API 的客户端就可以查询这些信息,并且可以使用 Kubernetes 的访问控制机制来管理权限。 ### 1.3 Metrics API 的使用 - HorizontalPodAutoscaler (HPA) 和 VerticalPodAutoscaler (VPA) 使用 metrics API 中的数据调整工作负载副本和资源,以满足客户需求。 - Kubernetes管理员也可以通过 `kubectl top` 命令来查看资源指标。 ### 1.4 资源指标管道架构  图中从右到左的架构组件包括以下内容: - cAdvisor: 用于收集、聚合和公开 Kubelet 中包含的容器指标的守护程序。 - kubelet: 用于管理容器资源的节点代理。 可以使用 /metrics/resource 和 /stats kubelet API 端点访问资源指标。 - Summary API: kubelet 提供的 API,用于发现和检索可通过 /stats 端点获得的每个节点的汇总统计信息。 - metrics-server: 集群插件组件,用于收集和聚合从每个 kubelet 中提取的资源指标。 API 服务器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现。 - Metrics API: Kubernetes API 支持访问用于工作负载自动扩缩的 CPU 和内存。使用Metrics API的前提是部署提供 Metrics API 的 API 扩展服务器。 ## 2\. Metrics Server ### 2.1 什么是 Metrics Server **Kubernetes Metrics Server** (Kubernetes指标服务器),它是一个**可扩展的、高效的容器资源度量源**。 Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. ### 2.2 Metrics Server 的作用 Metrics Server 用于监控每个 Node 和 Pod 的负载(用于Kubernetes内置自动扩缩管道)。Metrics Server从Kubelets 收集资源指标,并通过 Metrics API 在Kubernetes apiserver中公开,供 Horizontal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。Metrics API 也可以通过 `kubectl top` 访问,使其更容易调试自动扩缩管道。 ### 2.3 Metrics Server 特点 - 在大多数集群上只需要部署一个实例。 - 快速自动扩缩,每**15**秒收集一次指标。 - 资源效率高,集群中的每个节点使用1mili 核心 CPU 和 2MB 的内存。 - 可扩展支持高达5000个节点的集群。 ### 2.4 Metrics Server 使用场景 - 水平自动扩缩。基于CPU/内存的水平自动扩缩 - 垂直扩索。自动调整/建议容器所需的资源 以下使用场景是 Metrics Server 不支持的: - 非 Kubernetes 集群 - 需要资源使用指标的准确来源 - 基于 CPU/内存以外的其他资源的水平自动缩放。 对于不受支持的用例,建议使用Prometheus 等完整的监控解决方案。 ## 3\. Metrics Server 和 Metric API 的关系 Metrics Server 实现了 Metrics API。管理员必须部署提供 Metrics API 服务的 metrics-server 或其他适配器才能访问它。 因为 Metrics API 不在默认的Kubernetes API组中,它需要通过如 Metrics Server 添加至K8s集群的API组中,才能使用户通过客户端访问它。 - Metrics API 在 k8s.io/metrics 代码库中定义。管理员必须启用 API 聚合层并为 metrics.k8s.io API 注册一个 APIService,才能让 Metrics API 出现在K8s API组中。 - 配置聚合层可以允许 Kubernetes apiserver 使用其它 API 扩展,这些 API 不是核心 Kubernetes API 的一部分。 Resource Metrics API 由 **metrics-server** 和 **prometheus-adapter** 实现。  ## 4\. 安装 Metrics Server ### 4.1 环境预设 正常运行的,完整的kubernetes集群,包括已经安装好calico网络和coredns。 具体详见:https://github.com/kubernetes-sigs/metrics-server#requirements ### 4.2 部署 Metrics Server 部署metrics server有两种方法: - 使用官方Helm图表(Chart)安装。 - 使用YAML清单安装。 **Chart包和YAML清单下载地址**是:https://github.com/kubernetes-sigs/metrics-server/releases ### (1)使用 Helm #### 1)下载 chart ```shell wget https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.2/metrics-server-3.8.2.tgz ``` #### 2)解压、备份和修改 chart ```shell tar zxvf metrics-server-3.8.2.tgz cd metrics-server cat ci/ci-values.yaml ```  ```shell cp values.yaml values.yaml.bak vim values.yaml ``` 修改内容如下所示 ```shell 6c6 < repository: bitnami/metrics-server --- > repository: k8s.gcr.io/metrics-server/metrics-server 8c8 < tag: "0.6.1" --- > tag: "" 77d76 < - --kubelet-insecure-tls ``` 修改说明: - 官方chart包中的镜像默认是`k8s.gcr.io/metrics-server/metrics-server`,国内无法访问谷歌镜像库,因此需要先到docker hub中找到对应版本的容器镜像,再与之替换即可。 - chart包中默认镜像标签是 v0.6.1,而我们替换的镜像标签是 0.6.1 。 - 访问kubernetes API服务器默认需要kubelet证书,通过向Metrics Server传递 `--kubelet-insecure-tls` 来禁用证书验证。 #### 3)部署 metrics-server 返回到 metrics-server 文件夹的上级目录 ```shell root@k8s-01:~/metrics-server/metrics-server root@k8s-01:~/metrics-server NAME: metrics-server LAST DEPLOYED: Sun Oct 2 18:48:30 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: *********************************************************************** * Metrics Server * *********************************************************************** Chart version: 3.8.2 App version: 0.6.1 Image tag: bitnami/metrics-server:0.6.1 *********************************************************************** ``` #### 4)tips 说明 helm默认安装在default命名空间内。 ### (2)YAML 清单 #### 1)下载、备份和修改 YAML 清单 ```shell wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml cp components.yaml components.yaml.bak 135d134 < - --kubelet-insecure-tls 141c140 < image: bitnami/metrics-server:0.6.1 --- > image: k8s.gcr.io/metrics-server/metrics-server:v0.6.1 ``` 修改解释见使用Helm安装的步骤。 #### 2)部署 metrics-server ```shell kubectl apply -f components.yaml ``` 等待30s 后,metrics-server 部署成功。 #### 3)tips 说明 - 使用 YAML 清单部署的 metrics-server 默认命名空间是 kube-system。 ### 4.3 查看 metrics-server 以及 节点和 Pod 指标值 ```shell kubectl get pod -n kube-system kubectl top node kubectl top pod ```  输出参数: - CPU(cores)下的291m中的 m 表示一个微核心,1核 = 1000核心 - 使用`lscpu`命令查看虚拟机的cpu核心数,发现有两个核心,2核大概为2000m  假如使用`kubectl top nodes`出现下面的现象,可能是因为kubernetes集群网络cacoli的配置的网段和构建集群的网段不一致。 ```shell [root@vm31 ~] NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% vm31 232m 11% 1395Mi 36% vm32 <unknown> <unknown> <unknown> <unknown> vm33 <unknown> <unknown> <unknown> <unknown> ``` ### ## 5\. 参考资料
adouk
2023年2月8日 09:17
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码