쿠버네티스 파드
쿠버네티스의 파드는 쿠버네티스에서 애플리케이션의 배포 및 관리의 가장 작은 단위임.
파드는 하나 이상의 컨테이너를 그룹으로 묶어 실행 환경을 제공함.
이를 통해 컨테이너 간의 긴밀한 협업과 관리가 용이함.
파드의 주요 특징
1. 컨테이너 그룹
파드는 하나 이상의 컨테이너를 포함할 수 있음.
파드 내 컨테이너는 서로 밀접하게 연관된 작업을 수행함.
같은 네트워크 네임스페이스와 스토리지 볼륨을 공유함.
2. 공유 네트워크
파드 내 모든 컨테이너는 동일한 IP 주소와 포트를 공유함.
같은 파드 내 컨테이너는 localhost를 통해 서로 통신할 수 있음.
파드 간 통신은 쿠버네티스 네트워크 정책을 따름.
3. 공유 스토리지
파드 내 컨테이너는 공통 볼륨을 마운트하여 데이터를 공유할 수 있음.
예를 들어, 한 컨테이너가 로그를 기록하고 다른 컨테이너가 이를 처리하는 구조를 만들 수 있음.
4. 단일 배포 단위
파드는 일반적으로 하나의 컨테이너만 포함함.
그러나 여러 컨테이너가 필요하면 같은 파드에 배치될 수 있음.
예를 들어, 한 컨테이너는 애플리케이션을 실행하고, 다른 컨테이너는 로그를 수집하는 역할.
파드의 라이프사이클
파드는 일시적인 엔터티로 설계됨.
쿠버네티스는 파드 자체를 복구하거나 재생성하지 않음.
대신 파드가 중단되거나 종료되면, 쿠버네티스는 새로운 파드를 생성하여 교체함.
1. Pending: 파드가 스케줄러에 의해 노드에 배치되기를 기다리는 상태.
2. Running: 파드가 모든 컨테이너를 성공적으로 실행한 상태.
3. Succeeded: 파드 내 컨테이너들이 종료되고 성공적으로 완료된 상태.
4. Failed: 파드 내 하나 이상의 컨테이너가 실패로 종료된 상태.
5. Unknown: 파드의 상태를 알 수 없을 때.
파드의 구성 요소
파드는 YAML 또는 JSON 파일로 정의됨.
주요 구성 요소는 다음과 같음.
1. 메타데이터
이름, 네임스페이스, 라벨, 어노테이션 등.
metadata:
name: my-pod
labels:
app: my-app
2. 스펙
컨테이너 정의, 볼륨, 네트워크 설정 등이 포함됨.
spec:
containers:
- name: my-container
image: nginx:1.21
ports:
- containerPort: 80
3. 볼륨
스토리지 마운트를 위한 정의.
volumes:
- name: shared-data
emptyDir: {}
파드를 생성하는 방법
1. kubectl 명령어
kubectl run my-pod --image=nginx --restart=Never
2. YAML 파일 사용생성
kubectl apply -f my-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
파드의 한계
파드는 수명이 제한적이며, 자체적으로 복구되지 않음.
이를 보완하기 위해 디플로이먼트, 스테이트풀셋 등과 함께 사용해야 함.
파드 내 컨테이너 간의 긴밀한 결합으로 인해 확장성 측면에서 관리가 어려울 수 있음.
활용 예
1. 단일 컨테이너 파드: 단순 애플리케이션 실행.
2. 다중 컨테이너 파드: 사이드카 패턴(애플리케이션 컨테이너 + 로그 수집기 컨테이너).
'Operating System > Kubernetes' 카테고리의 다른 글
[Kubernetes] Nginx Dockerfile을 arm64로 ECR에 배포하는 방법 (0) | 2024.12.26 |
---|---|
[Kubernetes] Liveness, Readiness, Startup Probe 정리 (0) | 2024.12.26 |
[Kubernetes] k8s, 서비스 유형 종류 (0) | 2024.12.24 |
[Kubernetes] k8s, helm으로 redis 설치하는 방법 (0) | 2024.12.16 |
[Kubernetes] k8s, helm으로 kafka 설치하는 방법 (0) | 2024.12.15 |