LabHub

CKAD — 쿠버네티스 애플리케이션 개발자 · 진짜 클러스터에서 확인하기 · 실습

배포가 실제로 무중단인지 재 본다

LabHub 에서 이어서 보기

이 실습은 진짜로 파드가 뜨고 죽는 클러스터에서 합니다

VM 안에 진짜 k3s 가 떠 있습니다. 롤링 업데이트가 정말로 한 대씩 교체되고,
실패한 롤아웃은 정말로 멈추며, kubectl drain 은 PodDisruptionBudget 에
정말로 막힙니다.

CKAD 과정의 다른 롤아웃 실습이 도는 가짜 클러스터에서는 파드가 실행되지
않으므로 "무중단이었는가" 를 잴 방법이 없습니다.

처음 뜨는 데 2분쯤 걸립니다.

목표

배포 중에 요청을 계속 보내면서 실패가 0 인지 숫자로 확인하고, 실패한
롤아웃이 어떻게 멈추는지, 되돌리기가 무엇을 되돌리는지를 봅니다.

왜 중요한가

"무중단 배포" 는 전략 이름을 고르는 일이 아니라 **여러 설정이 맞물려야
성립하는 결과**입니다. 하나만 빠져도 조용히 깨집니다.

그리고 깨졌는지 아닌지는 재 봐야 압니다. 배포가 끝난 뒤에 확인하면
언제나 정상으로 보입니다.

단계

모든 것은 crol 네임스페이스에 만듭니다.

1. web Deployment(레플리카 3, nginx, readinessProbe 포함)를 만들되 maxSurgemaxUnavailable명시하세요. /root/crol/rolling.txt 에 담습니다.
2. 업데이트를 걸어 두고 그동안 요청을 계속 보내 실패 수를 세세요. /root/crol/nodowntime.txttotal=·failed= 두 줄로 담습니다. 실패는 0 이어야 합니다.
3. 없는 이미지로 업데이트해 롤아웃이 멈추는 것을 확인하고, 그동안 옛 파드가 살아 있다는 것도 함께 /root/crol/stuck.txt 에 담으세요.
4. rollout undo 로 되돌리고 결과를 /root/crol/undo.txt 에 담으세요. revisionHistoryLimit 도 명시합니다.
5. rollout pauseresume 으로 일부만 교체된 상태를 만들어 보고 /root/crol/pause.txt 에 담으세요.
6. web-pdb PodDisruptionBudget 을 만들고, 지금 몇 개까지 중단할 수 있는지와 PDB 가 막지 못하는 것/root/crol/pdb.txt 에 담으세요.
7. legacy Deployment 를 Recreate 전략으로 만들고, 왜 그런 전략이 필요한지를 /root/crol/recreate.txt 에 담으세요.
8. /root/crol/report.mddowntime_requests_failed=, recreate_causes_downtime=, pdb_min_available= 세 줄과 설명을 쓰세요.

참고

단계 8개

  1. 두 숫자가 교체 속도를 정한다
  2. 무중단인지 숫자로 잰다
  3. 실패한 롤아웃은 멈춘다
  4. 되돌리기는 무엇을 되돌리나
  5. 일부만 바꿔 두고 본다
  6. 한꺼번에 내려가지 못하게 한다
  7. 일부러 중단하는 전략
  8. 무엇을 배웠나