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%