关于此主题的问题很多,我尝试了很多东西,但仍然无法正常工作。
我是Kubernetes的新手。我有一个Kubernetes群集,其中包含2个节点(1个PC,1个其他PC上的VM),1个主节点,1个节点。我启动了一个网站(Docker Image),并且Pod在Node(不是master)上运行。现在我想自动缩放Pod,这就是我所做的:
--request='cpu=50m'
设置到广告连播kubectl autoscale deployment testwebsite --min=1 --max=4 --cpu-percent=25
kubectl get hpa -w
现在有一个问题,输出显示为当前值。
我读了很多书,就像我一样,我必须将请求分配给Pod。通过kubectl get pod testwebsite --out=yaml
我还创建了指标服务器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
答案 0 :(得分:0)
您确定kubernetes指标服务器和指标api正在运行吗?首先需要使用它来检查cpu的使用情况和限制
您可以从部署中删除LIMITS(如果有),然后尝试一下。
答案 1 :(得分:0)
问题不在于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
:跳过验证Kubelet CA证书的步骤。不建议用于生产环境,但在测试集群中很有用 带有自签名的Kubelet服务证书。
在更新部署并且指标服务器抓取指标后,您应该会看到HPA已更新为当前目标。默认刮擦间隔为60s,您可以通过在上面的--metric-resolution=10s
<-设置为10s的间隔中添加以下标志来更改它。