쿠버네티스

쿠버네티스 공부 1일차 (라이브니스 프로브, 데몬셋)

황동리 2024. 7. 18. 17:51
반응형

라이브니스 프로브(liveness probe)란?

쿠버네티스에서 컨테이너가 살아 있는지, 죽어있는지 확인 할 수 있게 해준다.

라이브니스 프로브에는 3가지 메커니즘이 존재합니다.

  1. HTTP GET 프로브, 지정한 IP 주소, 포트, 경로에 HTTP GET 요청을 통해 컨테이너의 상황을 확인 합니다.
  2. TCP 소켓 프로브, 컨테이너의 지정된 포트에 TCP 연결을 시도하여 컨테이너의 상황을 확인 합니다.
  3. Exec 프로브, 컨테이너 내의 임의의 명령을 실행하고 명령의 종료 상태 코드를 확인 하여 컨테이너의 상황을 확인 합니다.
ex) HTTP GET 프로브 방식
apiVersion: v1
kind: Pod
metadata:
  name: kubia-liveness
spec:
  containers:
  - image: luksa/kubia-unhealthy
    name: kubia
    livenessProbe: <= 컨테이너 안에 정의.
      httpGet:
        path: /
        port: 8080
        
위의 yaml 코드처럼 path와 포트를 지정하여 컨테이너의 상황을 확인 할 수 있습니다.

 

다만, livenessProbe를 설정할 때, 초기 지연 값을 넣어주지 않으면 컨테이너 시작되자마자 프로브가 확인을 하기 때문에 애플리케이션이 요청을 받을 준비가 되지 않아 프로브가 실패할 경우가 많습니다.

 

ex) 초기 지연 시간 추가
livenessProbe:
	httpGet:
    	path: /
        port: 8080
    initialDelaySeconds: 15 <= 이렇게 해두면, 컨테이너가 시작되고 15초 이후에 프로브가 HTTP GET 요청을 보냅니다.

라이브니스 프로브를 설정해두면, 컨테이너가 비정상 일 때, 감지하여 자동으로 컨테이너를 재시작 시켜줍니다.

다만, 해당 작업은 Control-Plane에서 실행을 하는 것이 아닌 해당 Worker Node의 kubelet에서 실행을 해줍니다.


데몬셋(DaemonSet) 이란?

쿠버네티스에서 원하는 노드에 원하는 파드가 생성할 수 있게 해줍니다.

파드가 원하는 노드에서 생성되기 위해선 데몬셋에서 정의하는 nodeSelector에 적어둔 레이블이 해당 노드에도 있어야 합니다.

ex)

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: ssd-monitor
spec:
  selector:
    matchLabels:
      app: ssd-monitor
  template:
    metadata:
      labels:
        app: ssd-monitor
    spec:
      nodeSelector:
        disk: ssd <= 노드에 해당 레이블이 있어야 합니다.
      containers:
      - name: main
        image: luksa/ssd-monitor
반응형