IT Infra/Kubernetes
쿠버네티스 구성요소
Daniel.Lee
2022. 2. 22. 01:22
kubernetes는 다수의 서버를 관리하는 툴이다.
하나의 서버가 아니라, 여러 대의 서버를 관리하기 위한 툴이므로 여러가지 구성요소가 존재한다.
간혹 오브젝트랑 헷갈릴 수 있는데 오브젝트들이 모여서 하나의 서버가 되는 것이고 그 서버를 관리하는 것이 쿠버네티스 구성요소이다.
kubernetes는 크게 마스터(master),노드(node) 로 구성된다.
마스터(master)
마스터에는 etcd, API 서버, 컨트롤러 매니저, 스케줄러 등이 존재한다.
- etcd
- 구성 요소들의 상태 값이 모두 저장되는 곳
- etcd의 정보만 백업이 되어있다면 긴급한 장애 상황에서도 클러스터 복구 가능
- 분산 저장이 가능한 key-value 저장소이므로 복제해서 여러 곳에 저장을 해두면 하나의 etcd가 장애가 나더라고 시스템 가용성 확보
- API 서버
- 쿠버네티스 클러스터의 중심역할을 하는 통로
- 주로 상태 값을 저장하는 etcd와 통신, 그 밖의 요소들 또한 api 와 통신
- 모든 직원과 상황을 관리하고 목표를 설정하는 관리자에 해당
- 컨트롤러 매니저(Controller-manager)
- 쿠버네티스 클러스터의 오브젝트 상태를 관리
- 쿠버네티스에는 노드 컨트롤러, 레플리카셋 컨트롤러 등 다양한 컨트롤러가 있고 그 컨트롤러를 매니징하는 역할은 한다고 보면 된다.
- 스케쥴러
- 노트의 상태와 자원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것인지를 결정하고 할당한다.
- kubectl
- 쿠버네티스에 클러스터에 명령을 내리는 역할을 한다.
- 구성요소들과 다르게 바로 실행되는 명령 형태인 바이너리로 배포되므로 마스터 노드에 있을 필요는 없다.
노드(Node)
노드는 kubelet, 컨테이너 런타임(container Runtime),파드 등으로 구성 된다.
- kubelet
- 파드의 구성 내용을 받아서 컨테이너 런타임으로 전달하고 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링 한다.
- 컨테이너들이 실행되는 것을 직접적으로 관리하는 역할로 보면 된다.
- 컨테이너 런타임(container Runtime)
- 파드를 이루는 컨테이너의 실행을 담당한다.
- 파드 안에서 다양한 종류의 컨테이너가 문제없이 작동하게 만드는 표준 인터페이스이다.
- Docker 등 실제로 컨테이너를 실행시키는 구현체이다.
- 파드(Pod)
- 한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해 모인 단위
- 어떠한 컨테이너로 생성하냐에 따라 웹서버의 역할, 로그나 데이터 분석의 역할을 할 pod 로 만들 수 있다.
- 한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해 모인 단위
참고
https://www.skyer9.pe.kr/wordpress/?p=598
컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커