728x90
쿠버네티스 클러스터
클러스터란 컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드들로 이루어진 집합.
물리머신, 가상 머신, 온프레미스, 클라우드에 구애 받지 않고 머신 그룹 전체에서 컨테이너를 예약하고 실행할 수 있다.
쿠버네티스 클러스트는 용도에 따라 Worker Node와 Master Node로 구분된다.
Worker Node
- 각기 다른 컨테이너들이 선적된 컨테이너 선의 역할이다. 각기 다른 목적과 기능으로 세분화된 컨테이너들이 실제 배치되는 노드를 의미한다.
Master Node
- 컨테이너 선단을 지휘하는 통제함의 역할. 대규모 컨테이너를 운영하려면 각 워커노드들의 가용 리소스 현황을 고려하여 최적의 컨테이너 배치와 모니터링, 컨테이너에 대한 추적 관리가 필요해진다
컨트롤 플레인(Control plane)
- 전체의 워크로드 리소스 등 주요 요소들을 배포하고 제어하는 역할.
- 마스터 노드에 포함되어 해당되어있다.
etcd
- 클러스터 안의 각 구성요소들에 대한 정보가 key-value 형태로 저장된 데이터베이스
- 쿠버네티스에서는 클러스터에 노드가 몇개인지, 각 파드들이 어떤 컨테이너를 어떤 노드에서 어떤식으로 동작하고 있는지 etcd에 기록된다. kubelctl 명령을 통해 조회 가능한 모든 정보는 etcd를 거쳐오며, 제어 명령을 통해 클러스터에 변화가 적용되었다면 그 역시 etcd에 업데이트 된다.
스케줄러 (kube-scheduler)
- 애플리케이션 구동에 필요한 각 컨테이너에 대해 클러스터 내 최적의 배포를 수행하는 스케줄러
- kubelet이 Pod를 생성한다. 일정 관리자는 어떤 포드를 어디(Node)에 넣을지만 결정한다.
kube-controller-manager
- Node, Deployment, Service Account 등 클러스터에서 구동되는 리소스들을 유지 관리하는 프로세스들의 집합
- Node-Controller
- Replication-Controller
DNS 서버 (Core DNS)
- 클러스터 안에서 특정 도메인을 찾을 때 사용되는 네임 서버
API 서버 (kube-api-server)
- 클러스터 구성 요소들의 상호 통신에 필요한 쿠버네티스 API를 관리하는 컴포넌트
- 클러스터 안의 내부 통신을 담당한다. Manager Node, Worker Node 관리한다.
- 주기적으로 kubelelt으로부터 상태보고서를 가져온다. 컨테이너 상자의 모니터링을 위해서
- 순서
- Authenticate User
- Validate Request
- Retrieve data
- Update ETCD -> 유일하게 etcd와 상호작용함
- Scheduler -> api server를 이용해 각 영역의 클러스터에서 업데이트를 완료한다.
- Kubelet -> api server를 이용해 각 영역의 클러스터에서 업데이트를 완료한다.
- 각 Node 영역 : Pod들을 구성하기 위한 구성 요소
kubelet
- 클러스터의 각 노드에서 API 서버를 통해 들어오는 신호를 모니터링하고 파드에서 컨테이너가 기능대로 정상 동작 하는지 관리하는 에이전트
- 배의 선장과 같은 역할을 한다.
- 무리의 일원이 되기 위해 필요한 모든 서류를 처리한다.
- 마스터 node의 유일한 연락망이다.
- 운항 일정 관리자의 지시에 따라서 선박에 컨테이너를 싣거나 내립니다.
- 선박과 컨테이너 상태를 일정간격으로 보고한다.
- Register Node
- Create Pod
- Monitor Node & Pod -> Api server 에 주기적으로 보고한다.
kube-proxy
- 클러스터의 각 노드에서 실행되는 네트워크 프록시 서비스
- Pod Network : pod끼리 소통이 가능하다. 하지만 pod의 ip주소는 항상 바뀐다.
- 효율적으로 다른 pod에 접속하기 위해서 응용프로그램을 노출할 service를 생성하고 액세스 가능해짐.
- Service 메모리가 없는 가상 구성요소이다.
- kube-proxy는 쿠버네티스 클러스터의 각 노드에서 실행되는 프로세스이다. 새서비스를 찾아주는 역할.
- 새서비스가 생성될때마다 각 노드에 적절한 규칙을 만들어 그 서비스로 트래픽을 전달한다.
container runtime engine
- 노드에 배포된 파드 내 컨테이너들을 구동시키는 엔진
- Pod : 클러스터 안에서 배포되는 가장 작은 단위의 객체로 하나 이상의 컨테이너를 포함하고 있다.
Controller
Node-Controller
- Watch Status
- Remediate Situation
- Node Monitor Period = 5s
- Node Monitor Grace Period = 40s -> node의 신호가 다시 잡히기까지 40초의 시간일 걸린다.
- Pod Eviction Timeout = 5m -> 다시 pod가 뜨기까지
728x90