Skip to Content

Kubernetes 클러스터란?

파란 스레드는 네트워크 다이어그램을 닮은 어두운 배경의 다양한 노드를 교차하여 연결합니다.

Kubernetes 구축, 확장 및 운영을 자동화하는 강력한 시스템을 제공함으로써 조직이 컨테이너화된 애플리케이션을 관리하는 방식에 혁신을 가져왔습니다. Kubernetes의 핵심은 효율적인 컨테이너 오케스트레이션에 필수적인 클러스터의 개념입니다. Kubernetes 클러스터를 이해하는 것은 컨테이너 기술을 최대한 활용하고자 하는 모든 조직에 매우 중요합니다.

이 문서에서는 Kubernetes 클러스터의 정의, 구성 요소, 설정 방법 및 관리를 위한 모범 사례를 살펴봅니다.

Kubernetes 클러스터란?

Kubernetes 클러스터는 컨테이너화된 애플리케이션을 실행하고 관리하기 위해 함께 작동하는 시스템(노드) 그룹입니다. Kubernetes 클러스터의 주요 목적은 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 것입니다. 이는 사용자에게 다음과 같은 몇 가지 주요 혜택을 제공합니다.

  • 확장성 향상: Kubernetes 클러스터는 탄력적인 확장성을 제공합니다. 필요에 따라 노드를 추가하거나 제거하여 애플리케이션을 쉽게 확장하거나 축소할 수 있습니다. 예를 들어, 피크 트래픽 기간 동안 노드를 더 추가하여 증가된 부하를 처리할 수 있습니다. 반대로 수요가 적은 기간에는 클러스터를 축소하여 리소스를 절약할 수 있습니다.
  • 향상된 내결함성 : Kubernetes 클러스터는 가용성이 높도록 설계되었습니다. 중요한 애플리케이션이 서로 다른 노드의 여러 포드에서 실행되는 복제를 통해 이를 달성할 수 있습니다. 노드에 장애가 발생하면 Kubernetes 자동으로 장애가 발생한 컨테이너를 다시 시작하고 건강한 노드에서 다시 일정을 잡습니다. 이를 통해 노드에 장애가 발생하더라도 애플리케이션을 계속 사용할 수 있습니다.
  • 간소화된 관리: Kubernetes 클러스터는 컨테이너화된 애플리케이션의 관리를 간소화합니다. Kubernetes 각 개별 노드의 구성을 수동으로 관리하는 대신 YAML에 작성된 선언적 구성 파일을 사용합니다. 이러한 파일은 애플리케이션의 원하는 상태를 지정하며, Kubernetes 상태가 유지되도록 보장합니다.

Kubernetes 클러스터의 구성 요소

Kubernetes 클러스터는 제어 평면과 작업자 노드의 두 가지 주요 구성 요소로 구성됩니다. 이러한 각 구성 요소는 클러스터를 관리하고 컨테이너화된 애플리케이션을 실행하는 데 특정 역할을 합니다.

제어 평면

제어 평면은 Kubernetes 클러스터의 두뇌 역할을 하며, 의사 결정을 내리고 작업자 노드에 명령을 내릴 책임이 있습니다. 다음과 같은 몇 가지 핵심 요소로 구성됩니다.

  • API 서버: API 서버는 클러스터의 중앙 통신 허브입니다. 모든 관리 작업 및 클러스터와의 상호 작용의 진입점 역할을 하는 Kubernetes API를 노출시킵니다. kubectl과 같은 사용자와 툴은 API 서버를 통해 클러스터와 상호 작용하여 명령을 제출하고, 배포를 관리하며, 클러스터 정보에 액세스합니다.
  • etcd : etcd는 클러스터 상태의 단일 진실 소스 역할을 하는 고가용성 분산 키-값 저장소입니다. 포드 정의, 서비스 세부 정보 및 원하는 배포 상태를 포함한 클러스터 구성에 대한 중요한 정보를 저장합니다. 이 데이터는 일관성과 내결함성을 보장하기 위해 여러 개의 등 노드에 복제됩니다.
  • 스케줄러: 스케줄러는 클러스터의 작업자 노드에 워크로드(포드)를 할당할 책임이 있습니다. 스케줄을 결정할 때 리소스 가용성, 노드 용량 및 포드 안티친화성 규칙과 같은 요소를 고려합니다. 예를 들어, 스케줄러는 리소스 활용도를 향상시키거나 충분한 용량을 가진 노드에서 높은 리소스 요구 사항을 가진 포드의 우선순위를 지정하기 위해 여러 노드에 포드를 분산시킬 수 있습니다.
  • 컨트롤러 관리자: 컨트롤러 관리자는 클러스터의 모든 컨트롤러를 관리하는 중심점입니다. 컨트롤러는 클러스터의 상태를 지속적으로 모니터링하고, 클러스터의 실제 상태가 구성에 정의된 원하는 상태와 일치하는지 확인하기 위해 수정 조치를 취해야 합니다. 컨트롤러 관리자는 각기 다른 목적으로 여러 코어 컨트롤러를 관리합니다.

