クイズ: Eviction API と中断予算
한국어 원문으로 표시합니다.
PDB 가 막고 있을 때 축출 서브리소스가 돌려주는 응답은?
- 403 Forbidden — 권한이 없는 요청으로 처리한다
- 409 Conflict — 오브젝트 버전이 맞지 않는 것으로 처리한다
- 429 Too Many Requests — 예산이 모자라 지금은 안 된다는 뜻이다
- 202 Accepted — 받아 두었다가 여유가 생기면 처리한다
kubectl delete pod 와 축출 API 호출의 결정적 차이는?
- 삭제는 PDB 심사를 건너뛰고 축출은 심사를 받는다
- 삭제는 비동기이고 축출은 동기라서 응답을 기다린다
- 삭제는 컨트롤러가 새 파드를 만들지 않게 한다
- 삭제는 노드에서만 되고 축출은 API 서버에서만 된다
파드 7개에 minAvailable: "50%" 를 걸면 남아 있어야 하는 파드 수는?
- 3개 — 소수점을 버려 안전하게 더 많이 내보낸다
- 4개 — 쿠버네티스가 올림해서 더 보수적으로 잡는다
- 3개 또는 4개 — 컨트롤러가 그때그때 반올림한다
- 7개 — 백분율은 정수로 나누어떨어질 때만 쓸 수 있다
한 파드가 서로 다른 PDB 두 개의 셀렉터에 걸리면?
- 더 엄격한 쪽의 예산이 적용되어 그 기준으로 심사한다
- 나중에 만들어진 PDB 가 앞의 것을 덮어써서 하나만 적용된다
- 두 예산의 허용 중단을 더해 그 합만큼 내보낼 수 있다
- 축출 서브리소스가 지원하지 않는 상황이라 요청이 거절된다
PDB 가 파드를 건강하다고 세는 기준은?
- phase 가 Running 이면 건강한 것으로 센다
- 컨테이너가 재시작 없이 돌고 있으면 건강한 것으로 센다
- status.conditions 에 Ready 가 True 인 항목이 있어야 한다
- 노드가 Ready 이고 파드가 삭제 표시되지 않았으면 건강하다
unhealthyPodEvictionPolicy 를 AlwaysAllow 로 두는 것이 권장되는 이유는?
- 망가진 파드가 드레인을 붙잡고 놓지 않는 상황을 풀 수 있기 때문이다
- 건강한 파드의 축출까지 함께 빨라져 유지보수 시간이 줄기 때문이다
- 예산 계산에서 준비되지 않은 파드를 아예 빼 주기 때문이다
- 기본값이 없어서 명시하지 않으면 축출이 모두 거절되기 때문이다