모든 실습은
step08네임스페이스에서 한다. 막히면 각 과제의 정답 펼치기를 참고하라.
다음 livenessProbe 설정에서, 앱이 시작 직후부터 계속 실패한다고 할 때 컨테이너가 처음 재시작되기까지 걸리는 시간을 계산하라.
initialDelaySeconds + periodSeconds × failureThreshold = 10 + 5 × 4 = 30초.
10s(첫 프로브) + 5s × 3(2·3·4번째 실패 간격) = 25초 지점에서 4번째 실패가 나므로 실무적으로 25~30초 사이. 넉넉히 잡아 약 30초로 기억하면 된다.redis:7-alpine 이미지로 Pod을 만들고, 6379 포트에 TCP 연결이 되면 Ready가 되도록 tcpSocket readinessProbe를 붙여라. 그리고 READY 1/1이 되는지 확인하라.
Redis는 기동이 빠르므로 몇 초 내에 1/1이 된다.
같은 exec 프로브(cat /tmp/ok, 파일 없음 → 실패)를 한 번은 readinessProbe로, 한 번은 livenessProbe로 걸어 각각 Pod을 띄워라. 두 Pod의 RESTARTS와 READY 컬럼이 어떻게 달라지는지 관찰하고 설명하라.
READY 0/1이지만 RESTARTS 0. 재시작하지 않고 트래픽에서만 빠진다.RESTARTS가 계속 오르고 결국 CrashLoopBackOff. 컨테이너를 계속 죽였다 살린다.즉 **readiness는 "트래픽만 차단", liveness는 "재시작"**이라는 핵심 차이를 눈으로 확인할 수 있다. 확인용:
아래 Pod은 CrashLoopBackOff에 빠진다. 원인을 진단하고, YAML 한 줄만 고쳐 정상(1/1 Running)으로 만들어라.
진단: kubectl describe pod fixme -n step08의 Events에 Liveness probe failed: HTTP probe failed with statuscode: 404가 보인다. nginx 기본 페이지에 /nope 경로가 없어 404 → liveness 실패 → 재시작 반복.
수정: 경로를 존재하는 값으로 바꾼다. path: /nope → path: /.
httpGet은 2xx/3xx만 성공이고 404 같은 4xx는 실패로 친다는 점이 포인트다.
기동에 최대 50초가 걸릴 수 있는 레거시 앱이 있다. 평상시 장애는 빨리(수 초 내) 감지하고 싶다. startupProbe와 livenessProbe를 어떻게 설계하면 좋을지 필드 값과 함께 제시하라.
periodSeconds × failureThreshold ≥ 50), 그동안 liveness는 유예시킨다.포인트: 느린 기동을 livenessProbe의 initialDelaySeconds: 60으로 때우면, 운영 중 장애 감지까지 60초씩 늦어진다. 기동 보호는 startupProbe, 운영 감시는 짧은 livenessProbe로 역할을 분리하는 것이 정답이다.