3

我正在尝试通过分别运行这两个命令来自动扩展部署和状态集:

kubectl autoscale statefulset mysql --cpu-percent=50 --min=1 --max=10
kubectl expose deployment frontend --type=LoadBalancer --name=frontend

可悲的是,在 minikube 仪表板上,这两个服务下都出现了这个错误:

failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)

在线搜索我读到这可能是一个 dns 错误,所以我检查了但 CoreDNS 似乎运行良好。两种工作负载都没有什么特别之处,这是“前端”部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  labels:
    app: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - name: frontend
        image: hubuser/repo
        ports:
        - containerPort: 3000

有没有人有任何建议?

4

1 回答 1

0

首先,您能否验证一下 API 是否工作正常?为此,请运行kubectl get --raw /apis/metrics.k8s.io/v1beta1.

如果您收到类似于以下内容的错误:

“<code>来自服务器的错误(未找到):”</p>

请按照以下步骤操作:

1.- 从 kube-apiserver 清单中删除所有代理环境变量。

2.- 在 kube-controller-manager-amd64 中,设置--horizontal-pod-autoscaler-use-rest-clients=false

3.- 最后一种情况是您的 metric-server 插件默认禁用。您可以使用以下方法进行验证:

$ minikube 插件列表

如果它被禁用,您将看到类似metrics-server: disabled.

您可以使用以下方法启用它:

$minikube addons enable metrics-server

完成后,删除并重新创建您的 HPA。

您可以使用以下线程作为参考。

于 2022-01-25T19:33:54.717 回答