쿠버네티스 (종종 다음과 같이 약칭됩니다. K8s) 는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하도록 설계된 오픈 소스 컨테이너 오케스트레이션 플랫폼입니다.원래 Google에서 개발했으며 현재는 클라우드 네이티브 컴퓨팅 재단 (CNCF) 에서 유지 관리하고 있는 쿠버네티스는 분산 시스템에서 애플리케이션을 안정적으로 실행할 수 있는 강력한 프레임워크를 제공합니다.
쿠버네티스의 주요 기능
- 컨테이너 오케스트레이션:
- 시스템 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 운영을 자동화합니다.
- 셀프 힐링:
- 컨테이너 상태를 모니터링하고 오류가 발생하거나 오프라인 상태가 되면 컨테이너를 자동으로 교체하거나 다시 시작합니다.
- 수평 스케일링:
- 워크로드 수요에 따라 컨테이너 인스턴스 (포드) 수를 동적으로 조정합니다.
- 서비스 검색 및 로드 밸런싱:
- 내장된 서비스 검색 기능을 제공하고 컨테이너 전체에 네트워크 트래픽을 균등하게 분배합니다.
- 선언적 구성:
- YAML 또는 JSON 파일을 사용하여 원하는 시스템 상태를 정의하며, 쿠버네티스는 이를 자동으로 적용합니다.
- 자동 롤아웃 및 롤백:
- 애플리케이션 업데이트를 간소화하는 동시에 다운타임을 없애고 필요한 경우 이전 상태로 되돌릴 수 있습니다.
- 리소스 관리:
- 컨테이너의 CPU 및 메모리와 같은 리소스를 효율적으로 스케줄링하고 할당합니다.
- 시크릿 및 구성 관리:
- 암호 및 API 키와 같은 민감한 정보를 안전하게 관리합니다.
쿠버네티스의 주요 개념
- 포드:
- 쿠버네티스에서 배포 가능한 가장 작은 유닛으로, 하나 이상의 긴밀하게 연결된 컨테이너를 실행할 수 있습니다.
- 노드:
- 워크로드가 실행되는 Kubernetes 클러스터의 물리적 또는 가상 머신입니다.
- 클러스터:
- 마스터 노드 (컨트롤 플레인):
- 클러스터를 관리하고 워크로드의 스케줄링 및 배포를 조정합니다.
- 서비스:
- 파드에서 실행 중인 애플리케이션을 외부 또는 내부 사용자에게 노출하는 방법.
- 디플로이먼트:
- 구성 및 확장을 포함하여 애플리케이션의 원하는 상태를 정의하는 상위 수준의 추상화입니다.
- 네임스페이스:
- 클러스터 내의 논리적 파티션을 통해 다양한 프로젝트 또는 팀을 위한 격리된 환경을 제공합니다.
쿠버네티스 애플리케이션
- 마이크로서비스 아키텍처:
- 동일한 환경 내에서 마이크로서비스를 독립적으로 배포하고 관리합니다.
- 데브옵스 및 CI/CD 파이프라인:
- 테스트, 배포 및 확장을 자동화하여 개발 워크플로우를 간소화합니다.
- 하이브리드 및 멀티 클라우드 환경:
- 기본 인프라를 추상화하여 여러 클라우드 공급자와 온프레미스 시스템에서 애플리케이션을 원활하게 실행할 수 있습니다.
- AI/ML 워크로드:
- 머신 러닝 모델 및 분산 교육 파이프라인을 오케스트레이션합니다.
- 엣지 컴퓨팅:
- 지연 시간이 짧은 처리를 위해 엣지에서 컨테이너화된 애플리케이션을 관리합니다.
- 게이밍:
- 다양한 플레이어 부하를 가진 게임 서버의 동적 확장을 처리합니다.
쿠버네티스의 장점
- 휴대성:
- 온프레미스, 클라우드 및 하이브리드 환경을 포함한 광범위한 인프라와 호환됩니다.
- 확장성:
- 소규모 애플리케이션부터 글로벌 규모 시스템까지 모든 규모의 워크로드를 처리할 수 있습니다.
- 레질리언스:
- 내결함성을 위한 내장 메커니즘으로 고가용성을 보장합니다.
- 에코시스템 및 확장성:
- Helm (패키지 관리자) 및 Istio (서비스 메시) 와 같은 풍부한 도구 및 확장 프로그램 에코시스템.
- 오픈 소스:
- 활발한 커뮤니티의 지원을 받으며 Google Cloud, AWS, Azure와 같은 주요 클라우드 제공업체의 지원을 받습니다.
쿠버네티스의 당면 과제
- 복잡성:
- 광범위한 기능 및 구성으로 인해 초보자가 학습에 어려움을 겪을 수 있습니다.
- 리소스 오버헤드:
- 쿠버네티스 클러스터를 실행하려면 상당한 컴퓨팅 리소스가 필요합니다.
- 매니지먼트:
- 클러스터를 유지 관리, 보호 및 최적화하려면 전문 지식이 필요합니다.
- 네트워킹:
- 컨테이너 간의 내부 및 외부 통신을 관리하는 것은 복잡할 수 있습니다.
도커와의 비교
쿠버네티스와 도커는 종종 함께 나타나지만 용도는 서로 다릅니다.
- 부두 노동자:
- 컨테이너를 구축, 운송 및 운영하기 위한 플랫폼입니다.
- 쿠버네티스:
- Docker 컨테이너를 대규모로 오케스트레이션하고 관리하기 위한 플랫폼입니다.