K8S安装metrics-server

news2024/10/6 8:33:08

K8S安装metrics-server

使用kubeadm安装完成的集群,运行kubectl top node等命令式,报错:error: Metrics API not available。这是因为缺少metrics-server。

[root@k8s-master1 ~]# kubectl top node
error: Metrics API not available

简介

于 Kubernetes,Metrics API 提供了一组基本的指标,以支持自动伸缩和类似的用例。 该 API 提供有关节点和 Pod 的资源使用情况的信息, 包括 CPU 和内存的指标。如果将 Metrics API 部署到集群中, 那么 Kubernetes API 的客户端就可以查询这些信息,并且可以使用 Kubernetes 的访问控制机制来管理权限。

HorizontalPodAutoscaler (HPA) 和 VerticalPodAutoscaler (VPA) 使用 metrics API 中的数据调整工作负载副本和资源,以满足客户需求。

你也可以通过 kubectl top 命令来查看资源指标。

说明:

Metrics API 及其启用的指标管道仅提供最少的 CPU 和内存指标,以启用使用 HPA 和/或 VPA 的自动扩展。 如果你想提供更完整的指标集,你可以通过部署使用 CustomMetrics API 的第二个指标管道来作为简单的 Metrics API 的补充。

资源指标管道架构

在这里插入图片描述

  • cAdvisor: 用于收集、聚合和公开 Kubelet 中包含的容器指标的守护程序。

  • kubelet: 用于管理容器资源的节点代理。 可以使用 /metrics/resource 和 /stats kubelet API 端点访问资源指标。

  • 节点层面资源指标: kubelet 提供的 API,用于发现和检索可通过 /metrics/resource 端点获得的每个节点的汇总统计信息。

  • metrics-server: 集群插件组件,用于收集和聚合从每个 kubelet 中提取的资源指标。 API 服务器提供 Metrics API 以供 HPA、VPA 和 kubectl top 命令使用。Metrics Server 是 Metrics API 的参考实现。

  • Metrics API: Kubernetes API 支持访问用于工作负载自动缩放的 CPU 和内存。 要在你的集群中进行这项工作,你需要一个提供 Metrics API 的 API 扩展服务器。

Metrics API

metrics-server 实现了 Metrics API。此 API 允许你访问集群中节点和 Pod 的 CPU 和内存使用情况。 它的主要作用是将资源使用指标提供给 K8s 自动缩放器组件。

下面是一个 minikube 节点的 Metrics API 请求示例,通过 jq 管道处理以便于阅读:

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes/minikube" | jq '.'

这是使用 curl 来执行的相同 API 调用:

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes/minikube

下面是一个 kube-system 命名空间中的 kube-scheduler-minikube Pod 的 Metrics API 请求示例, 通过 jq 管道处理以便于阅读:

kubectl get --raw "/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube" | jq '.'

这是使用 curl 来完成的相同 API 调用:

curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/namespaces/kube-system/pods/kube-scheduler-minikube

Metrics API 在 k8s.io/metrics 代码库中定义。

兼容性矩阵

Metrics ServerMetrics API group/versionSupported Kubernetes version
0.7.xmetrics.k8s.io/v1beta11.19+
0.6.xmetrics.k8s.io/v1beta11.19+
0.5.xmetrics.k8s.io/v1beta11.8+
0.4.xmetrics.k8s.io/v1beta11.8+
0.3.xmetrics.k8s.io/v1beta11.8-1.21

备注:

低于 v1.16 的Kubernetes 需要增加 --authorization-always-allow-paths=/livez,/readyz 命令行参数。

部署metrics-server

metrics-server支持YAML和helm chart两种类型的安装。支持单副本和高可用两种安装方式。

单副本安装:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

高可用安装:高可用安装要求至少有两个node节点用于调度。

Kubernetes v1.21+:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

Kubernetes v1.19-1.21:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml

本文使用的k8s版本为1.27.6,使用YAML进行安装,选用0.7.0版本,安装高可用方案:

[root@k8s-master1 ~]# kubectl get node
NAME          STATUS   ROLES           AGE     VERSION
k8s-master1   Ready    control-plane   3d20h   v1.27.6
k8s-node1     Ready    <none>          3d20h   v1.27.6
k8s-node2     Ready    <none>          3d20h   v1.27.6

# 下载yaml文件
[root@k8s-master1 ~]# mkdir metrics-server
[root@k8s-master1 ~]# cd metrics-server/
[root@k8s-master1 metrics-server]#  wget curl https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.1/high-availability-1.21+.yaml

# 修改yaml文件, args增加参数`- --kubelet-insecure-tls`, 同时镜像指向阿里云仓库
[root@k8s-master1 metrics-server]# vi high-availability-1.21+.yaml

      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=10250
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        - --kubelet-insecure-tls
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.7.1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3

# 部署metric-server
[root@k8s-master1 metrics-server]# kubectl apply -f high-availability-1.21+.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
poddisruptionbudget.policy/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

