Kubernetes遇到error: Metrics API not available

这篇具有很好参考价值的文章主要介绍了Kubernetes遇到error: Metrics API not available。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kubernetes集群遇到“error: Metrics API not available”

导致这个问题原因是没有安装Metrics Server,接下来我会介绍Metrics Server在集群中的作用以及官方网站的解释。如果想直接解决报错可以看“解决“error: Metrics API not available”报错”章节。

1.Metrics Server作用理解

Kubernetes官网链接
Kubernetes Metrics Server是一个Kubernetes集群组件,它收集Kubernetes中各个对象(如节点、Pod、容器等)的度量指标数据,然后聚合和存储这些数据,以便其他Kubernetes组件和工具可以使用这些数据进行监控和调整。

Metrics Server采用了Kubernetes Metrics API的标准,它使用HTTP接口来暴露度量指标数据,并且通过轮询方式收集这些数据,然后将其存储在内存中。

通过Kubernetes Metrics API,可以获取各种度量指标数据,如CPU利用率、内存使用率、网络I/O、磁盘I/O等。这些指标可以帮助用户了解Kubernetes集群中各个对象的健康状态,帮助用户进行故障排查和性能优化。

Metrics Server对于Kubernetes集群的正常运行非常重要。如果Metrics Server未正常运行,将无法监测集群中各个对象的状态和性能,也将无法使用一些基于Metrics API的工具和组件,如Horizontal Pod Autoscaler (HPA)等。

在Kubernetes集群中,默认情况下并不包含Metrics Server组件,需要手动安装和配置。安装和配置Metrics Server的方法和流程因Kubernetes版本和环境而异。通常,可以使用Kubernetes官方提供的yaml文件进行安装,或者使用一些第三方的工具和插件进行安装和配置。

2.解决“error: Metrics API not available”报错

官方解决方案
官方的方案中包含了两种类型的Metrics Server安装
a.常规安装单副本Metrics Server
b.多副本高可用安装Metrics Server
以下介绍单副本安装方式

#下载yaml文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

#修改yaml文件中的部分内容
vi components.yaml
#需要修改的内容包括Deployment下spec.template.spec.containers.args内添加“- --kubelet-insecure-tls”
#Deployment下spec.template.spec.containers.image修改为“image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3”

#直接定位到“containers”位点
    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/google_containers/metrics-server:v0.6.3 #修改为国内镜像仓库地址

如果Kubernetes集群版本1.19+,可以直接使用以下yaml文件部署

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
    rbac.authorization.k8s.io/aggregate-to-admin: "true"
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
    rbac.authorization.k8s.io/aggregate-to-view: "true"
  name: system:aggregated-metrics-reader
rules:
- apiGroups:
  - metrics.k8s.io
  resources:
  - pods
  - nodes
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    k8s-app: metrics-server
  name: system:metrics-server
rules:
- apiGroups:
  - ""
  resources:
  - nodes/metrics
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - pods
  - nodes
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server-auth-reader
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server:system:auth-delegator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:auth-delegator
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: metrics-server
  name: system:metrics-server
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:metrics-server
subjects:
- kind: ServiceAccount
  name: metrics-server
  namespace: kube-system
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    k8s-app: metrics-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  strategy:
    rollingUpdate:
      maxUnavailable: 0
  template:
    metadata:
      labels:
        k8s-app: metrics-server
    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/google_containers/metrics-server:v0.6.3
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /livez
            port: https
            scheme: HTTPS
          periodSeconds: 10
        name: metrics-server
        ports:
        - containerPort: 4443
          name: https
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readyz
            port: https
            scheme: HTTPS
          initialDelaySeconds: 20
          periodSeconds: 10
        resources:
          requests:
            cpu: 100m
            memory: 200Mi
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          runAsNonRoot: true
          runAsUser: 1000
        volumeMounts:
        - mountPath: /tmp
          name: tmp-dir
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: system-cluster-critical
      serviceAccountName: metrics-server
      volumes:
      - emptyDir: {}
        name: tmp-dir
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
  labels:
    k8s-app: metrics-server
  name: v1beta1.metrics.k8s.io
spec:
  group: metrics.k8s.io
  groupPriorityMinimum: 100
  insecureSkipTLSVerify: true
  service:
    name: metrics-server
    namespace: kube-system
  version: v1beta1
  versionPriority: 100

