시스템엔지니어/Cloud

[쿠버네티스] k8s 클러스터의 마스터노드와 워커노드 구성

순제로 2025. 6. 7. 22:21
728x90

쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션을 위한 대표적인 오픈소스 플랫폼이다.

클러스터 구조는 크게 마스터노드(Control Plane)워커노드(Worker Node)로 나뉜다.

https://velog.io/@qkrtkdwns3410/%EB%A7%88%EC%8A%A4%ED%84%B0-%EB%85%B8%EB%93%9C%EC%99%80-%EC%9B%8C%EC%BB%A4-%EB%85%B8%EB%93%9C

마스터노드(Control Plane)

클러스터 전체를 제어하고 관리하는 중추적인 역할을 담당한다.

워커노드에 파드(Pod)를 할당하고, 클러스터 상태를 모니터링하며, 리소스 스케줄링과 장애 복구 등 전체적인 오케스트레이션을 수행한다.

 

주요 구성요소

  1. kube-apiserver: 모든 명령과 통신의 중심. REST API를 통해 클러스터를 제어한다.
  2. etcd: 클러스터의 모든 설정과 상태 정보를 저장하는 분산형 Key-Value 저장소.
  3. kube-scheduler: 파드를 어떤 워커노드에 배치할지 결정한다.
  4. kube-controller-manager: 파드, 노드 등 클러스터 오브젝트의 상태를 관리한다.
  5. cloud-controller-manager: 클라우드 환경과의 연동(예: 노드 추가/삭제, 로드밸런서 연결 등)을 담당한다.
  6. 구성 방식: 단일 마스터로도 운영할 수 있지만, 고가용성을 위해 3대 이상의 이중화 구성을 권장한다.

 

워커노드(Worker Node)

실제로 사용자 애플리케이션(컨테이너)이 동작하는 곳입니다. 마스터노드의 명령을 받아 파드 실행, 네트워크 관리, 로드밸런싱 등 실질적인 워크로드를 처리한다.

 

주요 구성요소

  1. kubelet: 마스터와 통신하며 파드의 상태를 관리하고, 컨테이너 런타임에 명령을 전달한다.
  2. kube-proxy: 파드 간 네트워크 트래픽을 관리하고, 서비스 로드밸런싱을 지원한다.
  3. 컨테이너 런타임: 실제 컨테이너를 실행하는 엔진(예: Docker, containerd 등).
  4. 확장성: 워커노드는 필요에 따라 자유롭게 증설이 가능하며, 일반적으로 마스터노드보다 더 많은 수로 구성한다.

클라우드 환경에서의 쿠버네티스 구성 사례

1. AWS EKS(Elastic Kubernetes Service) 환경

AWS EKS는 AWS에서 제공하는 완전관리형 쿠버네티스 서비스로, 마스터노드는 AWS가 직접 관리하여 사용자는 워커노드와 클러스터 설정에 집중할 수 있다.

 

 

구성 절차 요약

  1. IAM 역할 생성: EKS 클러스터와 노드 그룹에 필요한 권한을 가진 IAM 역할을 생성한다.
  2. 클러스터 생성: AWS 콘솔에서 EKS 클러스터를 생성합니다. 클러스터 이름, 쿠버네티스 버전, IAM 역할, 네트워크(VPC/서브넷) 정보를 입력한다.
  3. 노드 그룹 추가: 워커노드 역할을 할 EC2 인스턴스 그룹(노드 그룹)을 추가합니다. 인스턴스 타입, 개수, 서브넷, 보안그룹 등을 지정한다.
  4. kubectl 연결: 클러스터가 생성되면, AWS CLI 또는 콘솔에서 kubeconfig 파일을 받아 kubectl로 클러스터에 접근할 수 있다.

 

특징

  1. 마스터노드는 AWS가 관리하므로 직접 운영할 필요가 없다.
  2. 워커노드는 EC2 인스턴스로 구성하며, 필요에 따라 자동 확장(Auto Scaling) 설정이 가능하다.
  3. 네트워크, 보안, 로깅 등 AWS 서비스와의 통합이 용이하다.

 

2. 카카오클라우드 Kubernetes Engine 환경

카카오클라우드는 자체 Kubernetes Engine을 통해 손쉽게 쿠버네티스 클러스터와 노드풀을 생성할 수 있다.

 

구성 절차 요약

  1. 네트워크 환경 설정: VPC와 서브넷, NAT 인스턴스 등을 구성하여 클러스터 네트워크 환경을 준비한다.
  2. 클러스터 생성: 카카오클라우드 콘솔(Container Pack > Kubernetes Engine)에서 클러스터를 생성합니다. 클러스터 이름, 버전, VPC, 서브넷 등을 지정한다.
  3. 노드풀 생성: 클러스터 내에 워커노드로 사용할 노드풀을 생성합니다. 인스턴스 타입, 노드 수, 볼륨 등을 설정한다.
  4. kubectl 설정: 카카오클라우드에서 제공하는 kubeconfig 파일과 인증 클라이언트(kic-iam-auth)를 설치·설정하여 kubectl로 클러스터에 접근한다.
  5. 애플리케이션 배포: Container Registry와 연동하여 이미지를 배포하고, Load Balancer를 통해 외부 노출이 가능하다.


특징

  1. 콘솔 기반의 간편한 클러스터 및 노드풀 생성.
  2. 카카오클라우드 인증 시스템과 연동된 보안 체계.
  3. 기본적인 네트워크 및 보안 설정 가이드 제공.

 

 

마스터노드와 워커노드 구성, 그리고 클라우드 환경에서의 실전 사례

구분 마스터노드(Control Plane) 워커노드(Worker Node)
역할 클러스터 관리, 스케줄링, 상태 모니터링, 오케스트레이션 실제 컨테이너(Pod) 실행, 네트워크/스토리지 관리
주요 컴포넌트 kube-apiserver, etcd, scheduler, controller-manager, cloud-controller-manager kubelet, kube-proxy, 컨테이너 런타임
고가용성 1대 이상 이중화 권장 필요에 따라 자유롭게 증설
클라우드 관리 AWS EKS, 카카오클라우드 등에서 관리형 서비스 제공 EC2, VM 등 인스턴스 기반으로 직접 관리

 

마무리

쿠버네티스 클러스터는 마스터노드와 워커노드의 역할 분담을 통해 대규모 컨테이너 환경을 안정적으로 운영할 수 있습니다. AWS EKS, 카카오클라우드 Kubernetes Engine 등 클라우드 서비스에서는 관리형 클러스터를 손쉽게 구축할 수 있어, 인프라 관리 부담을 줄이고 서비스 개발과 운영에 집중할 수 있다

728x90