How to troubleshoot metrics-server on kubeadm? How to troubleshoot metrics-server on kubeadm? kubernetes kubernetes

How to troubleshoot metrics-server on kubeadm?


Edit the metric-server deployment like Subramanian Manickam's answer said, you can also do it with

$ kubectl edit deploy -n kube-system metrics-server

That will open a text editor with the deployment yaml-file where you can make the following changes:

Under spec.template.spec.containers, on the same level as name: metrics-server add

args:- --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname- --metric-resolution=30s

and then under spec.template.spec at the same level as containers I also had to add:

hostNetwork: true

to fix the metrics-server working with the CNI (calico in my case).

Afterwards your deployment yaml should look something like this:

[...]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[...]

After that it took about 10-15s for kubectl top pods to return some data.


You have to add this command section after line number #33 on metrics-server-deployment.yaml file.

  command:    - /metrics-server    - --kubelet-preferred-address-types=InternalIP    - --kubelet-insecure-tls

Once you have updated the file, you have to re-deploy the pod.