작업자 노드

작업자 노드는 클러스터의 워크 호스입니다. 실제로 컨테이너화된 애플리케이션을 실행하는 머신입니다. 각 작업자 노드에는 컨테이너 관리 및 실행을 담당하는 몇 가지 구성 요소가 있습니다.

  • Kubelet : kubelet은 각 작업자 노드에서 실행되는 상담원입니다. 노드에서 제어 평면의 담당자 역할을 하며 노드에 할당된 포드의 수명 주기를 담당합니다. Kubelet은 포드 내의 컨테이너가 포드 사양에 따라 다운로드, 구성 및 실행되도록 합니다. 또한 컨테이너의 상태를 모니터링하고, 고장난 컨테이너를 다시 시작하며, 컨테이너가 안전하게 실행하는 데 필요한 비밀을 가져옵니다.

  • 쿠베-프록시: Kube-proxy는 각 작업자 노드에서 실행되는 네트워크 프록시입니다. 클러스터에 대해 정의된 네트워크 정책을 구현하고 포드가 서로 및 외부 서비스와 통신할 수 있도록 합니다. Kube-proxy는 네트워크 라우팅 규칙을 유지하고 서비스 이름을 Pod IP 주소로 변환하여 Pod가 클러스터 내의 서비스를 검색하고 통신할 수 있도록 합니다.

제어 평면과 작업자 노드 내의 이러한 구성 요소를 함께 사용하면 Kubernetes 컨테이너화된 애플리케이션을 대규모로 효과적으로 관리 및 오케스트레이션할 수 있습니다.

Kubernetes 클러스터 설정

Kubernetes 클러스터는 관리형 Kubernetes 서비스를 사용하거나 수동으로 배포하는 두 가지 주요 방법을 통해 설정할 수 있습니다.

관리형 Kubernetes 서비스

Google Kubernetes 엔진(GKE)이 탑재된 Google 클라우드 플랫폼(GCP), Elastic Kubernetes 서비스(EKSAmazon Web Services (AWS)), Azure Kubernetes 서비스(AKS)가 탑재된 Microsoft Azure와 같은 클라우드 제공업체는 관리형 Kubernetes 서비스를 제공합니다. 이러한 서비스는 Kubernetes 클러스터 인프라의 프로비저닝, 구성 및 관리의 복잡성을 처리합니다. 원하는 클러스터 구성을 정의하기만 하면 서비스가 까다로운 작업을 처리하므로 컨테이너화된 애플리케이션을 구축하는 데 집중할 수 있습니다.

수동 배포

더 많은 제어와 맞춤화를 위해 kubeadm과 같은 도구를 사용하여 Kubernetes 클러스터를 수동으로 배포할 수 있습니다. 쿠베아뎀은 Kubernetes 클러스터를 부트스트래핑하기 위한 툴킷입니다. 이 방법에는 지정된 마스터 노드에 kubeadm을 설치하고 클러스터의 모든 작업자 노드에 kubelet 에이전트를 설치하는 것이 포함됩니다. 

Kubernetes 클러스터 수동 설정

선결 요소

  • 인프라: 가상머신이나 클라우드 인스턴스와 같은 충분한 인프라를 확보하세요.
  • 컨테이너 런타임: 컨테이너형 또는 도커와 같은 컨테이너 런타임을 모든 노드에 설치합니다.

1단계: kubeadm, kubelet 및 kubectl 설치

모든 시스템(마스터 및 작업자 노드)에서 배포 패키지 관리자를 사용하여 필요한 kubeadm 도구를 설치합니다.

# Update package lists (replace 'your_package_manager' with your actual package manager like apt-get or yum)
 $ sudo your_package_manager update
 
 # Install kubeadm, kubelet, and kubectl
 $ sudo your_package_manager install -y kubeadm kubelet kubectl

참고: 일부 시스템에서는 설치 후 추가 구성이 필요할 수 있습니다. 선택한 운영 체제에 대한 자세한 내용은 공식 Kubernetes 설명서를 참조하십시오.

플래시어레이(FlashArray) 체험하기

퓨어스토리지가 셀프 서비스 환경에서 블록 및 파일을 획기적으로 간소화하는 방법을 경험해 보세요.

