[英]How to troubleshoot metrics-server on kubeadm?
我有一個在裸機上使用 kubeadm 的 1.15.1 kubenetes 集群,並且剛剛部署了 metrics-server,如文檔中所示:
git clone https://github.com/kubernetes-incubator/metrics-server.git
kubectl create -f metrics-server/deploy/1.8+/
一段時間后,我嘗試kubectl top node
並得到響應:
錯誤:指標尚不可用
此外,當我嘗試kubectl top pods
我得到:
W0721 20:01:31.786615 21232 top_pod.go:266] 指標不適用於 pod 默認/pod-deployment-57b99df6b4-khh84,年齡:27h31m59.78660593s 錯誤:指標默認值/pod-deployment-57b99df6b4-khh84,錯誤:Metrics/pod-deployment-57b99df6b4-khh84s 不可用年齡:27h31m59.78660593s
我檢查了度量服務器的 pod 和服務,它們都運行良好。 我應該在哪里嘗試查看問題?
像 Subramanian Manickam 的回答一樣編輯 metric-server 部署,您也可以使用
$ kubectl edit deploy -n kube-system metrics-server
這將打開一個帶有部署 yaml 文件的文本編輯器,您可以在其中進行以下更改:
在spec.template.spec.containers 下,與name: metrics-server
處於同一級別name: metrics-server
add
args:
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --metric-resolution=30s
然后在與containers
相同級別的spec.template.spec下,我還必須添加:
hostNetwork: true
修復與 CNI 一起工作的度量服務器(在我的情況下為 calico)。
之后,您的部署 yaml 應如下所示:
[...]
spec:
[...]
template:
metadata:
creationTimestamp: null
labels:
k8s-app: metrics-server
name: metrics-server
spec:
containers:
- args:
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-insecure-tls
- --metric-resolution=30s
image: k8s.gcr.io/metrics-server-amd64:v0.3.3
imagePullPolicy: Always
name: metrics-server
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /tmp
name: tmp-dir
dnsPolicy: ClusterFirst
hostNetwork: true
[...]
之后, kubectl top pods
大約需要kubectl top pods
才能返回一些數據。
您必須在metrics-server-deployment.yaml文件的第 33 行之后添加此命令部分。
command:
- /metrics-server
- --kubelet-preferred-address-types=InternalIP
- --kubelet-insecure-tls
更新文件后,您必須重新部署 pod。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.