K8s라고도 알려진 쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 확장(scaling), 관리하는 오픈소스 시스템이다.

애플리케이션을 구성하는 컨테이너들을 하나의 논리적 단위로 묶어, 관리와 발견을 쉽게 만든다. 쿠버네티스는 구글의 15년간 프로덕션 워크로드 운영 경험을 토대로 구축되었으며, 커뮤니티를 통한 최선의 아이디어와 방법이 결합되어 있다.

글로벌 스케일 확장성

쿠버네티스는, 구글이 일주일에 수십억 개의 컨테이너들을 운영할 수 있었던 원칙에 따라 디자인된 덕분에, 운영팀의 규모를 늘리지 않고도 확장될 수 있다.

한계 없는 유연성

로컬에서 테스트하든 글로벌 기업 환경을 운영하든, 쿠버네티스의 유연성은 사용자의 요구 사항이 아무리 복잡해져도 함께 확장되며 애플리케이션을 일관되고 쉽게 제공할 수 있도록 해준다.

어디서든 K8s 구동

쿠버네티스는 오픈소스이므로 온프레미스, 하이브리드, 퍼블릭 클라우드 인프라에서 자유롭게 활용할 수 있으며, 필요에 따라 워크로드를 중요한 위치로 손쉽게 이동할 수 있다.

쿠버네티스를 다운로드하려면, 다운로드 섹션을 방문한다.

클라우드 네이티브 완전 입문 가이드

쿠버네티스 기능

자동화된 롤아웃과 롤백

쿠버네티스는 애플리케이션 또는 애플리케이션의 설정 변경시 점진적으로 롤아웃하는 동시에 애플리케이션을 모니터링해서 모든 인스턴스가 동시에 종료되지 않도록 보장한다. 만약 어떤 문제가 발생하면 쿠버네티스는 변경 사항을 롤백한다. 성장하는 디플로이먼트 솔루션 생태계를 이용한다.

서비스 디스커버리와 로드 밸런싱

쿠버네티스를 사용하면 익숙하지 않은 서비스 디스커버리 메커니즘을 사용하기 위해 애플리케이션을 수정할 필요가 없다. 쿠버네티스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하고, 그것들 간에 로드-밸런스를 수행할 수 있다.

자가 치유

실패한 컨테이너를 재시작하고, 노드가 죽는 경우 컨테이너들을 교체하기 위해 다시 스케줄링을 하며, 사용자가 정의한 상태 체크에 응답하지 않는 컨테이너들을 종료시키며, 서비스를 제공할 준비가 완료될 때까지 해당 컨테이너를 클라이언트에 알리지 않는다.

스토리지 오케스트레이션

로컬 스토리지, AWSGCP와 같은 퍼블릭 클라우드 공급자 또는 NFS, iSCSI, Ceph, Cinder와 같은 네트워크 스토리지 시스템에서 원하는 스토리지 시스템을 자동으로 마운트한다.

시크릿과 구성 관리

사용자의 이미지를 다시 빌드하거나 스택 구성의 시크릿을 노출하지 않고 시크릿과 애플리케이션 구성을 배포하고 업데이트한다.

자동 빈 패킹(bin packing)

리소스 요구 사항과 기타 제약 조건에 따라 컨테이너를 자동으로 배치하지만, 가용성은 그대로 유지한다. 활용도를 높이고 더 많은 리소스를 절약하기 위해 중요한(critical) 워크로드와 최선의(best-effort) 워크로드를 혼합한다.

배치 실행

쿠버네티스는 서비스 외에도 배치(batch)와 CI 워크로드를 관리할 수 있으며, 원하는 경우 실패한 컨테이너를 교체할 수 있다.

자가 치유

쿠버네티스는 비정상 종료한 컨테이너를 재시작하고, 필요한 경우 전체 파드를 교체하며, 더 넓은 장애에 대응하여 스토리지를 다시 연결하고, 노드 오토스케일러와 연동하여 노드 수준에서도 자가 치유할 수 있다.

Horizontal 스케일링

간단한 명령어나 UI를 통해서 또는 CPU 사용량에 따라 자동으로 애플리케이션의 스케일을 업 또는 다운한다.

IPv4/IPv6 이중 스택

파드와 서비스에 IPv4와 IPv6 주소 할당

확장성을 고려하여 설계됨

쿠버네티스 업스트림 소스 코드 수정 없이 쿠버네티스 클러스터에 기능을 추가할 수 있다.

사례 연구

쿠버네티스는 CNCF graduated 프로젝트입니다.

Cloud Native Computing Foundation logo