지금 체험하기

2단계: 제어 평면 초기화(마스터 노드)

마스터 노드 역할을 할 컴퓨터 중 하나를 선택하십시오. 마스터 노드에서 다음 명령을 실행하여 제어 평면을 초기화합니다. 이 프로세스는 구성 파일을 생성하고 작업자 노드에 조인 명령을 제공합니다.

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
  • kubeadm 시작: 이 명령은 마스터 노드의 제어 평면을 초기화합니다.
  • --pod-network-cidr=10.244.0.0/16: 이 옵션은 포드 네트워크의 CIDR 범위를 지정합니다. 네트워크 구성 요구 사항에 따라 이 값을 조정할 수 있습니다.

초기화 명령을 실행한 후, kubeadm은 작업자 노드에 대한 조인 명령을 통해 출력을 제공합니다. 5단계에서 필요할 때 이 명령을 참고하세요.

3단계: kubectl 구성

마스터 노드에서 생성된 관리 구성 파일을 로컬 kubectl 구성 디렉터리에 복사합니다. 이렇게 하면 kubectl 명령을 사용하여 클러스터를 관리할 수 있습니다. 다음 명령은 이를 달성합니다.

$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

4단계: 포드 네트워크 구축

포드 네트워크 플러그인은 클러스터 내의 포드 간 통신을 가능하게 합니다. 플란넬은 인기 있는 포드 네트워크 옵션입니다. 마스터 노드에서 다음 명령을 사용하여 플란넬을 배포할 수 있습니다.

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

5단계: 클러스터에 작업자 노드 연결

각 작업자 노드에서 마스터 노드의 초기화 단계(2단계) 동안 kubeadm에서 제공하는 조인 명령을 실행합니다. 이 명령은 작업자 노드를 제어 평면에 등록하고 컨테이너화된 워크로드를 실행할 준비를 합니다. 조인 명령은 일반적으로 다음과 같습니다.

$ sudo kubeadm join :6443 --token --discovery-token-ca-cert-hash sha256:
  • <master_ip_address>: 마스터 노드의 IP 주소로 교체합니다.
  • <token>: 마스터 노드의 초기화 프로세스 중에 생성된 토큰으로 교체합니다.
  • <hash>: kubeadm init 명령 출력에서 제공하는 디스커버리 토큰 CA 인증서 해시로 교체합니다.

6단계: 클러스터 상태 확인

모든 작업자 노드가 클러스터에 가입되면 쿠벡텔 명령을 사용하여 클러스터의 상태를 확인합니다.

$ kubectl get pods -n kube-system
에버그린 원(Evergreen One)

에버그린//원(Evergreen//One™)으로 리스크 줄이기

다운타임은 더 이상 옵션이 아닙니다. 퓨어스토리지는 용량에 대한 기업의 요구사항을 상시 충족합니다.

에버그린//원 상세정보

Kubernetes 클러스터 관리

Kubernetes 클러스터의 효과적인 관리는 성능과 안정성을 유지하는 데 매우 중요합니다. 여기에는 클러스터의 노드 확장, 업그레이드 및 업데이트가 포함됩니다.

클러스터 확장

Kubernetes 수평 확장을 제공하여 워크로드 요구에 따라 작업자 노드 수를 쉽게 조정할 수 있습니다.

  1. 노드 추가(스케일 업):
    1. 새 노드 준비: 새 노드가 원하는 Kubernetes 버전에 대한 권장 시스템 요구 사항을 충족하는지 확인합니다. Docker 또는 컨테이너형 컨테이너 런타임, kubelet 에이전트 등 필요한 소프트웨어를 설치합니다. 운영 체제에 따른 자세한 설치 단계는 공식 Kubernetes 설명서를 참조하십시오.
    2. 노드를 클러스터에 가입: 새 노드에서 kubeadm 조인 명령을 사용하여 기존 클러스터에 조인합니다. 초기 클러스터 설정에서 다음 정보가 필요합니다.
      • 마스터 노드 IP 주소: 마스터 노드의 IP 주소입니다.
      • 토큰 가입: 이 토큰은 제어 평면 초기화 중에 생성되어 출력에 제공되었습니다.

다음은 kubeadm Join 명령의 예입니다.

$ sudo kubeadm 가입 <master_ip_address>:6443 --token <token> --discovery-ca-cert-hash sha256:<hash>

  • 마스터 노드<master_ip_address>의 실제 IP 주소로 교체하십시오.
  • 제어 평면 초기화 중에 생성된 토큰<token>으로 교체합니다.
  • 제어 평면 초기화 출력의 디스커버리 토큰 CA 인증서 해시<hash>로 교체합니다.