# 查看部署的容器
[root@k8s-master1 metrics-server]# kubectl get pod -n kube-system
NAME                                  READY   STATUS    RESTARTS        AGE
coredns-7bdc4cb885-bqtks              1/1     Running   2 (3d20h ago)   3d20h
coredns-7bdc4cb885-mzldj              1/1     Running   2 (3d20h ago)   3d20h
etcd-k8s-master1                      1/1     Running   3 (3d20h ago)   3d20h
kube-apiserver-k8s-master1            1/1     Running   2 (3d20h ago)   3d20h
kube-controller-manager-k8s-master1   1/1     Running   2 (3d20h ago)   3d20h
kube-proxy-89x7n                      1/1     Running   2 (3d20h ago)   3d20h
kube-proxy-mcjr2                      1/1     Running   2 (3d20h ago)   3d20h
kube-proxy-msv6d                      1/1     Running   2 (3d20h ago)   3d20h
kube-scheduler-k8s-master1            1/1     Running   2 (3d20h ago)   3d20h
metrics-server-7b7569c7d6-mgt2d       1/1     Running   0               82s
metrics-server-7b7569c7d6-zv57w       1/1     Running   0               82s

# 验证获取资源信息
[root@k8s-master1 metrics-server]# kubectl top node
NAME          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
k8s-master1   120m         3%     2670Mi          34%
k8s-node1     676m         16%    9295Mi          120%
k8s-node2     655m         16%    9280Mi          120%

helm chart安装可参考:https://artifacthub.io/packages/helm/metrics-server/metrics-server

参考资料

官网文档:https://kubernetes.io/zh-cn/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/

hub.io/packages/helm/metrics-server/metrics-server>

参考资料

官网文档:https://kubernetes.io/zh-cn/docs/tasks/debug/debug-cluster/resource-metrics-pipeline/

官网github:https://github.com/kubernetes-sigs/metrics-server#installation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s集群搭建及对一些组件的简单理解

背景 k8s的学习环境&#xff08;用kubeadm方式搭建&#xff09;&#xff0c;我也搭过几次了&#xff0c;但都有点问题。 要么在云服务器上弄&#xff0c;这个的问题是就只有一台轻量服务器&#xff0c;只能搭个单节点的&#xff1b;后来买了一台便宜的&#xff0c;所以就有了两…

SpringBoot使用滑动窗口限流防止用户重复提交(自定义注解实现)

在你的项目中&#xff0c;有没有遇到用户重复提交的场景&#xff0c;即当用户因为网络延迟等情况把已经提交过一次的东西再次进行了提价&#xff0c;本篇文章将向各位介绍使用滑动窗口限流的方式来防止用户重复提交&#xff0c;并通过我们的自定义注解来进行封装功能。 首先&a…

网络基础-协议

一、ARP 通过IP得到Mac 首先会查看缓存的arp表中是否有相应的IP和Mac对应关系&#xff0c;如果有直接进行包封装。如果没有则进行广播当对应的地址就收到广播包后会根据arp中的源地址进行单播返回相应的IP和Mac对应关系。 arp -a 查看现有的arp缓存 二、RARP反向地址解析 通过…

git上传本地项目及更新项目

1、注册GitHub账号和下载git 2、在GitHub上新建一个仓库&#xff0c;点击号——>New repository&#xff0c;给仓库起一个名字&#xff0c;点击Create repository 3、进入要上传的项目中&#xff0c;右键点击git back here&#xff0c;命令行输入git init初始化&#xff0c…

《Nest系列 - 3. 掌握常见Nest 装饰器,奠定坚实基础!!!!!!》

nest 一个核心就是依赖注入&#xff0c;而中的大部分功能都是通过装饰器来实现的&#xff0c;那什么是装饰器呢&#xff1f; 就是一个 xxx &#xff0c;诸如 Module&#xff0c;controller, Get, Post 那这样有什么好处呢&#xff1f; 可以把他理解成一个方法&#xff0c;在不改…

精密机械中的滚珠螺杆与螺杆支撑座的完美配合!

螺杆支撑座和滚珠螺杆是机械设备中的重要部件。滚珠螺杆通常运用在自动化设备中&#xff0c;需高速运动、高精度定位均依靠它的优良性能&#xff0c;如机床&#xff0c;数控、工业机器人等机械设备。螺杆支撑座装在螺杆的两端&#xff0c;支撑座有两端&#xff0c;固定端和支撑…

SpringBoot的迭代史,SpringBoot和Spring和Java和Maven和Gradle版本兼容介绍

文章目录 系统环境要求&#xff1a;Spring Boot 3.1.xSpring Boot 3.0.xSpring Boot 2.7.xSpring Boot 2.6.xSpring Boot 2.5.xSpring Boot 2.4.xSpring Boot 2.3.xSpring Boot 2.2.xSpring Boot 2.1.xSpring Boot 2.0.xSpring Boot 1.5.xSpring Boot 1.4.xSpring Boot 1.3.xSp…

代码随想录训练营Day 69|并查集理论基础、卡码网107.寻找存在的路径

