728x90
1. 클러스터(Cluster)란?
클러스터의 정의
- 쿠버네티스에서 클러스터는 컨테이너화된 애플리케이션을 실행하기 위한 컴퓨터들의 그룹입니다.
- 클러스터는 여러 대의 물리적 서버나 가상 머신으로 구성되며, 마스터 노드와 워커 노드로 이루어져 있습니다.
클러스터의 구성 요소
1. 마스터 노드(Master Node):
- 클러스터를 관리하고 제어하는 역할.
- 주요 컴포넌트:
- API 서버 (kube-apiserver): 쿠버네티스와 사용자가 소통하는 인터페이스.
- 컨트롤러 매니저 (kube-controller-manager): 클러스터 상태를 유지하고 관리.
- 스케줄러 (kube-scheduler): Pod를 적절한 워커 노드에 할당.
- etcd: 클러스터 상태와 설정 데이터를 저장하는 분산 데이터베이스.
2. 워커 노드(Worker Node):
- 실제로 애플리케이션(Pod)을 실행하는 컴퓨터.
- 주요 컴포넌트:
- Kubelet: 각 노드에서 Pod를 관리하는 에이전트.
- Kube-proxy: 네트워킹 및 서비스 라우팅을 관리.
- 컨테이너 런타임: Docker, containerd 등 컨테이너를 실행하는 도구.
클러스터의 역할
- 리소스 관리: CPU, 메모리, 스토리지 등의 리소스를 효율적으로 사용.
- 확장성: 워커 노드를 추가하여 애플리케이션을 쉽게 확장 가능.
- 자동화: Pod 배포, 스케일링, 복구를 자동으로 처리.
- 네트워킹: 클러스터 내 모든 노드와 Pod가 서로 통신 가능.
2. 포드(Pod)란?
포드의 정의
- 쿠버네티스에서 가장 작은 배포 단위로, 컨테이너의 집합입니다.
- 보통 하나의 포드는 하나의 컨테이너만 포함하지만, 필요에 따라 여러 컨테이너를 포함할 수도 있습니다.
포드의 특징
- 컨테이너의 논리적 그룹:
- 포드는 컨테이너를 함께 묶고, 이 컨테이너들은 하나의 네트워크 주소(IP)를 공유합니다.
- 여러 컨테이너가 같은 스토리지와 네트워크를 공유하며 긴밀히 협력.
- 일시적 특성:
- 포드는 언제든지 삭제되고 다시 생성될 수 있습니다.
- 포드의 IP 주소는 재생성 시 변경될 수 있으므로 **서비스(Service)**를 통해 관리.
- 네트워킹:
- 포드는 클러스터 내 다른 포드와 통신이 가능합니다.
- 기본적으로 클러스터 내 모든 포드는 서로 통신할 수 있습니다.
포드의 사용 사례
- 단일 컨테이너 포드:
- 가장 일반적인 사용 방식.
- 예: Nginx 웹 서버를 실행하는 컨테이너 1개.
- 멀티 컨테이너 포드:
- 서로 협력하는 두 개 이상의 컨테이너를 포함.
- 예: 하나의 컨테이너는 애플리케이션 서버를 실행하고, 다른 컨테이너는 로그를 수집.
포드의 구성
1. 컨테이너(Container)
- 애플리케이션 코드와 실행 환경.
- Docker, containerd 등의 컨테이너 런타임에서 실행됩니다.
2. 네트워크
- 포드 내의 모든 컨테이너는 하나의 IP 주소를 공유.
- 같은 포드 내 컨테이너는 **localhost**를 통해 서로 통신.
3. 스토리지
- 포드 내 모든 컨테이너가 공유하는 **볼륨(Volume)**을 통해 데이터를 저장.
3. 클러스터와 포드의 관계
개념 역할
클러스터 | 포드를 실행하고 관리하는 전체 인프라. 클러스터는 여러 노드로 구성됩니다. |
포드 | 클러스터 내에서 애플리케이션의 실행 단위. 컨테이너를 포함하며, 클러스터에 의해 배포되고 관리됩니다. |
4. 비유로 이해하기
- 클러스터: 회사(전체 조직).
- 마스터 노드: CEO (클러스터의 모든 운영을 관리).
- 워커 노드: 직원들(작업을 실제로 수행).
- 포드: 프로젝트(일의 단위).
- 컨테이너: 프로젝트 내에서 담당하는 개별 팀원.
5. 정리
- 클러스터: 쿠버네티스 환경 전체를 관리하는 인프라.
- 포드: 애플리케이션의 실행 단위로, 하나 이상의 컨테이너를 포함.
6. 클러스터의 수
- 클러스터는 여러 개를 운영할 수 있습니다.
- 각 클러스터는 독립적으로 운영되며, 서로 다른 목적(개발, 테스트, 운영)을 위해 별도로 구성할 수 있습니다.
- 예를 들어, "개발 환경 클러스터", "테스트 환경 클러스터", "운영 환경 클러스터"로 나누어 관리할 수 있습니다.
7. 마스터 노드의 수
- 마스터 노드는 기본적으로 1개 이상 존재할 수 있습니다.
- 단일 마스터 노드: 소규모 테스트나 개발 환경에서는 마스터 노드 1개만으로 충분합니다.
- 다중 마스터 노드: 운영 환경에서는 마스터 노드를 3개 이상 구성하여 **고가용성(High Availability)**을 보장합니다.
- 예: 마스터 노드 하나가 다운되더라도 다른 노드가 클러스터를 계속 관리할 수 있습니다.
- 마스터 노드를 구성할 때는 **홀수 개수(3, 5, 7)**로 설정하여 etcd 데이터베이스의 쿼럼(Quorum)을 유지합니다.
8. 워커 노드의 수
- 워커 노드는 제한 없이 여러 개를 추가할 수 있습니다.
- 워커 노드는 클러스터의 규모와 애플리케이션 부하(트래픽, 처리량)에 따라 동적으로 늘릴 수 있습니다.
- 쿠버네티스는 **오토스케일링(Auto Scaling)**을 지원하므로, 부하에 따라 워커 노드를 자동으로 추가하거나 제거할 수 있습니다.
예:
- 소규모 테스트 환경:
- 1개의 마스터 노드 + 1개의 워커 노드.
- 중간 규모:
- 3개의 마스터 노드 + 10개의 워커 노드.
- 대규모 환경:
- 5개의 마스터 노드 + 수백 개의 워커 노드.
정리
요소 수 제한 설명
클러스터 | 여러 개 가능 | 각 클러스터는 독립적으로 구성 가능. 개발, 테스트, 운영 환경별로 나눠 운영. |
마스터 노드 | 1개 이상 가능 (운영 환경에서는 3개 이상 권장) | 단일 노드로 구성 가능하나, 고가용성을 위해 다중 노드 구성 추천. 홀수 개수로 구성하여 etcd 데이터베이스 안정성 유지. |
워커 노드 | 제한 없음 | 클러스터의 규모에 따라 동적으로 추가 가능. 처리량에 따라 스케일링 가능. |
728x90
'IT 끄적이기' 카테고리의 다른 글
쿠버네티스(k8s) 학습하기 - 쿠버네티스의 구조 (3) | 2024.12.27 |
---|---|
쿠버네티스(k8s) 학습하기 - Istio란? (0) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - yaml 파일 작성 후 포드 통신 확인 (5) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - 포드간 통신 보기 (0) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - Minikube 실행 테스트 (0) | 2024.12.27 |