본문 바로가기

Chapter02/이모저모,, 고모 숙모;

[cs지식] 쿠버네티스 Kubernetes

컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 플랫폼.

애플리케이션의 확장성과 가용성을 높이기 위해 쿠버네티스를 도입하는 것은 매우 유용할 수 있음. 특히, MSA를 도입했거나 클라우드 컴퓨팅 환경에서 최적화되어 설계되고 구축된 애플리케이션을 개발할 때 쿠버네티스는 필수적인 도구가 될 수 있음.

 

장점

이식성(다양한 클라우드와 온프레미스 환경 지원)

자동화(배포, 스케일링, 복구 자동화)

확장성(모듈식 설계와 다양한 플러그인 지원)

안정성(자동 복구와 롤아웃/롤백 기능)

 

 

컨테이너 오케스트레이션(Container Orchestration) : 여러 컨테이너를 배포, 관리, 확장, 네트워킹, 로드 밸런싱, 모니터링하는 작업을 자동화하는 프로세스. 쿠버네티스는 이러한 오케스트레이션을 통해 대규모 애플리케이션을 효율적으로 운영할 수 있도록 지원.

팟(Pod) : 쿠버네티스의 최소 배포 단위로, 하나 이상의 컨테이너를 포함. 동일한 네트워크 네임스페이스를 공유하며, 보통 함께 배포되고 스케일링되는 컨테이너들로 구성. 팟 내의 컨테이너들은 같은 로컬 네트워크에서 실행되어 쉽게 통신할 수 있음.

서비스(Service) : 특정 팟들의 집합을 하나의 네트워크 엔드포인트로 노출시켜, 팟들 간의 통신을 가능하게 함. 로드 밸런싱을 통해 여러 팟으로 트래픽을 분산시키고, 팟의 IP 주소가 변경되어도 일관된 접속점을 제공.

디플로이먼트(Deployment) : 애플리케이션의 선언적 업데이트를 관리하는 쿠버네티스 객체. 원하는 애플리케이션 상태를 정의하고 이를 유지하기 위해 새로운 팟을 생성하거나 삭제하며, 롤아웃 및 롤백을 통해 애플리케이션 배포를 안정적으로 관리.

네임스페이스(Namespace) : 클러스터 내의 리소스를 논리적으로 분리하여 관리할 수 있는 단위. 여러 사용자나 팀이 동일한 클러스터를 사용할 때 리소스의 이름 충돌을 방지하고, 멀티 테넌시를 지원.

볼륨(Volume) : 팟 내의 컨테이너들이 데이터를 영속적으로 저장하고 공유할 수 있도록 하는 스토리지. 다양한 스토리지 백엔드를 지원하며, 컨테이너가 재시작되어도 데이터를 유지할 수 있음.

컨피그맵(ConfigMap) : 애플리케이션 설정 데이터를 관리하는 객체로, 환경 변수를 통해 설정을 컨테이너에 주입

시크릿(Secret) : 암호, API 키 등 민감한 데이터를 관리하는 객체, 암호화되어 저장되고 컨테이너에 안전하게 주입.

 

오토스케일링(Auto-Scaling): 트래픽이나 부하에 따라 애플리케이션의 자원을 자동으로 조정하는 기능. 쿠버네티스는 수평 팟 오토스케일링(Horizontal Pod Autoscaler)을 통해 팟의 수를 조정하고, 클러스터 오토스케일링을 통해 노드 수를 자동으로 조정함.

 

 

 

도커와 비교

  docker Kubernetes
역할 컨테이너를 생성, 배포, 실행하는 도구 컨테이너화된 애플리케이션을 자동으로 배포,확장, 관리하는 플랫폼
주요 기능 애플리케이션과 그 종속성을 컨테이너화해서 일관된 실행 환경 제공 컨테이너 오케스트레이션, 자동확장, 자가 치유, 로드 밸런싱, 서비스 발견
사용 사례 단일 서버에서 컨테이너를 실행하고 관리할 때 대규모 복잡한 애플리케이션의 컨테이너 관리와 오케스트레이션
예시 개발 환경에서 애플리케이션을 테스트 or 단일 서버 배포 MSA를 사용하는 대규모 애플리케이션의 클러스터 관리
요약 컨테이너화된 애플리케이션을 구축, 실행하는 도구로 주로 개발 환경에서 사용됨 도커 등의 컨테이너를 오케스트레이션하고 관리하는 플랫폼으로, 대규모 분산 시스템과 자동회된 운영이 필요한 환경에서 사용됨.

 

  •