Kubernetes(흔히 K8s로 줄여 씀)는 오픈소스 컨테이너 오케스트레이션(container orchestration) 플랫폼이다. 여러 대의 머신으로 이루어진 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 스케일링, 네트워킹, 자가 치유를 자동화하므로, 당신은 *원하는 상태(desired state)*만 기술하면 Kubernetes가 현실을 그 상태에 맞추기 위해 끊임없이 작동한다.
문제: 대규모로 컨테이너를 운영하는 것은 어렵다
You have containers (from Docker), but in production you must also answer:
→ 각 컨테이너는 어느 머신에서 실행되는가? (scheduling)
→ 컨테이너가 크래시되면? (self-healing / restarts)
→ 노드 전체가 죽으면? (다른 곳에 재스케줄)
→ 50개의 replica가 서로를 찾아 통신하려면? (service discovery)
→ 무중단으로 새 버전을 롤아웃하려면? (rolling updates)
→ 트래픽 급증 시 replica를 3개에서 30개로 늘리려면? (autoscaling)
많은 서버에 걸쳐 이 모든 것을 수작업으로 하는 것은 확장되지 않는다.
