Docker는 당신의 앱이 실행됨을 증명하고, Kubernetes는 그것이 운영 가능함을 증명합니다.
저자는 쿠버네티스에서 모든 기술적 지표가 정상으로 보임에도 불구하고 서비스가 다운되는 일반적인 디버깅 시나리오를 설명합니다. 이는 도커는 애플리케이션이 실행되는지 확인하는 반면, 쿠버네티스는 애플리케이션이 작동 가능한지 확인하기 때문에 발생합니다. 도커의 단순함은 애플리케이션이 프로덕션 환경에서 답해야 하는 네 가지 중요한 질문을 숨깁니다. 첫 번째 질문은 애플리케이션이 이름으로 찾을 수 있는지 여부입니다. 쿠버네티스 파드 내의 localhost는 파드 자체만을 참조하므로 주소뿐만 아니라 이름으로도 찾을 수 있어야 합니다. 둘째, 애플리케이션은 SIGTERM과 같은 신호에 올바르게 응답하여 외부 시스템에 의해 깔끔하게 종료될 수 있어야 합니다. 세 번째 중요한 측면은 트래픽을 받기 전에 준비 상태를 증명하는 것입니다. 쿠버네티스는 시작하는 순간부터 애플리케이션의 상태를 적극적으로 프로빙하기 때문입니다. 마지막으로, 애플리케이션은 쿠버네티스의 구성 및 스토리지 메커니즘을 사용하여 로컬 디스크 지속성에 의존하지 않고 기능해야 합니다. 이 네 가지 질문을 이해하면 애플리케이션이 도커와 쿠버네티스에서 다르게 작동하는 이유를 명확히 하는 데 도움이 됩니다. 저자는 이러한 지점을 해결하지 못하면 일반적인 프로덕션 문제가 발생하는 예시를 제공합니다. 이 설명은 쿠버네티스에 대한 반박이 아니라, 도커가 팀이 축적할 수 있도록 허용하는 작동 가능성 부채에 대한 탐구입니다.