Docker Kubernetes(Mac)-自动定标器无法找到指标

px9o7tmv  于 2023-03-07  发布在  Kubernetes
关注(0)|答案(7)|浏览(132)

我已经通过Docker在Mac上安装了Kubernetes的本地示例。
按照walkthrough关于如何在部署上激活自动缩放的说明,我遇到了一个问题。自动缩放器无法读取指标。
当我运行kubectl describe hpa时,当前CPU使用率返回为unknown/50%,并显示警告:
警告获取资源度量失败:horizontal-pod-autoscaler无法获取资源cpu的度量:无法从API中提取指标:服务器无法找到请求的资源(http:///www.example.com)pods.metrics.k8s.io)
警告失败ComputeMetricsReplicas horizontal-pod-autoscaler无法获取CPU利用率:无法获取资源cpu的度量:无法从API中提取指标:服务器无法找到请求的资源(http:///www.example.com)pods.metrics.k8s.io)
我已经通过git clone https://github.com/kubernetes-incubator/metrics-server.git安装了metrics-server,并使用kubectl create -f deploy/1.8+安装了它

pvcm50d1

pvcm50d11#

我终于让它工作了。。以下是我让它工作的完整步骤:
1.在Docker中运行Kubernetes
1.使用kubectl delete -n kube-system deployments.apps metrics-server从您的Kubernetes示例中删除所有以前的metrics-server示例
1.克隆指标-git clone https://github.com/kubernetes-incubator/metrics-server.git的服务器
1.编辑文件deploy/1.8 +/metrics-server-deploy. yaml,通过添加以前不存在的command部分覆盖默认命令。新部分将指示metrics-server允许不安全的通信会话(不验证涉及的证书)。仅对Docker执行此操作,而不对metrics-server的生产部署执行此操作:

containers:
- name: metrics-server
    image: k8s.gcr.io/metrics-server-amd64:v0.3.1
    command:
      - /metrics-server
      - --kubelet-insecure-tls

1.使用kubectl create -f deploy/1.8+将metrics-server添加到您的Kubernetes示例(如果. yaml错误,请改为:kubectl apply -f deploy/1.8+
1.删除自动缩放器并再次将其添加到部署中。现在它应该显示当前的cpu使用情况。

    • 编辑日期:2020年7月**

除了metrics-server已更改且该文件不再存在之外,上述大多数步骤都适用。
repo现在建议如下安装:

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

现在我们可以下载这个文件,

curl -L https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml --output components.yaml

args(L88)下的--kubelet-insecure-tls添加到metrics-server部署并运行

kubectl apply -f components.yaml
6fe3ivhb

6fe3ivhb2#

对于使用Internal-IP的人,这里可能对你有用。按照上面的@乌龟先生的步骤4。添加更多的一个命令。

containers:
  - name: metrics-server
    image: k8s.gcr.io/metrics-server-amd64:v0.3.3
    command:
      - /metrics-server
      - --kubelet-insecure-tls
      - --kubelet-preferred-address-types=InternalIP
afdcj2ne

afdcj2ne3#

我们升级到AWS EKS版本1.13.7,这是当我们开始有问题的HPA,原来在我的部署,我必须指定一个值为resources.requests.cpu=200m和HPA开始为我工作。

a1o7rhls

a1o7rhls4#

在使用我的kubernetes kubeadm实验室时出现了相同的问题,更新的程序在这里https://github.com/kubernetes-sigs/metrics-server
这解决了问题:horizontal-pod-autoscaler无法获取资源cpu的度量:无法从资源度量API提取度量:服务器无法找到请求的资源(http:///www.example.com)pods.metrics.k8s.io)

xuo3flqw

xuo3flqw5#

如果有人仍然有问题修复这个问题,这帮助我修复它的minikube:
我有2个部署具有相同的标签,如下所示:

kind: Deployment
metadata:
  name: webserver
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web

---

kind: Deployment
metadata:
  name: database
spec:
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web

我重命名了数据库的标签和matchLabel(例如,重命名为app:db),然后删除这两个部署并应用新的配置- et voilà它的工作.(经过几个小时的尝试解决问题..)
关于此问题的更多信息:https://github.com/kubernetes/kubernetes/issues/79365

b91juud3

b91juud36#

我已经部署在EKS上,我面临着同样的问题。

muhasan@admins-MacBook-Pro devops % kubectl get hpa
NAME                     REFERENCE                           TARGETS                         MINPODS   MAXPODS   REPLICAS   AGE
backend-iam-deployment   Deployment/backend-iam-deployment   36278272/100Mi, <unknown>/50%   1         10        1          10m

在我的部署中,我只是指定了资源,这有助于我运行HPA

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-iam-deployment
  labels:
    app: backend-iam-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend-iam-deployment
  template:
    metadata:
      labels:
        app: backend-iam-deployment
    spec:
      containers:
      - name: backend-iam-deployment
        image: <imagename>
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
        startupProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 10 
          failureThreshold: 30
          periodSeconds: 10
        livenessProbe:
          httpGet:
            path: /health
            port: 80
          initialDelaySeconds: 60
          periodSeconds: 10
          timeoutSeconds: 10
          failureThreshold: 5
      imagePullSecrets:
      - name: us-east-1-ecr-registry

在对我的部署应用资源限制后,HPA开始为我工作。

muhasan@admins-MacBook-Pro fx.identitymanagement % kubectl get hpa
NAME                     REFERENCE                           TARGETS                  MINPODS   MAXPODS   REPLICAS   AGE
backend-iam-deployment   Deployment/backend-iam-deployment   23216128/100Mi, 1%/50%   1         10        1          24m
qacovj5a

qacovj5a7#

在我的例子中,metrics-server的唯一部署适用于hpa,这是我与您分享的,我尝试了它与docker-desktop
this is a modification of a solution i found, which i shared for another repo

相关问题