Metric Server 설치하기
Kubernetes 를 설치하게 되면 자원에 대한 모니터링이 필요하다. 과거에는 Heapster 를 이용했지만 이것은 이제 더 이상 개발이 되지 않고 있으며 이를 대체하는 것이 Metric Server 이다.
Kubernetes 에서 뭔가를 설치하는 것은 대부분 Pods 를 설치하는 것이며 이것에 대한 Rules, Datastore 등도 한꺼번에 설정을 해준다.
Metric Server 를 설치하게 되면 Kubernetes 의 컴포넌트들에 대한 자원 모니터링이 가능해지며 이것을 이용해 Autoscaling 에도 사용이 가능해진다.
Downloads
Metric Server 를 다음과 같이 다운로드를 한다.
1 |
]$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml |
2020.04.19 현 시점에서 v0.3.7 이 있지만 ErrorImagePull 에러가 발생하면서 설치가 진행되지 않는다. 따라서 v0.3.6 으로 설치한다.
TLS 수정
Metric Server 를 설치할때에 주의해야 할 것은 Kube API 서버와의 통신에서 사용할 TLS 를 수정하는 것이다. Metric Server 는 Public TLS 를 기본으로 하지만 Kube API 는 Kube 자체의 TLS 를 사용하기 때문에 그냥 설치하면 문제가 된다.
1 2 3 4 5 6 7 8 |
]$ vim components.yaml .... args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname .... |
Deploy
이제 이것을 Deploy 해준다. Kubernetes 에서는 설치라는게 없다. 모두 다 pods 로 다 올라가기 때문에 Deploy 라고 한다.
1 2 3 4 5 6 7 8 9 10 |
]$ kubectl apply -f components.yaml clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created serviceaccount/metrics-server unchanged deployment.apps/metrics-server created service/metrics-server created clusterrole.rbac.authorization.k8s.io/system:metrics-server created clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created |
위와같이 관련된 설정과 pods, deploy, service 등이 생성이 된다.
확인
Metric Server 의 확인은 pods, deploy 가 제대로 되었는지를 살펴보면 된다.
1 2 |
]$ kubectl get pods -n kube-system ]$ kubectl get deploy -n kube-system |
그리고 1~2분을 기다리면 후에 다음과 같이 자원이 출력이 되는지를 보면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
]$ kubectl top pods -n kube-system NAME CPU(cores) MEMORY(bytes) calico-kube-controllers-555fc8cc5c-57cj9 2m 6Mi calico-node-knhlw 19m 18Mi calico-node-t6pzp 19m 40Mi coredns-66bff467f8-l9tpl 3m 5Mi coredns-66bff467f8-sb927 2m 5Mi etcd-kmaster 18m 49Mi kube-apiserver-kmaster 36m 304Mi kube-controller-manager-kmaster 11m 39Mi kube-proxy-hm94h 1m 12Mi kube-proxy-tmjzx 1m 8Mi kube-scheduler-kmaster 4m 11Mi metrics-server-6cd998ff87-7fq2v 1m 11Mi |
CPU, Memory 등과 같은 자원 현황이 출력이 되면 정상적으로 작동하는 것이다.