본문 바로가기
CSP (Cloud Service Provider)/GCP

[GKE 사용하기] 쿠버네티스 셀프힐링(Kubernetes Self-healing)

by BTC_yljo 2022. 12. 20.

쿠버네티스에서는 서비스를 안정적으로 운영하기 위해 셀프힐링 기능을 지원합니다. 이 기능에는 Liveness Probe와 Readiness Probe가 있습니다. Liveness Probe를 통해서는 이름 그대로 컨테이너가 잘 살아있는지를 진단합니다. Readiness Probe를 통해서는 이름 그대로 서비스가 가능한 준비된 상태인지를 진단합니다.

Probe 타입

컨테이너를 진단하과 확인하는 방법으로는 3가지가 있습니다.

 

Http Get probe

가장 많이 사용하는 방식으로, 지정된 IP, port, path에 HTTP GET 요청을 보내 해당 컨테이너가 제대로 응답하는지를 확인합니다. HTTP 응답코드가 200이면 정상으로 판단하고, 그 이외의 값인 경우에는 비정상으로 판단하여 컨테이너를 다시 시작합니다.

livenessProbe:
  httpGet:
    path: /
    port: 80

 

 

Tcp Socket probe

지정된 포트에 TCP 연결을 시도하는 방식입니다. 연결이 성공하면 정상으로 판단합니다.

readinessProbe:
  tcpSocket:
    port: 22

 

exec probe

livenessProbe:
  exec:
    command:
    - ls
    - /data/file

 

Liveness Probe

Liveness Probe는 Pod를 안정적으로 유지하기 위해 지원되는 기능으로, Pod가 계속 실행할 수 있음을 보장합니다. 이 기능을 통해 쿠버네티스는 컨테이너의 상태를 주기적으로 체크하고, 진단 결과 실패로 확인되면 컨테이너를 제거한 후 다시 다운로드 받아 실행합니다.

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80
    livenessProbe:
      httpGet:
        path: /
        port: 80

 

Readiness Probe

Readiness Probe는 컨테이너가 시작된 후, 구성이 가능한 시간이 될 때까지 대기하과, 이후 주기적으로 컨테이너가 서비스를 제공할 수 있도록 준비된 상태인지를 진단합니다. 진단결과 컨테이너의 재시작 등으로 일시적으로 서비스가 불가능한 상태인 경우에는 해당 Pod를 서비스 Endpoint에서 삭제하고, 이후 다시 Pod가 준비되면 서비스에 Endpoint를 다시 넣어줍니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploy-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      name: nginx-pod
      labels:
        app: web
    spec:
      containers:
      - name: nginx-container
        image: nginx
        readinessProbe:
          exec:
            command:
            - ls
            - /tmp/datafile

댓글