쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이다.
쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다.
쿠버네티스란 명칭은 파일럿을 키잡이,파일럿을 뜻하는 그리스어에서 유래해 K8s라는 표기로도 많이 사용한다.
K8s는 K와 s사이의 글자 8개를 나타내는 줄임 표현다.
앞장에서 컨테이너에 대해 알아보았는데 컨테이너는 애플리케이션을 포장하고 실행하기 좋은 방법이라는 것을 알 수 있다.
프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야한다.
예를 들어 컨테이너가 다운되면 다른 컨테이너를 다시 시작해야한다.
이문제를 시스템에 의해 처리를 해주는 것이 쿠버네티스이기 때문에 많이 사용한다.
이 쿠버네티스는 분산시스템을 탄력적으로 실행하기 위한 프레임워크를 제공하고 애플리케이션의 확장과 장애조치를 처리하고, 배포 패턴등을 제공을 해준다.
쿠버네티스가 제공하는것을은 다음과 같은것들을 제공해준다.
먼저 컨테이너에 대한 트래픽이 많으면 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포해 배포가 안정적으로 이루진다.
또한 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재상태를 원하는 상태로 설정한 속도에 따라 변경할수 있다. (ex. 쿠버네티스를 자동화해 배포용 새 컨테이너를 만들고 기존 컨테이너를 제거하고 모든 리소스를 새 컨테이너에 적용할 수 있다.
쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재 할 수 있으며 각 컨테이너가 필요로 하는 cpu와 메모리를 쿠버네티스에 할당해 줄 수 있다.
만약 컨테이너가 잘못되었을 때 해당 컨테이너를 다시 시작하고 컨테이너를 교체한다. 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에게 보여주지않는다.
암호 OAuth 토큰 및 ssh 키와 같은 중요한 정보를 저장하고 관리 할 수 있는데 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있다.
쿠버네티스를 배포하면 클러스터를 얻는데 이 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고하는 워커 머신의 집합니며 모든 클러스터는 최소 한 개의 원커 노드를 가진다.
워커 노드는 애플리케이션의 구성 요소인 파드를 호스트하고 컨트롤 플레인은 워커노드와 클러스터내 파드를 관리한다.
프로덕션 환경에는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행 하므로 내 결함성과 고가용성이 제공된다
컨트롤 플레인 컴포넌트는 클러스터에 관한 전반적인 결정(예를 들어, 스케줄링)을 수행하고 클러스터 이벤트(예를 들어, 디플로이먼트의 replicas 필드에 대한 요구 조건이 충족되지 않을 경우 새로운 파드를 구동시키는 것)를 감지하고 반응한다.
컨트롤 플레인 컴포넌트는 클러스터 내 어떠한 머신에서든지 동작할 수 있다.
그러나 간결성을 위하여, 구성 스크립트는 보통 동일 머신 상에 모든 컨트롤 플레인 컴포넌트를 구동시키고, 사용자 컨테이너는 해당 머신 상에 동작시키지 않는다.