워커 노드(Worker Node)
kubernetes 의 워커 노드는 클러스터의 일꾼으로, 실제 애플리케이션이 실행되는 곳입니다.
머신들은 물리 서버일 수도, 가상 머신(VM)일 수도 있습니다.
워커 노드의 주요 구성 요소
1. kubelet
각 노드에서 실행되는 기본 노드 Agent 로, 컨트롤 노드(api-server)와 통신하여 컨테이너의 생성, 시작, 중지를 담당합니다.
1-1. kubelet 의 주요 컴포넌트
kubelet 은 Kubernetes 클러스터의 핵심 에이전트로, 여러 중요한 컴포넌트로 구성되어 있습니다.
- Kubelet 에이전트
컨트롤 플레인으로 부터 지시를 받고 노드의 상태를 보고합니다.
- Kubelet API Server
kubelet 과 클러스터의 다른 구성 요소 간의 원활한 상호 작용을 가능하게 하는 통신 인터페이스 입니다.
- 런타임 환경
컨테이너의 생명주기를 관리하고 지정된 사양을 준수하는지 확인합니다.
- Pod 관리자
pod.spec 에 정의된 조건에 따라 컨테이너를 실행, 관리합니다.
- 리소스 관리자
노드의 CPU, Memory, disk 와 같은 컴퓨팅 리소스를 관리합니다.
- 상태 모니터링
노드와 파드의 건강 상태를 지속적으로 체크하고, 컨테이너의 헬스 체크를 수행하여 문제 발생 시 API 서버에 상태를 알립니다.
- cAdvisor(Container Advisor)
컨테이너의 리소스 사용량을 모니터링하고, 성능 통계를 수집해 분석하여 모니터링 데이터를 제공합니다.
2. kube-proxy
- Daemonset 으로 구성되어 있는 kube-proxy 는 네트워크 트래픽을 관리하고 서비스 간 통신을 가능케 합니다. 즉, 다른 워커 노드의 파드들 간 통신을 가능하게 합니다.
# 확인 방법
kubectl get daemonset --all-namespaces --field-selector metadata.name=kube-proxy
3. container runtime
- Docker 와 같은 컨테이너를 생성, 실행, 관리하는 소프트웨어 계층입니다.
- 운영체제 커널과 직접 통신하며 격리된 환경을 만드는 핵심 구성요소입니다.
- 컨테이너 구성
- 네임스페이스와 cgroup 설정
- 루트 파일시스템 마운트
- 리소스 제한 및 모니터링
- 라이프사이클 관리
- 컨테이너 생성
- 실행 및 중지
- 일시 중지와 재개
- 네트워크 인터페이스 관리
- 런타임 종류
- 저수준 런타임
- 컨테이너의 기본 실행 담당 ( ex. runc)
- 고수준 런타임
- 이미지 관리, 전송
- 네트워크 설정
- 컨테이너 라이프사이클 관리
- 저수준 런타임
워커 노드의 역할
상기 컴포넌트 별로 기능을 소개했지만 모두 워커 노드의 구성요소로 결국 워커 노드가 일하는 셈이다.
즉, 워커 노드는 파드의 생명주기를 관리하고, 실제 컨테이너화된 워크로드를 실행하는 애플리케이션을 실행시키고, kubelet 을 통한 지속적인 상태 모니터링으로 API 서버에 주기적으로 노드, 파드 에 전반적인 상태를 알리는 역할을 합니다.
워커 노드의 특징
1. 확장성 : 여러 개의 워커 노드를 추가할 수 있습니다.
2. 자동 복구 : 문제가 발생하면 자동으로 감지되어 관리됩니다.
3. 유연성 : 필요에 따라 노드를 추가/제거 할 수 있습니다.
감사합니다.
'Infra > Kubernetes' 카테고리의 다른 글
CRI & 컨테이너 런타임 (0) | 2025.02.20 |
---|---|
파드 생성 과정 (0) | 2025.02.18 |
etcd (0) | 2025.02.17 |
Control node (0) | 2025.02.12 |
근본(根本) (0) | 2025.02.11 |