본문 바로가기
Backend MLOps/On-premise setting

[k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 4

by SteadyForDeep 2023. 8. 24.
반응형

이 글은 아래의 글들에 의존성을 가진다.

2023.08.17 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 1

 

[k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 1

최근 흥미로운 주제가 생겨서 이 시리즈를 적어 본다. 싱글 노드 쿠버네티스를 구성하는 방법은 여러가지가 있다. 쿠버네티스 연습이 필요한 경우 혹은 회사에서 쿠버네티스 환경을 구축해야하

davi06000.tistory.com

2023.08.23 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 2

 

[k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 2

지난번 글에서 kubeadm을 설치하고 containerd, docker 같은 런타임을 이용해서 클러스터를 구성하는 과정을 진행해 보았다. 2023.08.17 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버

davi06000.tistory.com

2023.08.24 - [블로그 글] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 3

 

[k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 3

이 글은 아래의 글들에 의존성을 가진다. 2023.08.17 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이용해서 싱글노드 쿠버네티스 환경 구축 - 1 2023.08.23 - [Backend MLOps/On-premise setting] - [k8s] kubeadm 을 이

davi06000.tistory.com

 

이제는 그라파나를 설치해 보도록 하자.

오늘 회사에서 웃긴 일화가 있었는데

그라파나의 어원에 대해서 불현듯 찾아보다가

북유럽신화가 나오다가

유희왕 카드에 용 이름이 그라파 였다가

북유럽 신화 용이름이 아닐까 하다가

그라파나 로고도 묘하게 용처럼 보이다가

결국은 아무 의미 없다는 제작자의 인터뷰를 발견했다.

 

각설하고 설치해 보자.

 

이때까지 싱글노드 쿠버네티스를 구성하고

거기에 클러스터를 구성하고

거기에 볼륨을 붙이고

거기에 파드들을 볼륨과 함께 띄워 보았다.

 

띄워진 파드들은

시스템 정보를 모아서 응답으로 보내주는 백엔드 서버 node exporter

익스포터에 주기적으로 요청을 보내서 정보를 모아 저장하는 능동적(pulling) 시계열 데이터베이스인 프로메테우스

가 있다.

이제 프로메테우스에 쿼리를 날려서 내용을 시각화해주는 그라파나를 띄워보자.

 

apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-datasources
  namespace: monitoring
data:
  prometheus.yaml: |-
    {
        "apiVersion": 1,
        "datasources": [
            {
               "access":"proxy",
                "editable": true,
                "name": "prometheus",
                "orgId": 1,
                "type": "prometheus",
                "url": "http://prometheus-service.monitoring.svc:9090",
                "version": 1
            }
        ]
    }

그라파나의 컨피그맵으로 데이터 소스를 프로메테우스로 지정하는 yaml이다.

각 오브젝트의 특성은 이전 글에 간략히 설명되어 있다.

 

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
  annotations:
      prometheus.io/scrape: 'true'
      prometheus.io/port:   '3000'
spec:
  selector:
    app: grafana
  type: NodePort
  ports:
    - port: 3000
      targetPort: 3000
      nodePort: 32000

그라파나에 접속할 수 있게 서비스 리소스를 할당하는 구문이다.

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      name: grafana
      labels:
        app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:latest
        ports:
        - name: grafana
          containerPort: 3000
        resources:
          limits:
            memory: "1Gi"
            cpu: "1000m"
          requests:
            memory: 500M
            cpu: "500m"
        volumeMounts:
          - mountPath: /var/lib/grafana
            name: grafana-storage
          - mountPath: /etc/grafana/provisioning/datasources
            name: grafana-datasources
            readOnly: false
      volumes:
        - name: grafana-storage
          persistentVolumeClaim:
            claimName: grafana-pvc
        - name: grafana-datasources
          configMap:
              defaultMode: 420
              name: grafana-datasources

실재로 그라파나가 떠서 동작할 파드에 관한 디플로이먼트다.

 

 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
  namespace: monitoring
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: my-hostpath-pv

그라파나를 위한 pvc다

이전 글에서 작성했던 pv 와의 연동이 설정되어 있으므로 이전 글을 반드시 참고하기 바란다.

 

잘 떴다.

초기 아이디 와 비밀번호는 모두 admin이다.

오른쪽 위에 더하기를 눌러서 대시보드를 추가할 수 있다.

남들이 만들어서 올려둔 데시보드도 땡겨 쓰는게 가능하다.

데시보드의 일정 값이 초과되면 알람을 보내는 것 또한 가능하다.

 

반응형

댓글