[kubernetes] Master/Worker 노드 개념 알아보기
Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리하는 오픈 소스 플랫폼이며, 다양한 환경에서 일관된 애플리케이션 실행을 가능하게 해주는 컨테이너 오케스트레이션 도구입니다.
Kubernetes에서 Master 노드와 Worker 노드는 클러스터를 구성하는 두 가지 주요 노드 유형입니다.
각 노드는 서로 다른 역할을 가지고 있으며, 이들이 협력하여 애플리케이션을 배포하고 관리하는 환경을 제공합니다.
Master 노드와 Worker 노드의 개념에 대해서 알아보도록 하겠습니다.
개념
Master 노드
주요 : 클러스터 제어 및 관리, 작업 스케줄링 담당
Master 노드는 클러스터의 중앙 제어 시스템으로, 클러스터 상태를 관리하고, 워크로드를 스케줄링하며, Worker 노드를 관리하는 역할을 합니다. 여러 주요 컴포넌트로 구성되어 있으며, 이들 컴포넌트가 협력하여 클러스터가 안정적이고 효율적으로 작동하도록 보장합니다.
Master 노드가 다운되면 클러스터의 제어 기능에 문제가 발생하며, 특히 단일 Master 노드 구성에서는 클러스터 가용성이 크게 저하됩니다. 이 때문에 프로덕션 환경에서는 일반적으로 다중 Master 노드를 구성하여 고가용성을 보장하고, Master 노드에 문제가 발생해도 클러스터가 지속적으로 운영될 수 있도록 합니다.
Worker 노드
주요 : 애플리케이션(Pod) 실행 및 실제 작업 수행
Worker 노드는 클러스터에서 실제로 애플리케이션이 실행되는 장소로, 클러스터에 배포된 Pod와 컨테이너를 호스팅하고 관리합니다. 사용자가 요청한 애플리케이션 워크로드를 처리하고, 각 애플리케이션이 원활하게 동작하도록 필요한 리소스를 제공합니다. Kubernetes 클러스터에서 실질적인 작업을 수행하는 노드로, 모든 애플리케이션과 서비스를 실제로 실행하며, 각 Pod와 컨테이너가 배포된 상태에서 안정적으로 동작하도록 보장합니다.
구성요소
Master 노드
-
- API 서버 (kube-apiserver)
- API 서버는 Kubernetes 클러스터와 상호작용하는 주요 구성요소 입니다.
- 사용자가 Kubernetes 클러스터와 통신할 때, kubectl과 같은 CLI 도구 또는 외부 시스템은 API 서버를 통해 요청을 전달합니다.
- 모든 요청을 인증 및 인가하고, 필요한 경우 요청을 허용하거나 거부합하며 etcd에 저장된 클러스터 상태를 조회하고 업데이트하여 클러스터의 일관성을 유지합니다.
-
- etcd
- etcd는 Kubernetes 클러스터의 모든 상태 데이터를 저장하는 분산 키-값 데이터베이스입니다.
- Kubernetes의 핵심 데이터 저장소로, 클러스터의 구성 정보와 상태 정보를 영구적으로 저장합니다.
- 모든 Kubernetes 오브젝트(Pod, 서비스, ConfigMap 등)의 상태, 구성, 설정 등을 저장합니다.
-
- 컨트롤러 매니저 (kube-controller-manager)
- 컨트롤러 매니저는 여러 개의 컨트롤러를 하나의 프로세스에서 관리하는 역할을 합니다.
- 클러스터의 상태를 지속적으로 점검하고 수정하여 원하는 상태를 유지합니다
-
- 스케줄러 (kube-scheduler)
- 스케줄러는 새로 생성된 Pod를 클러스터 내의 적절한 Worker 노드에 배치하는 역할을 합니다.
- 적절한 노드를 선택하여 리소스를 최적화하며, 클러스터의 안정성과 효율성을 높입니다.
- 스케줄러가 없으면, 새로운 Pod가 생성되어도 어느 노드에서도 실행되지 않습니다.
-
- 클라우드 컨트롤러 매니저 (cloud-controller-manager)
- 클라우드 컨트롤러 매니저는 클라우드 환경에서 Kubernetes 클러스터와 클라우드 공급자 간의 상호작용을 담당하는 컴포넌트입니다.
- 이는 Kubernetes와 클라우드 제공자 API 간의 인터페이스 역할을 하며 이를 통해 클러스터 관리와 확장성을 높일 수 있습니다.
Worker 노드
-
- kubelet
- kubelet은 Worker 노드의 핵심 에이전트로, 해당 노드에서 실행될 Pod와 컨테이너를 관리하는 역할을 합니다.
- Master 노드의 API 서버와 지속적으로 통신하여, 노드에서 실행할 Pod의 정의를 받고 이를 관리합니다.
- kubelet은 각 Pod의 상태를 주기적으로 확인하고 보고하여, 문제가 발생한 경우 자동으로 복구하거나 재시작하는 등의 작업을 수행합니다.
-
- 컨테이너 런타임(Container Runtime)
- 컨테이너 런타임은 컨테이너 작업 및 실행을 담당하는 소프트웨어입니다.
- Kubernetes는 여러 컨테이너 런타임을 지원하며, 대표적으로 Docker, containerd, CRI-O 등이 사용됩니다.
- 컨테이너 런타임은 kubelet과 상호작용하여 Pod의 컨테이너를 생성, 시작, 중지하는 작업을 수행합니다.
-
- kube-proxy
- kube-proxy는 Kubernetes 클러스터 내에서 네트워크 통신을 관리하는 역할을 하는 네트워크 프록시입니다.
- 클러스터 내부의 모든 Pod와 서비스 간의 네트워크 트래픽을 라우팅하고, 네트워크 규칙을 설정하여 서비스와 Pod가 서로 통신할 수 있도록 지원합니다.
구성 요소를 보면 Kubernetes는 Master 노드와 Worker 노드로 역할이 분리되어 클러스터를 안정적으로 관리하고 확장성을 높이는 특징이 있습니다. Master 노드는 클러스터의 상태 관리, 스케줄링, 클라우드 연동을 담당하고, Worker 노드는 kubelet, 컨테이너 런타임 등을 통해 실제 애플리케이션을 실행합니다. 이러한 구조는 Kubernetes가 다양한 환경에서 유연하고 효율적으로 작동하도록 지원합니다.
Kubernetes에서 Master 노드와 Worker 노드의 개념과 구성을 간단히 알아봤는데요.
먼저, Kubernetes 클러스터를 구성하기 위해 Master 노드와 Worker 노드의 역할을 이해해야 합니다.
Master 노드는 클러스터의 상태 관리, 작업 스케줄링, 클라우드 연동을 담당하는 중앙 제어 시스템으로, API 서버, etcd, 컨트롤러 매니저, 스케줄러 등으로 구성됩니다. Worker 노드는 실제 애플리케이션이 실행되는 작업 노드로, kubelet, 컨테이너 런타임, kube-proxy 등의 구성 요소를 포함해 Pod와 컨테이너를 관리합니다.
구성 요소를 보면 Kubernetes는 Master 노드와 Worker 노드로 역할이 분리되어 있으며, 클러스터의 안정성과 확장성을 높이는 구조로 설계되었습니다. 이를 통해 다양한 환경에서 유연하고 효율적인 애플리케이션 배포 및 관리가 가능합니다.
지금까지 Kubernetes에서 Master 노드와 Worker 노드의 개념과 구성을 간단히 알아보았습니다...! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://github.com/kubernetes/kubernetes
https://www.aquasec.com/cloud-native-academy/kubernetes-101/kubernetes-nodes/
https://www.linkedin.com/pulse/master-worker-node-components-kubernetes-cluster-vikas-arora
'kubernetes' 카테고리의 다른 글
[kubernetes] kubeadm join 시 필요한 정보 확인 (1) | 2024.11.04 |
---|---|
[kubernetes] kubeadm join 시 secrets "kubeadm-certs" is forbidden 오류 확인 (2) | 2024.11.01 |
[kubernetes] kubeadm init 클러스터 구성하기 (0) | 2024.10.22 |
[kubernetes] kubeadm, kubelet, kubectl 설치하기 (0) | 2024.09.25 |
[kubernetes] kubeadm init "found multiple CRI endpoints on the host" 오류 (0) | 2024.09.19 |