Fairy ' s
[K8s] Cluster Architecture 본문
Kubernetes
- 응용 프로그램을 컨테이너 형식으로 자동화하여 호스트하는 것
- 프로그램의 많은 인스턴스를 쉽게 배포할 수 있다.
- 응용 프로그램 내 다양한 서비스의 통신이 쉽게 가능하다.
- Kubernetes Cluster : 노드 세트로 구성되며, 물리적 가상, 온-프레미스 또는 클라우드일 수도 있고 컨테이너 형태의 응용 프로그램 호스트일 수도 있다.
Master Node : Manage, Plan, Schedule, Monitor Nodes
쿠버네티스 클러스터를 관리하고 서로 다른 노드에 대한 정보를 저장하고 어떤 컨테이너가 어디로 갈지 계획하고, 노드와 컨테이너를 모니터링하는 등등을 책임진다. 클러스터에 관한 정보를 저장하는 ETCD 클러스터가 있다.
>> ETCD Cluster, Kube-APIServer, Kube Controller Manager, Kube-Scheduler
- ETCD Cluster : 키 값 형식으로 정보를 저장하는 데이터베이스
- Kube API Server : 쿠버네티스의 주요 관리 구성 요소로, 클러스터 내에서 모든 작업을 오케스트레이션 한다.
- 클러스터에서 관리 작업을 수행하고, 클러스터 상태를 모니터링하는 다양한 컨트롤러를 외부 사용자가 사용할 수 있게 한다.
- 요구에 따라 필요한 변경을 하고 작업자 노드가 서버와 통신한다.
- 노드와 컨테이너의 상태를 모니터링하기 위해 주기적으로 Kubelet으로부터 상태 보고서를 가져온다.
- Kube Controller Manager
- Node 컨트롤러 : 새 노드를 클러스터에 온보딩하고 노드가 사용 불가능하거나 파괴되는 상황을 처리한다.
- Replication 컨트롤러 : 원하는 컨테이너 수가 복제 그룹에서 항상 실행되도록 보장한다.
- Kube scheduler : 노드의 응용 프로그램이나 컨테이너의 스케줄을 짜는 역할을 한다.
- 컨테이너를 설치하기 위해 컨테이너 리소스 요구사항이나 워커 노드 용량 혹은 다른 정책이나 제약 조건들, 테인트와 관용 또는 노드 친화성 규칙에 근거해서 올바른 노드를 식별한다.
Worker Nodes : Host Application as Containers
>> Kubelet, Kube-proxy, Container Runtime Engine (Docker, Rocket)
- Kubelet : 클러스터의 각 노드에서 실행되는 에이전트이다.
- Kube API 서버의 지시를 듣고 필요한대로 노드에서 컨테이너를 배포하거나 파괴한다.
- 컨테이너와 Kube Proxy를 관리하며, 클러스터 내부의 서비스 간 통신을 가능하게 한다.
- Kube proxy : 작업자 노드에 필요한 규칙이 시행되도록 하며, 그 위에서 실행되는 컨테이너가 서로 닿을 수 있게 한다.
- Container Runtime Engine : 컨테이너가 돌아가게 하는 엔진. 대표적으로 Docker가 있다.
'Study > K8s' 카테고리의 다른 글
[K8s] Pods (0) | 2023.07.28 |
---|---|
[K8s] Kube Scheduler & Kublet & Kube Proxy (0) | 2023.07.12 |
[K8s] CLI (0) | 2023.07.12 |
[K8s] Kube Controller Manager & Kube API Server (0) | 2023.07.12 |
[K8s] ETCD (0) | 2023.07.11 |
Comments