1.并查集理论基础 并查集理论基础 | 代码随想录 并查集可以解决什么问题呢&#xff1f; 主要就是集合问题&#xff0c;两个节点在不在一个集合&#xff0c;也可以将两个节点添加到一个集合中。 注意&#xff1a;求根是求箭头出发的数 路径压缩&#xff1a;求根的根。把根的根的…

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024)

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议&#xff08;ICIGSRST 2024&#xff09; 2024 International Conference on Image, Geological Surveying and Remote Sensing Technology&#xff08;ICIGSRST 2024&#xff09; ▶会议简介 2024年图像、地质…

大学生综合能力测评系统(安装+讲解+源码)

【毕设者】大学生综合能力测评系统(安装讲解源码) 分为管理员老师学生端 技术栈 后端: SpringBoot Mysql MybatisPlus 前端: Vue Element 功能截图: 给你安装运行

图片在线加水印工具,快速将图片铺满水印

有些同学为了防止图片未经授权的使用和传播&#xff0c;想要将图片添加铺满水印&#xff0c;但是不知道如何操作。下面小编就来和大家分享如何使用图片在线加水印工具&#xff0c;快速的将图片铺满水印。 有许多在线工具可以帮助我们快速、高效地给图片添加水印。在线添加水印&…

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接&#xff1a; ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 一进来就是这么简单整洁的页面&#xff0c;让人看了之后清新开朗&#xff0c;目标明确。 我们这款onlyoffice有着众多优点&#xff0c;如…

HTML5休闲小游戏《猫猫超市》源码,引流、刷广告利器

HTML5休闲小游戏《猫猫超市》源码&#xff0c;直接把源码上传到服务器就能使用了&#xff01; 下载链接&#xff1a;https://www.huzhan.com/code/goods467910.html

VMware虚拟机卡顿(虚拟机卡死)(调整所有虚拟机内存使其适应预留的主机 RAM (F)、默认进程优先级、不允许使用内存页面修整功能(M))

文章目录 设置编辑——首选项——内存——额外内存——调整所有虚拟机内存使其适应预留的主机 RAM (F)&#xff08;我把这个勾上了&#xff09;编辑——首选项——优先级——默认进程优先级虚拟机——设置——选项——高级——不允许使用内存页面修整功能(M) 参考文章&#xff…

Perplexily首席执行官Aravind Srinivas斯里尼·瓦斯回应抄袭和侵权指控

Perplexity的“答案引擎”工作原理是收集网络上的海量信息&#xff0c;构建一个庞大的内容数据库&#xff08;索引&#xff09;。用户无需输入关键字&#xff0c;只需在Perplexity的平台或应用中提问&#xff0c;就能获得包含引文及网络内容链接的详细回答。 网站通过“机器人…

线性代数|机器学习-P18快速下降奇异值

文章目录 1. 为什么要低秩矩阵 1. 为什么要低秩矩阵 我们的世界里面有很多数据&#xff0c;如果我们原封不动的发送数据&#xff0c;那么会导致数据量的增大&#xff0c;我们希望对数据进行压缩后再打包压缩&#xff0c;这样的话我们能够在带宽一定的情况下发送更多的数据&…

代码随想录算法训练营第三十三天|452. 用最少数量的箭引爆气球、 435. 无重叠区间、 763.划分字母区间

452. 用最少数量的箭引爆气球 题目链接&#xff1a;452. 用最少数量的箭引爆气球 文档讲解&#xff1a;代码随想录 状态&#xff1a;没想出来 思路&#xff1a;对气球终点位置排序&#xff0c;从第一个气球终点位置射出箭&#xff0c;看这支箭可以尽可能穿过几个气球&#xff0…

Snowflake 外部表的最新增强功能:您需要了解的内容

自从我们上一篇关于如何使用 MinIO 扩展 Snowflake 实现的博客文章以来&#xff0c;Snowflake 对外部表的支持已经发生了重大更新。外部表允许 Snowflake 用户将对象存储&#xff08;如 MinIO&#xff09;中的数据视为 Snowflake 中的只读表&#xff0c;而无需迁移。Snowflake …

制造业工厂急需一套erp系统帮他降本增效

随着全球制造业竞争的日益激烈&#xff0c;制造业工厂面临着越来越多的挑战&#xff0c;包括成本控制、生产效率、市场响应速度等方面。在这样的背景下&#xff0c;一套高效的ERP&#xff08;企业资源规划&#xff09;系统成为了制造业工厂降本增效的必备工具。本文将探讨ERP系…

视频融合共享平台LntonCVS视频监控平台在农场果园等场景的使用方案

我国大江南北遍布着各类果园。传统的安全防范方式主要是建立围墙&#xff0c;但这种方式难以彻底阻挡不法分子的入侵和破坏。因此&#xff0c;需要一套先进、科学、实用且稳定的安全防范报警系统&#xff0c;以及时发现并处理潜在问题。 需求分析 由于果园地处偏远且缺乏有效防…