Kubernetes Component
쿠버네티스를 구성하는 Component에는 크게 전체 클러스터를 관리하는 마스터(Master), 컨테이너가 배포되는 노드(Node), 에드원 노드로 총 3가지 종류의 Component가 있으며, 각각의 Component는 다음과 같은 역할을 수행한다.
- Master Component : 클러스터 관리 역할에 필수적인 컴포넌트
- 일반 노드 Component : Worker, 애플리케이션 작업 관리 하는 주체 역할
- addon 노드 Component : 필수는 아닌 추가 모듈 역할, ex. 네트워킹 에드온 등
Kubernetes node는 실제 master로 부터 전달 받은 명령을 수행하는 주체로 모듈로는 kubelet, kube-proxy 등이 있으며, addon 모듈은 클러스터 내에서 필요로 하는 특정 기능을 수행하는 파드이며 종류로는 네트워킹 addon, DNS addon 등이 있다.
- kubelet : 모든 노드에서 실행되는 k8s daemon으로, Pod를 선언 정보에 다라 실행 및 관리
- kube-proxy : k8s의 네트워크의 전반을 담당 (중계 및 변환 등 proxy 역할)
- network addon : 클러스터 안 가상 네트워크 구성역할
- DNS addon : 쿠버네티스 내부 서비스에 DNS 레코드를 제공하는 역할
addon Node는 그 외에도 Dashboard addon, 컨테이너 자원 모니터링 (cAdvisior) 등이 있다.
Worker 노드, Addon 노드 Component
Worker node Component는 Master 노드로부터 전달 받은 명령을 실제 수행하는 주체
- 마스터의 API Server와 통신하며 서비스를 생성하고 상태를 관리
- kubelet을 통한 서비스(컨테이너) 실행, 중지 및 alive 상태 목표의 관리
- Proxy 역할 : network proxy와 loadbalancer 역할을 수행
Addon 모드는 클러스터 내에서 특정 필요 기능을 수행할 수 있는 부가적인 Node Component로, namespace는 kube-system이며 동일하게 deployment, replication 컨트롤러 등의 형태로 관리된다.
kubelet (명령 도구)
kubelet은 모든 노드에서 실행되는 k8s daemon으로, Pod의 선언 정보에 따라 실행, 관리 하는 역할
👉 kubelet의 특징
- 마스터의 kube-apiserver와 통신하면서 Pod의 생성, 관리, 삭제를 담당
- 워커 노드 에서는 scheduler로 부터 받은 Pod Spec을 Docker로 전달하여 container 실행
- 내부적으로 cAdviser라는 모니터링 Tool을 통해 현재의 컨테이너에 대한 정보 수집, etcd에 저장
kube-proxy
k8s의 network 동작을 관리하며 다양한 중계 및 변환을 수행하는 네트워크 Proxy 역할
👉 kube-proxy 특징
- 외부에서 들어오는 연결 수신
- privileage 권한을 가지고 있으며, ip-tables rules 구성
Networking addons
클러스터 안 가상 네트워크 구성시 kube-proxy 외에 네트워킹 에드온을 사용
DNS addons
클러스터 안에서 동작하는 DNS 서버로 쿠버네티스 서비스에 DNS 레코드를 제공하는 역할을 수행
👉 DNS addons 특징
- 쿠버네티스 안에 실행된 컨테이너들은 자동으로 DNS 서버에 등록됨
- 종류는 크게 CoreDNS, Kube-DNS가 있으며, 초기에는 kube-DNS가 많이 사용됬으나, 버그가 많아 나중에는 CoreDNS를 기본 애드온으로 많이 사용
마무리
이번 글에서는 Kuberenetes의 Architecture 중 Worker Component와 addon Component의 구성에 대해 알아보았다. 다음 시간엔 위 모듈들을 바탕으로 k8s의 동작 흐름(Flow)에 대해 알아보려고 한다.
'DevOps > Kubernetes' 카테고리의 다른 글
[K8S] k8s 정리 - (6) Kubernetes Controller 종류와 역할 (2) | 2022.09.07 |
---|---|
[K8S] k8s 정리 - (5) Kubernetes Object (Pod, Service, Volume, Namespace) (0) | 2022.09.07 |
[K8S] k8s 정리 - (4) Kubernetes 동작 Flow (0) | 2022.08.29 |
[K8S] k8s 정리 - (2) Kubernetes Architecture - Master (0) | 2022.08.28 |
[K8S] k8s 정리 - (1) Kubernetes 소개 및 특징 (0) | 2022.08.28 |