Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Deploy metrics-server

K8s를 기본으로 설치하면, 각 node나 pod의 CPU, Memory와 같은 기본적인 지표가 보여지지 않는다.

따라서, 다음과 같이 metrics-server를 설치 한다.
그러고 나면, metrics-server pod는 master node 포함하여 각 worker node의 Kubelet API를 통해 관련 metrics를 수집한다.

Note

Dashboard와 마찬가지로 metrics-server podmaster node에 상주 해야 한다.

master nodepod worker node routing: (O)
worker nodepod master node routing: (X)

Code Block
languageyaml
$ wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml && mv components.yaml metrics-server.yaml

# Dashboard와 마찬가지로 metrics-server pod는 master node에 상주해야 한다. 
# 따라서, metrics-server.yaml의 Deployment object 명세에 아래 내용을 추가한다.
$ vim metrics-server.yaml
...
---
apiVersion: apps/v1
kind: Deployment
...
      nodeSelector:
        kubernetes.io/os: linux
        kubernetes.io/arch: "amd64"
        kubernetes.io/hostname: k8s-01
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
...

$ kubectl apply -f metrics-server.yaml
...
$ kubectl get pod -n kube-system metrics-server-77ffddc74-7z7j4 -o wide
NAME                             READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
metrics-server-77ffddc74-7z7j4   1/1     Running   0          15m   10.244.0.6   k8s-01   <none>           <none>

...

해서, 아래와 같이 netbox라고 하는 k8s DaemonSet배포하여 배포하면 위의 curl -k -X Get https://10.0.2.6:10250/stats/summary?only_cpu_and_memory=true: dial tcp 10.0.2.6:10250: connect: no route to host쿼리가 잘 되는지 안 되는지 , 갖가지 tool로 확인할 수 있다.확인이 용이하다.(이 밖에도 tcpdump가 포함된 container등 문제 해결을 위한 container가 많이 존재한다.)

Code Block
languageyaml
# 편의상, metrics-server와 같은 namespace 및 serviceAccount로 지정하였다.
# 이렇게 하면, metrics-server가 사용하는 role 및 token을 사용할 수 있다.
$ vim netbox.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: netbox
  name: netbox
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: netbox
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: netbox
    spec:
      serviceAccountName: metrics-server
      serviceAccount: metrics-server
      containers:
      - image: quay.io/gravitational/netbox:latest
        imagePullPolicy: Always
        name: netbox
      securityContext:
        runAsUser: 0
      terminationGracePeriodSeconds: 30      
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule

$ kubectl apply -f netbox.yaml

...