Kubernetes 自动缩放不起作用 - 显示未知

Kubernetes autoscaling not working - showing unkown

关于这个主题有很多问题,我尝试了很多东西,但仍然没有用。

我是 Kubernetes 的新手。我有一个 Kubernetes 集群,有 2 个节点(1 台 PC,1 个 VM 在另一台 PC 上),1 个主节点,1 个节点。我创建了一个网站(Docker 图片),Pod 在节点(不是主节点)上 运行。现在我想自动缩放 Pod,这就是我所做的:

  1. 设置--request='cpu=50m'到广告连播
  2. 已创建 hpa:kubectl autoscale deployment testwebsite --min=1 --max=4 --cpu-percent=25
  3. 已用:kubectl get hpa -w

现在出现了输出显示为当前值的问题。 我读了很多,我必须像我一样将请求分配给 pod。通过以下方式检查:kubectl get pod testwebsite --out=yaml

我还创建了 metrics-server 版本 1.8+。通过以下方式确保它是 运行:kubectl get pods --all-namespaces

之后我尝试调试 HPA 并通过以下方式对其进行了调查:

kubectl describe hpa testwebsite

这让我看到了这个:

Name:                                                  testwebsite
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Thu, 04 Apr 2019 14:08:57 +0200
Reference:                                             Deployment/testwebsite
Metrics:                                               ( current / target )   resource cpu on pods  (as a percentage of request):  <unknown> / 25%
Min replicas:                                          1
Max replicas:                                          4
Deployment pods:                                       1 current / 0 desired
Conditions:
  Type           Status  Reason                   Message
  ----           ------  ------                   -------
 AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
 ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Events:
  Type     Reason                        Age                   From                       Message
  ----     ------                        ----                  ----                       -------
  Warning  FailedComputeMetricsReplicas  7m24s (x12 over 10m)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
  Warning  FailedGetResourceMetric       5s (x41 over 10m)     horizontal-pod-autoscaler  unable to get metrics for resource cpu: no metrics returned from resource metrics API

10 多分钟后,它没有显示当前值,即使 cpu 有 50-100% 的使用率,它也不会放大。

正如我所说,我是 Kubernetes 的新手,我真的希望有人能帮助我。

此致,

Nico 又名 Myridor

编辑: 在两个节点上使用 Ubuntu 18.04 LTS | Kubernetes 版本:1.14.0

您确定 kubernetes 指标服务器和指标 api 是 运行 吗?这首先是必要的,它用于检查 cpu 用法和限制

您可以从部署中删除 LIMITS(如果有的话)并尝试。

问题不在 HPS 本身,而是在无法抓取指标的指标服务器中。

我通过克隆 metrics-server git 重现了这个问题,然后通过 kubectl create -f deploy/1.8+/ 创建了它。

接下来我通过 运行 编辑了指标服务器部署:kubectl edit deployment metrics-server -n kube-system

spec: -> containers: 下添加以下标志:

spec:
      containers:
      - command:
        - /metrics-server
        - --kubelet-insecure-tls

git所述:

--kubelet-insecure-tls: skip verifying Kubelet CA certificates. Not recommended for production usage, but can be useful in test clusters with self-signed Kubelet serving certificates.

在更新部署并且指标服务器抓取指标后,您应该会看到 HPA 更新了当前目标。默认抓取间隔为 60 秒,您可以通过在上面添加以下标志来更改它 --metric-resolution=10s <- 间隔设置为 10 秒。