Horizontal Pod Autoscaler(缩写为 hpa)基于资源 CPU 利用率自动调整 deployment、replication controller 或者 replica 中 pod 的数量,这有助于您的应用程序进行扩展以满足增长的需求,或在不需要资源时进行缩减,从而释放出节点用于其他应用程序。当您设置目标 CPU 利用率百分比时,HPA 扩展或缩减应用程序来尝试满足该目标。
$ curl -L -o metrics-server.yaml https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml $ kubectl apply -f metrics-server.yaml serviceaccount/metrics-server created clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrole.rbac.authorization.k8s.io/system:metrics-server created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created service/metrics-server created deployment.apps/metrics-server created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
部署后发现pod没有运行成功
1 2 3 4 5 6 7 8 9 10 11 12
$ k get all -n kube-system -l k8s-app=metrics-server NAME READY STATUS RESTARTS AGE pod/metrics-server-867d48dc9c-fgdjq 0/1 Running 0 16s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metrics-server ClusterIP 10.96.91.221 <none> 443/TCP 16s
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/metrics-server 0/1 1 0 16s
NAME DESIRED CURRENT READY AGE replicaset.apps/metrics-server-867d48dc9c 1 1 0 16s
检查日志
1 2 3 4 5
$ k logs deployment.apps/metrics-server -n kube-system ## 输出类似于 E0703 23:02:38.120831 1 scraper.go:149] "Failed to scrape node" err="Get \"https://10.211.55.15:10250/metrics/resource\": tls: failed to verify certificate: x509: cannot validate certificate for 10.211.55.15 because it doesn't contain any IP SANs" node="k8s-worker1" E0703 23:02:38.127774 1 scraper.go:149] "Failed to scrape node" err="Get \"https://10.211.55.16:10250/metrics/resource\": tls: failed to verify certificate: x509: cannot validate certificate for 10.211.55.16 because it doesn't contain any IP SANs" node="k8s-worker2" E0703 23:02:38.140583 1 scraper.go:149] "Failed to scrape node" err="Get \"https://10.211.55.11:10250/metrics/resource\": tls: failed to verify certificate: x509: cannot validate certificate for 10.211.55.11 because it doesn't contain any IP SANs" node="k8s-master"
意思是 metrics-server 在通过 https://:10250 请求 kubelet 的时候,发现 kubelet 的证书不包含该 IP 的 Subject Alternative Name (SAN),因此 TLS 校验失败。