0Pricing
DevOps Bootcamp · 강의

상태 확인: 활성 및 준비성 프로브

애플리케이션이 정상 상태이며 트래픽을 처리할 준비가 되었는지 확인하도록 활성 프로브와 준비성 프로브를 구성하세요.

상태 확인: 활성 및 준비성 프로브은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

애플리케이션을 정상 상태로 유지하기

Kubernetes는 애플리케이션이 실제로 작동하는지 어떻게 알 수 있을까요? 컨테이너가 실행 중이기만 해서는 충분하지 않습니다. 트래픽을 제공하려면 정상 상태이고 준비되어 있어야 합니다.

Kubernetes는 애플리케이션을 모니터링하기 위해 프로브라는 특수한 확인 기능을 사용합니다. 이러한 프로브는 사용자가 항상 안정적인 서비스를 이용할 수 있도록 도와줍니다.

생존성 프로브란 무엇인가요?

생존성 프로브는 애플리케이션이 여전히 실행 중이며 응답하는지 확인합니다. 생존성 프로브가 실패하면 Kubernetes는 컨테이너가 비정상이라고 판단하고 다시 시작합니다.

심장 박동 모니터와 같다고 생각해 보십시오. 심장이 멈추면 다시 시작해야 합니다! 이 기능은 교착 상태나 애플리케이션 충돌에서 복구하는 데 도움을 줍니다.

생존성 프로브 기본 사항

다음과 같은 여러 방법으로 생존성 프로브를 구성할 수 있습니다.

  • HTTP GET: 지정된 경로로 HTTP 요청을 보냅니다.
  • TCP 소켓: 포트에 TCP 연결을 열 수 있는지 확인합니다.
  • Exec 명령: 컨테이너 내부에서 명령을 실행합니다.

웹 애플리케이션에서는 HTTP GET을 매우 자주 사용합니다. 다음은 Pod의 YAML에서 생존성 프로브를 정의하는 예입니다.

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

생존성 프로브 실행

이 Python Flask 애플리케이션은 /healthz에 두 번 요청된 후 충돌하여 비정상 상태를 모의합니다. Kubernetes 프로브가 이를 감지하고 컨테이너를 다시 시작합니다.

먼저 다음 내용을 app.py로 저장하십시오.

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

생존성 프로브 실행하기

이제 Kubernetes가 생존성 프로브를 사용하는 방법을 살펴보겠습니다. 다음 YAML로 배포하면 상태 확인이 실패할 때 Kubernetes가 Pod를 다시 시작합니다.

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

배포되면 두 번의 확인이 성공한 후 세 번째 확인이 실패하고 Kubernetes가 컨테이너를 다시 시작합니다.

준비 상태 프로브란 무엇인가요?

준비 상태 프로브는 애플리케이션이 트래픽을 제공할 준비가 되었는지 확인합니다. 준비 상태 프로브가 실패하면 Kubernetes는 해당 Pod로 트래픽을 보내지 않지만 Pod를 다시 시작하지는 않습니다.

이는 시작 과정(예: 데이터베이스 연결 대기)이나 정상적인 종료 과정에서 매우 중요합니다. 다음과 같이 생각해 보십시오. "가게가 손님을 맞을 준비가 되었나요?"

준비 상태 프로브 기본 사항

준비 상태 프로브는 HTTP GET, TCP 소켓 또는 Exec 명령을 사용하여 생존성 프로브와 비슷하게 구성합니다. 핵심적인 차이는 그 영향입니다.

  • 생존성: 실패하면 컨테이너를 다시 시작합니다.
  • 준비 상태: 실패하면 Pod를 서비스 엔드포인트에서 제거합니다(트래픽 없음).

다음은 준비 상태 프로브의 예입니다.

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

준비 상태 프로브 실행

이 Flask 애플리케이션은 초기화하는 데 시간이 걸리는 애플리케이션(예: 데이터베이스에 연결하는 애플리케이션)을 모의합니다. 5초가 지나야 "ready" 상태를 보고합니다.

다음 내용을 ready_app.py로 저장하십시오.

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

준비성 프로브 실행

이 YAML로 배포하면 initialDelaySeconds에 지정된 시간과 /ready가 200 OK를 반환하는 데 걸리는 시간이 모두 지나기 전까지 Pod는 트래픽을 받지 않습니다.

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

이렇게 하면 실제로 준비된 인스턴스에만 트래픽이 전달됩니다.

활성 상태와 준비 상태

두 프로브를 모두 올바르게 사용하는 것이 중요합니다.

  • 활성 상태 프로브: 애플리케이션이 중단되었거나 복구할 수 없는 상태인지 감지하는 데 사용됩니다. 이 프로브가 실패하면 Kubernetes가 컨테이너를 다시 시작합니다.
  • 준비성 프로브: 애플리케이션이 요청을 받아 처리할 준비가 되었는지 감지하는 데 사용됩니다. 이 프로브가 실패하면 Kubernetes가 Pod로 트래픽을 보내지 않습니다.

두 프로브는 서로 다르지만 상호 보완적인 목적을 수행하여 애플리케이션을 안정적으로 유지합니다.

이해도 확인

활성 상태 프로브와 준비성 프로브에 대한 다음 설명 중 TRUE인 것은 무엇입니까?

프로브: 핵심 내용

이번 레슨에서는 Kubernetes의 활성 상태 프로브와 준비성 프로브를 배웠습니다. 이러한 상태 확인은 애플리케이션의 안정성과 가용성을 유지하는 데 필수적입니다.

  • 활성 상태 프로브는 비정상적인 컨테이너를 감지하고 다시 시작하도록 합니다.
  • 준비성 프로브는 Pod가 네트워크 트래픽을 받을 준비가 되는 시점을 제어합니다.

프로브를 효과적으로 사용하면 애플리케이션이 항상 응답 가능하고 문제에도 견고한 상태를 유지할 수 있습니다.

자주 묻는 질문

“상태 확인: 활성 및 준비성 프로브” 강의는 무료인가요?

네 — “상태 확인: 활성 및 준비성 프로브” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“상태 확인: 활성 및 준비성 프로브”에서 뭘 배우나요?

애플리케이션이 정상 상태이며 트래픽을 처리할 준비가 되었는지 확인하도록 활성 프로브와 준비성 프로브를 구성하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“상태 확인: 활성 및 준비성 프로브” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. kubectl logs를 활용한 로그 기록
  2. Prometheus 및 Grafana를 활용한 지표
  3. 상태 확인: 활성 및 준비성 프로브
  4. 분산 추적과 이벤트
← DevOps Bootcamp(으)로 돌아가기