노드 제거(스케일 다운):
노드를 제거하기 전에 먼저 노드를 비우는 것이 중요합니다. 드레인은 노드에서 포드를 정교하게 퇴출시키고 건강한 노드에서 포드를 예약하여 애플리케이션의 다운타임을 방지합니다.

노드 드레인: kubectl drain 명령을 사용하여 제거하려는 노드를 드레인합니다. 이 명령은 DaemonSets(중요 시스템 서비스)가 계속 실행되도록 하면서 노드에서 포드를 제거합니다.

$ kubectl drain <node-name> --ignore-daemonsets

제거할 노드<node-name>의 호스트 이름 또는 IP 주소로 교체합니다.

 

노드 삭제: 일단 드레인되면 kubectl 삭제 노드 명령을 사용하여 클러스터에서 노드를 안전하게 제거할 수 있습니다.

 

$ kubectl delete node <node-name>

제거할 노드<node-name>의 호스트 이름 또는 IP 주소로 교체합니다.

또한 제어 평면 업그레이드, 작업자 노드 업그레이드, 롤업 업그레이드와 같은 기타 관리 작업을 수행할 수 있습니다.

최고 성능 유지: 모니터링, 로깅 및 스토리지

Kubernetes 클러스터를 건강하게 유지하기 위해서는 효과적인 모니터링과 로깅이 매우 중요합니다. Prometheus 및 ELK Stack과 같은 도구는 리소스 활용, 포드 상태 및 전반적인 성능에 대한 심층적인 통찰력을 제공하여, 애플리케이션에 영향을 미치기 전에 문제를 사전에 식별하고 해결할 수 있도록 합니다. 또한 Kubernetes 유연성을 위해 다양한 타사 솔루션과 통합됩니다.

효율적인 데이터 관리는 스테이트풀 애플리케이션의 핵심입니다. 퓨어스토리지의 Portworx®는 Kubernetes 클러스터와 원활하게 통합되는 강력한 컨테이너 네이티브 솔루션을 제공합니다.

Portworx 다음을 통해 워크로드를 위한 스토리지를 간소화합니다.

  • 지속적인 볼륨 제공: 포드가 다시 시작되거나 일정이 재조정된 경우에도 데이터가 지속되도록 합니다.
  • 데이터 보호 및 재해 복구 제공: 스냅샷 및 복제 기능을 제공하며, 사고 발생 시 다운타임을 최소화합니다.
  • 관리 간소화: 스토리지 리소스의 프로비저닝, 모니터링 및 관리를 위한 사용자 친화적인 인터페이스를 제공합니다.

결론

Kubernetes 클러스터는 향상된 확장성, 내결함성 및 간소화된 애플리케이션 관리를 제공하는 현대적인 컨테이너 오케스트레이션의 기본입니다. Kubernetes 클러스터의 잠재력을 최대한 활용하는 데 매우 중요합니다. 퓨어스토리지Portworx Kubernetes 완벽하게 통합되어 컨테이너화된 워크로드의 전반적인 효율성과 안정성을 향상시키는 강력한 스토리지 기능을 제공합니다.

다음을 추천드립니다.

10/2025
Virtual Machine Provisioning at Enterprise Scale
Sizing and scaling Red Hat OpenShift Virtualization with Portworx.
백서
22 pages

주요 유용한 자료 및 이벤트를 확인하세요

THOUGHT LEADERSHIP
혁신을 향한 레이스

스토리지 혁신의 최전선에 있는 업계 리더들의 최신 인사이트 및 관점을 확인하세요.

더 알아보기
동영상
동영상 시청: 엔터프라이즈 데이터 클라우드의 가치

찰스 쟌칼로(Charles Giancarlo) CEO가 전하는 스토리지가 아닌 데이터 관리가 미래인 이유 통합 접근 방식이 기업 IT 운영을 어떻게 혁신하는지 알아보세요

지금 시청하기
유용한 자료
레거시 스토리지는 미래를 지원할 수 없습니다.

현대적 워크로드에는 AI 지원 속도, 보안, 확장성이 필수입니다. 귀사의 IT 스택, 준비됐나요?

지금 확인하기
퓨어360(PURE260) 데모
퓨어스토리지를 직접 탐색하고, 배우고, 경험해보세요.

퓨어스토리지의 역량을 확인할 수 있는 온디맨드 비디오와 데모를 시청하세요.

데모영상 시청하기
지원하지 않는 브라우저입니다.

오래된 브라우저는 보안상 위험을 초래할 수 있습니다. 최상의 경험을 위해서는 다음과 같은 최신 브라우저로 업데이트하세요.