完结撒花!!!文章来源地址https://www.toymoban.com/news/detail-501732.html

到了这里,关于Kubernetes遇到error: Metrics API not available的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kibana 启动报错 Error: listen EADDRNOTAVAIL: address not available 11.11.11.11:5601

    下载kibana链接 Past Releases of Elastic Stack Software | Elastic  选择与 Elasticsearch 版本对应的kibana,解压文件 1.修改config/kibana.yml          server.port : 5601 (默认端口)         server.host: 11.11.11.11(服务器ip地址)         elasticsearch.hosts: [http://11.11.11.11:9200]  服务器ip与ES对应的端口号

    2023年04月08日
    浏览(39)
  • Keil5遇到:*** Target ‘xxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.

    这个原因是Compiler Version 5编译器在Keil 5.37以后就不再默认安装了 从这个版本开始,Keil 默认安装的是 Compiler Version 6.18,如下图 图1 版本信息 方式1.         点击锤子图标,然后在 Target一栏选择:Version 6 (或6.18)的编译器,点击Ok退出。重新编译就可以了。 / 图2 锤子(

    2024年02月12日
    浏览(40)
  • RocketMQ发送消息失败:error CODE: 14 DESC: service not available now, maybe disk full

    在执行业务时,发现MQ控制台没有查询到消息,在日志中发现消息发送失败,报错 error CODE: 14 DESC: service not available now, maybe disk full 分析报错应该是磁盘空间不足,导致broker不能进行正常的消息存储刷盘,去查看服务器磁盘使用情况 发现磁盘使用已经达到98%,因此,可以考虑

    2024年02月13日
    浏览(33)
  • Docker: Error response from daemon: Ports are not available 端口没被占用,却显示被占用

    今天在Windows下用Docker跑个RocketMQ,启动的时候报错,说端口占用,但其实并没有占用。 docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:10911 - 0.0.0.0:0: listen tcp 0.0.0.0:10911: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 看错误信息说是端

    2024年02月11日
    浏览(59)
  • (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3307 -> 0.0.0.0:0:

    windows  docker容器启动MySQL时报: (HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3307 - 0.0.0.0:0: listen tcp 0.0.0.0:3307: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 解决办法: 管理员权限运行cmd 执行这两行命令,说白了就是重启一下 winnat 到此

    2024年04月23日
    浏览(37)
  • 遇到错误:Error response from daemon: network xxxx not found解决方案

    遇到启动的服务网络错误时: 网络丢失,或是操作不当导致。 可以尝试以下解决方案: 1、检查现有可用的网络: 2、绑定网络: 3、启动 4、可能存在问题,已绑定一个不可用的网络如【mynet】,需要解绑  

    2024年02月11日
    浏览(51)
  • [kubernetes]安装metrics-server

    metrics server为Kubernetes自动伸缩提供一个容器资源度量源。metrics-server 从 kubelet 中获取资源指标,并通过 Metrics API 在 Kubernetes API 服务器中公开它们,以供 HPA 和 VPA 使用。 之前已经用k8s的二进制文件搭建了一套集群环境,搭建步骤见:二进制部署k8s集群-基于containerd。现需要在

    2024年02月10日
    浏览(32)
  • Kubeadm初始化遇到的坑:[ERROR CRI]: container runtime is not running:

    运行 kubeadm init --config kubeadm.yaml 完整报错如下: 解决: 注意:kubernetes 1.24+版本之后,docker必须要加装cir-docker 安装 cri-dockerd Kubernetes使用 需要追加–network-plugin=cni,通过该配置告诉容器,使用kubernetes的网络接口。

    2024年02月12日
    浏览(47)
  • Kubernetes核心指标监控——Metrics Server详解

    从Kubernetes v1.8 开始,资源使用情况的监控可以通过 Metrics API的形式获取,例如容器CPU和内存使用率。这些度量可以由用户直接访问(例如,通过使用kubectl top命令),或者由集群中的控制器(例如,Horizontal Pod Autoscaler)使用来进行决策,具体的组件为Metrics Server,用来替换之

    2024年01月18日
    浏览(61)
  • vite配置别名时遇到错误Error: Dynamic require of “path“ is not supported

    vite项目中出现的错误Error: Dynamic require of “path” is not supported 因为vite中没有不支持 require() 将 require() 改成 import xxx

    2024年01月21日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包