Kubernetes는 컨테이너화된 애플리케이션의 배치, 확장, 운영을 관리하는 오픈소스 플랫폼이다. 사용자가 원하는 상태를 선언하면 여러 제어 구성 요소가 현재 상태를 관찰하고 그 목표에 가까워지도록 조정한다. Kubernetes 공식 개요
명령의 나열보다 원하는 상태
웹서버를 세 개 유지하고 싶다면 실행 파일을 세 번 수동으로 시작하는 대신 복제 수와 실행 구성을 선언한다. 장애나 변경이 발생하면 플랫폼의 제어 과정이 이를 반영한다. 그러나 애플리케이션이 올바른 업무 결과를 내는지까지 플랫폼이 자동 판단해 주는 것은 아니다.
주요 객체의 역할
Pod는 컨테이너를 실행하는 기본 배치 단위다. 웹서버처럼 복제와 업데이트가 필요한 작업은 Deployment로 관리할 수 있고, 네트워크 접근 지점은 Service로 제공한다.
| 요구 | 관련 역할 |
|---|---|
| 컨테이너 실행 | Pod와 실행 노드 |
| 복제 수 유지·업데이트 | 워크로드 컨트롤러 |
| 안정적인 네트워크 접근 | Service |
| 저장 공간 연결 | 스토리지 리소스 |
예를 들어 위키 조회 서버를 늘리더라도 데이터베이스의 처리 용량이나 공유 파일 저장소까지 자동으로 확장되는 것은 아니다. 각 계층의 요구를 따로 살펴야 한다. Kubernetes 구성 요소
자동 복구의 조건
Kubernetes는 실패한 컨테이너를 다시 시작하거나 필요한 실행 대상을 대체하는 기능을 제공한다. 준비 상태와 건강 상태를 적절하게 정의해야 잘못된 인스턴스로 트래픽이 가는 일을 줄일 수 있다. 자원 요청량과 제한도 서비스 특성에 맞게 정한다. 설정이 부정확하면 재시작이 반복되어도 원인이 해결되지 않을 수 있다.
플랫폼이 대신하지 않는 일
Kubernetes는 소스 코드를 빌드하거나 데이터베이스를 기본 서비스로 모두 제공하는 제품이 아니다. 로그, 모니터링, 보안, 데이터 백업 등은 선택한 도구와 운영 정책으로 구성한다. 작은 서비스에 도입할 때는 얻는 자동화와 함께 클러스터를 관리할 부담도 평가해야 한다.