쿠버네티스 컨테이너 구성요소에 대해 알아봅니다.
목차
Toggle쿠버네티스 컨테이너 특징
- 호스트 OS의 커널을 공유하면서 분리된 프로세스로서 실행됩니다.
도커 정의
- 도커는 컨테이너를 동작시키기 위한 엔진입니다.
- Dockerfile 정의 파일을 작성하여 동일한 컨테이너 이미지를 만듭니다.(Iac Infrastructure as Code)
- 또한 도커는 컨테이너 이미지를 저장, 공유하기 위한 에코시스템입니다
- docker hub 를 이용해 도커를 관리할 수 있습니다.
- docker push는 도커 이미지를 업로드하는 것이고 docker pull은 도커 이미지를 다운로드합니다.
쿠버네티스란 무엇인가
쿠버테티스의 기본 오브젝트
- 파드 Pod
- 파드는 쿠버네티스의 최소 단위입니다.
- 파드 하나 안에 하나 이상의 컨테이너를 동작시킬 수 있습니다.
- 파드는 어떤 컨테이너 이미지를 사용할지 등을 결정합니다.
- 레플리카셋 ReplicaSet
- 파드를 얼마나 동작시킬지 관리하는 오브젝트입니다.
- 파드의 수를 설정하면 그 수만큼의 파드가 레플리카셋 안에서 동작합니다.
- 디플로이먼트 Deployment
- 디플로이먼트는 배포이력을 관리합니다.
- 애플리케이션의 새로운 버젼을 릴리스하거나 부하 증가에 따라 레플리셋 수를 변경하는 등 여러 가지 동작이 발생하는데 이 동작들을 디플로이먼트로 관리할 수 있습니다.
- 또한 서비스 상에 오류가 있을 때 다시 돌릴 수 있는 롤팩 기능 등의 적용 이력을 관리합니다.
- 서비스를 운영하는 상황 대부분에서 파드를 동작시킬 때는 디플로이먼트 단위로 관리합니다.
- 서비스 Service
- 서비스는 배포한 파드를 쿠버네티스 클러스터 외부에 공개하기 위한 구조를 제공합니다.
- 예로 로드밸런서를 연결하여 특정 파드를 클러스터 외부로 공개합니다.
쿠버네티스 구성 요소
- etcd
- 고가용성을 제공하는 키-값 저장소입니다
- 쿠버네티스에서 필요한 모든 데이터를 저장하는 데이터베이스 역할을 합니다.
- kubelet
- kubelet는 마스터에 있는 도커를 관리합니다.
- kube-apiserver 와 통신하면서 파드의 생성, 관리, 삭제를 담당합니다.
- 쿠버네티스 도커 안의 컨포넌트
- kube-scheduler
- 현재 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새롭게 만든 파드를 실행합니다.
- kube-controller-manager
- 컨트롤러 각각을 실행하는 컴포넌트입니다.
- kube-apiserver
- 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트입니다.
- 모든 요청은 이것을 이용해서 다른 컴포넌트로 전달됩니다.
- kube-proxy
- kube-scheduler
- cloud-controller-manager
- 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트입니다.
- Node Controller는 클라우드 서비스 안에서 노드를 관리하는 데 사용합니다.
- Router Contoller는 각 클라우드 서비스 안의 네트워크 라우팅을 관리하는 데 사용합니다.
- Service Controller는 각 클라우드 서비스에서 제공하는 로드밸런서를 생성, 갱신하거나 삭제하는 데 사용합니다.
- Volume Controller는 클라우드 서비스에서 생성한 볼륨을 노드에 연결하거나 마운트하는 등에 사용합니다.
이상으로 쿠버네티스에 대한 요소들을 알아봤습니다.