Skip to main content

Collect metrics from edge

Enable kubectl logs/exec feature

Refer to this doc.

Deploy metrics server

Here we use v0.4.1 metrics-server, please use v0.4.0+ version since it supports automatic port identification after v0.4.0.

v0.4.1 have fixed a harmless stack dump error, details see this pr.

Download Configuration

$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.0/components.yaml -O deploy.yaml

Update Deploy Configuration

Update deploy.yaml as below:

  • Add affinity and tolerations configuration:

    spec:
    template:
    spec:
    affinity:
    nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    nodeSelectorTerms:
    - matchExpressions:
    - key: node-role.kubernetes.io/master
    operator: Exists
    tolerations:
    - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule
  • Enable hostnetwork mode:

    spec:
    template:
    spec:
    hostNetwork: true
  • Skip tls insecure:

    spec:
    template:
    spec:
    containers:
    - args:
    - --kubelet-insecure-tls

Deploy

$ kubectl apply -f deploy.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

Test

$ kubectl top node

It would output all nodes as following:

NAME                 CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
edge-node 1169m 29% 3605Mi 45%
test-control-plane 121m 3% 664Mi 8%