컨테이너 오케스트레이션 플랫폼입니다.
컨테이너들을 빌드하고 배포하고 그런걸 편리하게 해주는것입니다.
kubernetes (이하k8s)는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다.
컨테이너화된 어플리케이션을 배포하고 확장, 관리등을 자동화하기 위한 프레임워크를 제공합니다.
k8s는 master/worker node로 구성된 cluster 아키텍처에서 작동하는데
master node는 전체 클러스터를 감독하고 api서버, etcd(key-value저장소) ,scheduler , controller panel같은요소를 관리합니다.
worker node는 container화된 워커로드를 호스팅하고 컨테이너 런타임과 함께 kubelet이라고 하는 kubernetes agent를 실행합니다.
k8s 중심에는 클러스터 관리를 위한 API서버가 있고 개발자와 운영자는 k8s API 를 통해 클러스터와 상호작용합니다.
이를 통해 pod, deploy, service, build와 같은 리소스를 정의하고 수정할 수 있습니다.
API 서버는 이런 요청의 유효성을 검사하고 처리해 원하는 상태를 etcd에 저장합니다.
pod는 k8s에서 배포의 기본 단위이며 하나이상의 컨테이너를 캡슐화하고 격리된 실행 환경을 제공합니다.
k8s는 worker node에서 실행되도록 pod를 예약합니다.
각 worker node에서 실행되는 kubelet은 필요에 따라 컨테이너를 시작/중지해 원하는 pod상태가 유지되도록 합니다.
k8s 다양한 워크로드 요구사항을 처리할 수 있는 확장 기능을 제공 합니다.
CPU사용률 또는 사용자 지정 메트릭과 같은 메트릭 기반으로 pod replica를 자동 조정할 수 있습니다.
kube-proxy라고 하는 built-in 로드밸런서는 트래픽이 사용가능한 pod에 분산되도록 고가용성 및 효율적인 리소스 활용에 도움을 줍니다.
k8s는 클러스터내의 서비스가 dns 이름을 사용해 서로 검색하고 통신할 수 있도록 dns기반 서비스 검색 매커니즘을 제공합니다.
kube-proxy는 (4)와 함께 서비스에 대한 라우팅및 로드밸런싱을 관리함으로써 서비스 네트워킹 역할도 합니다.
K8s는 PV (Persistent Volumes) 및 PVC (Persistent Volume Claims)와 같은 스토리지를 관리하는 메커니즘을 제공합니다.
예컨데 관리자는 PV라는 기본 스토리지를 제공하면 개발자는 그안에서 일부 필요에 따라 볼륨을 마운트 하여 사용할 수 있습니다.
어플리케이션을 배포하고 업데이트할때 k8s는 Rolling update를 제공합니다.
이는 old pod -> new pod로 점진적 스위치를 함으로써 무중단 업데이트를 가능하게 합니다.
rollback또한 손쉽게 가능합니다.
Yaml , Json파일로 어플리케이션과 인프라의 원하는 상태를 정의해 사용할 수 있습니다. (프로비저닝)