728x90
1. 클러스터 → 노드 → 포드 구조
(1) 클러스터
- 쿠버네티스의 가장 상위 개념으로, 하나 이상의 노드를 포함합니다.
- 클러스터는 전체 시스템을 관리하며, 워크로드를 적절한 노드로 배포하고 노드 간 통신을 조율합니다.
- 클러스터는 마스터 노드와 워커 노드로 나뉩니다:
- 마스터 노드: 클러스터를 관리(스케줄링, 상태 조정, API 제공).
- 워커 노드: 실제 애플리케이션을 실행.
(2) 노드 (Node)
- 클러스터 내에서 작업을 실행하는 단위입니다.
- 물리적 서버나 가상 머신으로 구성되며, 각 노드에는 쿠버네티스 에이전트(kubelet)가 실행됩니다.
- 노드는 여러 개의 **포드(Pod)**를 실행할 수 있습니다.
(3) 포드 (Pod)
- 노드 내에서 실행되는 가장 작은 배포 단위입니다.
- 보통 하나의 애플리케이션 컨테이너를 포함하며, 여러 컨테이너를 포함할 수도 있습니다.
- 포드는 IP 주소, 네트워크, 스토리지를 공유합니다.
(4) 컨테이너 (Container)
- 포드 내에서 실제로 애플리케이션을 실행하는 단위입니다.
- Docker, containerd 등의 컨테이너 런타임에서 실행됩니다.
2. 계층 구조
다음과 같은 계층으로 이해할 수 있습니다:
- 클러스터
- 노드들을 관리하고 애플리케이션 배포를 조율하는 단위.
- 노드
- 클러스터 내에서 워크로드를 처리하는 물리적/가상 머신.
- 각 노드는 여러 포드를 실행할 수 있습니다.
- 포드
- 하나 이상의 컨테이너를 실행하는 논리적 단위.
- 포드는 스케줄링 가능한 기본 단위입니다.
- 컨테이너
- 포드 내에서 애플리케이션 코드와 실행 환경을 포함.
- 가장 실제적인 실행 단위.
3. 비유로 이해하기
쿠버네티스 구조를 회사 조직에 비유하면:
- 클러스터: 회사 (전체 조직)
- 노드: 부서 (각 부서는 작업을 수행)
- 포드: 팀 (부서 내에서 작업하는 팀)
- 컨테이너: 팀원이 맡은 개별 작업
4. 실제 구성 예시
아래는 간단한 구조를 YAML 코드로 설명한 예입니다:
클러스터
- Minikube 같은 도구를 사용하여 쿠버네티스 클러스터를 생성합니다.
노드
- 클러스터 내에 여러 워커 노드가 있습니다.
- 명령어로 확인 가능:
- kubectl get nodes
포드
- 포드를 실행하여 애플리케이션을 배포합니다.
- 예: Nginx 서버를 포드로 실행.
- apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
5. 노드와 포드의 관계
- 한 노드는 여러 개의 포드를 실행할 수 있습니다.
- 포드가 많아져 노드의 리소스가 부족하면, 새로운 노드에 포드가 배포됩니다.
6. 전체 그림
plaintext
코드 복사
클러스터
├── 노드 1
│ ├── 포드 A (컨테이너 1)
│ └── 포드 B (컨테이너 1, 컨테이너 2)
├── 노드 2
│ └── 포드 C (컨테이너 1)
└── 노드 3
├── 포드 D (컨테이너 1)
└── 포드 E (컨테이너 1, 컨테이너 2)
7. 정리
- 클러스터: 노드들을 관리하는 상위 개념.
- 노드: 클러스터의 물리적/가상 머신.
- 포드: 노드에서 실행되는 애플리케이션 단위.
- 컨테이너: 포드 내부의 실행 환경.
728x90
'IT 끄적이기' 카테고리의 다른 글
쿠버네티스(k8s) 학습하기 - 프로젝트 배포 단계 (1) | 2024.12.27 |
---|---|
쿠버네티스(k8s) 학습하기 - yml과 yaml의 차이 (0) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - Istio란? (0) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - 클러스터란? (2) | 2024.12.27 |
쿠버네티스(k8s) 학습하기 - yaml 파일 작성 후 포드 통신 확인 (5) | 2024.12.27 |