02-07 20:37
반응형
250x250
Recent Posts
Recent Comments
Link
관리 메뉴

DevOps Tasks

[CKA] 쿠버네티스 클러스터 아키텍처 본문

Certification

[CKA] 쿠버네티스 클러스터 아키텍처

데밥스 2024. 12. 15. 22:43
728x90
반응형

쿠버네티스란 무엇인가요?

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장, 복구하는 플랫폼입니다.


컨테이너는 애플리케이션 코드와 실행 환경을 하나로 묶어 어떤 서버에서도 동일하게 동작하도록 만드는 기술입니다.


쿠버네티스는 이러한 컨테이너를 효율적으로 관리해 주는 오케스트레이션 도구라고 할 수 있습니다.

 

왜 쿠버네티스가 필요할까요?

 

현대 애플리케이션은 클라우드 환경에서 실행되는 경우가 많습니다.


이런 환경에서는 다음과 같은 요구사항이 필수적입니다.

가용성 : 서버가 중단되더라도 애플리케이션이 지속적으로 동작해야 합니다.

확장성 : 사용량 증가에 따라 애플리케이션을 확장할 수 있어야 합니다.

효율성 : 리소스를 최적화하여 비용을 절감해야 합니다.

이러한 요구를 사람이 직접 관리하려면 복잡하고 오류가 발생하기 쉽습니다.


쿠버네티스는 이러한 작업을 자동화하여 개발자와 운영자의 부담을 줄여줍니다.


이를 비유하자면, 쿠버네티스는 항구에서 수많은 화물선과 컨테이너를 체계적으로 관리하는 시스템이라고 할 수 있습니다.


쿠버네티스 클러스터 : 마스터 노드와 워커 노드

쿠버네티스 클러스터는 크게 마스터 노드(Master Node)워커 노드(Worker Node)로 나뉩니다.
이를 항구와 화물선에 비유하면 이해가 쉽습니다.

 

마스터 노드 : 항구의 컨트롤 타워처럼 클러스터 전체를 지휘하고 계획을 세웁니다.

워커 노드 : 화물선처럼 실제로 컨테이너(애플리케이션)를 싣고 실행하는 역할을 합니다.


마스터 노드 : 항구의 컨트롤 타워

마스터 노드는 쿠버네티스 클러스터의 두뇌입니다.
항구의 컨트롤 타워처럼 클러스터 전체를 통제하고, 애플리케이션 컨테이너를 어디에 배치할지 결정하며, 클러스터 상태를 지속적으로 모니터링합니다.

마스터 노드의 주요 구성 요소와 역할

API 서버 (Kube-API Server)

  • 클러스터의 모든 요청을 관리하는 관문입니다.
  • 클라이언트의 명령을 받아들이고, 다른 구성 요소와 상호작용합니다.
  • 항구에서 모든 지시와 보고가 오가는 본부 통신소.

etcd

  • 클러스터의 상태와 설정 정보를 저장하는 분산 키-값 저장소입니다.
  • 항구의 화물과 배의 데이터베이스. 어떤 배에 무엇이 실렸는지 기록합니다.

스케줄러 (Scheduler)

  • 컨테이너를 실행할 최적의 워커 노드를 결정합니다.
  • 리소스 사용량, 정책, 친화성 등의 조건을 고려해 배치를 계획합니다.
  • 항구에서 각 화물을 적재할 배를 선택하는 작업 기획 팀.

컨트롤러 매니저 (Controller Manager)

  • 클러스터 상태를 지속적으로 모니터링하고, 필요한 경우 자동으로 복구합니다.
  • 노드가 다운되면 새로운 노드에 컨테이너를 재배치.
  • 항구에서 배의 상태를 확인하고, 문제가 생기면 해결하는 운영 관리 팀.

워커 노드 : 항구의 화물선

워커 노드는 컨테이너를 실행하는 역할을 합니다.
마스터 노드의 지시에 따라 컨테이너를 배치하고, 네트워크를 통해 다른 컨테이너와 연결하며, 상태를 주기적으로 보고합니다.

워커 노드의 주요 구성 요소와 역할

kubelet

  • 마스터 노드의 명령을 받아 컨테이너를 실행하고 상태를 보고하는 에이전트.
  • 각 화물선의 선장. 마스터 노드의 지시에 따라 움직이고 상태를 보고합니다.

kube-proxy

  • 컨테이너 간 통신을 지원하는 네트워크 구성 요소.
  • 클러스터 내에서 서비스 디스커버리와 로드 밸런싱을 수행합니다.
  • 항구 내 배들이 서로 통신할 수 있도록 돕는 무전 시스템.

컨테이너 런타임

  • 실제 컨테이너를 실행하는 도구 (예: Docker, containerd).
  • 화물선을 움직이는 엔진.

마스터 노드와 워커 노드의 상호작용

마스터 노드와 워커 노드는 쿠버네티스 클러스터를 안정적이고 효율적으로 운영하기 위해 서로 유기적으로 상호작용합니다.

  • 마스터 노드: 클러스터의 두뇌 역할을 하며, 전략을 수립하고 명령을 전달합니다.
  • 워커 노드: 마스터의 지시에 따라 컨테이너를 실행하고 상태를 보고합니다.

상호작용의 단계

  1. 요청 수신
    사용자가 애플리케이션 배포 요청 → API 서버가 요청을 수신하고 작업을 시작합니다.
  2. 스케줄링
    스케줄러가 클러스터의 상태(리소스 사용량, 제약 조건 등)를 분석하여 컨테이너를 배치할 최적의 워커 노드를 결정합니다.
  3. 명령 전달
    API 서버가 선택된 워커 노드의 kubelet에게 명령을 전달합니다.
    • 명령 예시: "이 노드에 컨테이너 3개를 실행하라."
  4. 상태 보고
    워커 노드가 kubelet을 통해 컨테이너의 상태, 리소스 사용량 등을 주기적으로 마스터 노드에 보고합니다.
    • 보고 예시: "컨테이너가 정상 실행 중이고, 현재 CPU 사용량은 50%입니다."

🚢  Wrap-Up

쿠버네티스는 단순히 컨테이너를 실행하는 플랫폼이 아닙니다.
마스터 노드와 워커 노드가 함께 조화를 이루며, 애플리케이션을 안정적이고 효율적으로 운영할 수 있도록 돕는 강력한 오케스트레이션 도구입니다.

항구에서 화물선들이 끊임없이 화물을 싣고 나르는 모습처럼, 쿠버네티스 클러스터는 애플리케이션이 끊김 없이 실행되고, 필요할 때는 확장되며, 문제가 발생하면 빠르게 복구될 수 있도록 설계되었습니다.

이 글이 쿠버네티스 클러스터의 기본 구조와 마스터 노드와 워커 노드의 역할을 조금 더 친근하게 이해하는 데 도움이 되었길 바랍니다.

 

 

 

Tip: 쿠버네티스는 쓰면 쓸수록 매력을 느낄 수 있는 도구입니다.
직접 클러스터를 만들어보고, 작은 애플리케이션을 배포하며 한 걸음씩 익혀 보세요. 경험이 최고의 스승이니까요!

 

728x90
반응형