쿠버네티스 학습을 위한 쿠버네티스 공식문서를 정리
쿠버네티스는 컨테이너화된 서비스를 관리하기 위한 이식성있고, 확장가능한 오픈소스 플랫폼이다. 즉 컨테이너들을 관리하기 위한 플랫폼이다. 선언적 구성과 자동화를 용이하게 해준다.
쿠버네티스는 흔히 k8s라 불린다. K8s는 쿠버네티스의 K와 s 사이의 8글자를 약어로 표현한것이다. 구글에서 2014년 쿠버네티스 프로젝트를 오픈소스화 했다.
기존의 VM과 다르게 컨테이너는 경량화 되어 장점을 가진다. 컨테이너는 자체 파일 시스템, CPU, 메모리, 프로세스 공간을 가지며, 인프라와의 종속성을 끊었기 때문에, 클라우드와 OS에 모두 이식할 수 있다.
컨테이너는 애플리케이션을 포장하고 실행하는 좋은 방법이다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너에 대해 관리가 필요하다.
예를들어 컨테이너가 다운되는 경우 서비스 장애가 발생하므로 다른 컨테이너를 시작해야한다. 이런 경우 필요한것이 쿠버네티스로 분산 시스템을 탄력적으로 실행하고, 애플리케이션을 확장과 장애에 대한 조치 및 프로덕션 환경에 배포하는 패턴들을 제공한다.
쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용해 컨테이너를 노출할수 있다. 컨테이너에 대한 트래픽이 늘어나면 쿠버네티스는 트래픽을 로드밸런싱 한다.
쿠버네티스를 통해 로컬저장소, 공용클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다.
쿠버네티스를 통해 배포된 컨테이너의 원하는 상태를 명시 할 수 있으며, 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해 배포 컨테이너를 만들고, 기존 컨테이너를 제거 후 모든 리소스를 새 컨테이너에 적용할 수 있다.
컨테이너화 된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스트 노드를 제공한다. 각 컨테이너가 필요로하는 cpu와 메모리를 쿠버네티스에 지정하고 쿠버네티스는 컨테이너를 노드에 맞춰서 리소스를 가장 잘 사용할 수 있도록 한다.
쿠버네티스는 다운된 컨테이너를 다시 시작하고 다른 컨테이너로 교체한다.
암호나 OAuth, SSH키와 같은 중요한 정보들을 쿠버네티스를 통해 저장하고 관리할 수 있다. 이런 비밀 정보들을 노출하지 않고 애플리케이션을 구성하고 배포, 업데이트 할수 있다.