Kubernetes Pods 요약
2024. 12. 30. 21:42ㆍ쿠버네티스/쿠버네티스
728x90
반응형
kubectl get pods
1. 기본 개념
- Pod 정의:
- Kubernetes에서 가장 작은 배포 단위로, 하나의 애플리케이션 인스턴스를 나타냄.
- Pod는 컨테이너를 캡슐화하며, 일반적으로 하나의 Pod는 하나의 컨테이너와 일대일 관계를 가짐.
- 사전 조건:
- 애플리케이션은 이미 Docker 이미지로 빌드되어 Docker Hub 또는 레지스트리에 업로드됨.
- Kubernetes 클러스터가 설정 및 실행 중이어야 함(단일 노드 또는 다중 노드 가능).
2. 확장(Scaling)
- 확장 방법:
- 애플리케이션 사용자가 증가하면 새로운 Pod를 생성하여 확장.
- 기존 Pod에 컨테이너를 추가하지 않음.
- 노드 확장:
- 현재 노드 용량이 부족할 경우, 클러스터에 새로운 노드를 추가하여 Pod를 배포.
3. 다중 컨테이너 Pod
- 사용 사례:
- 보조 작업(예: 데이터 처리)을 수행하는 헬퍼 컨테이너가 필요한 경우.
- 동일한 네트워크 및 스토리지 공간을 공유하며, 함께 생성되고 삭제됨.
- 제한 사항:
- 다중 컨테이너 Pod는 드문 사용 사례이며, 일반적으로 단일 컨테이너 Pod를 사용.
4. Docker와 비교
- Docker에서는 각 컨테이너 간 네트워크 설정, 볼륨 공유, 상태 모니터링 등을 수동으로 관리해야 함.
- Kubernetes는 Pod 내부에서 이러한 작업을 자동으로 처리.
5. Pod 배포
- kubectl run 명령어:
- Docker 이미지를 기반으로 Pod 생성 및 컨테이너 배포.
- --image 플래그로 사용할 이미지 지정(Docker Hub 또는 프라이빗 레지스트리에서 가져옴).
- kubectl get pods 명령어:
- 클러스터 내 생성된 Pod 목록 확인.
6. 네트워킹 및 서비스
- 현재 상태에서는 외부 사용자에게 웹 서버(NGINX)를 공개하지 않음.
- 추후 강의에서 네트워킹 및 서비스를 통해 외부 접근 방법 학습 예정.
핵심 포인트
- Kubernetes에서 모든 컨테이너는 Pod 안에 배치되며, 확장을 위해 새로운 Pod를 생성함.
- 다중 컨테이너 Pod는 특정 시나리오에서만 사용되며, 일반적으로 단일 컨테이너로 구성된 Pod가 권장됨.
- Kubernetes는 Docker보다 복잡한 애플리케이션 아키텍처를 더 효율적으로 관리할 수 있음.
CKAD exam Preparation Notes - Pods, Deployments, ReplicaSets and Namespaces- Part 1
This is the first part of the CKAD preparation blog series where you will learn Kubernetes Architecture, Pods, Deployments, ReplicaSets and Namespaces
blog.prateekjain.dev
kubectl run nginx --image nginx
#따로 지정하지않으면 도커 허브에서 이미지 가져옴.
Podswith Yaml
Kubernetes에서 YAML 파일을 사용하여 Pod 생성
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
tier: frontend
spec:
containers:
- name: nginx
image: nginx
- name: busybox
image: busybox
1. YAML 파일의 기본 구조
- Kubernetes 객체 정의 파일의 4가지 필수 속성:
- API Version: Kubernetes API 버전 (예: v1).
- Kind: 생성할 객체의 유형 (예: Pod, ReplicaSet, Deployment 등).
- Metadata: 객체의 이름, 레이블 등 메타데이터 포함.
- Spec: 객체에 대한 세부 정보(예: 컨테이너 정보).
2. 주요 속성 설명
- API Version:
- 사용 중인 Kubernetes API 버전을 지정.
- Pod 생성 시 일반적으로 v1 사용.
- 다른 값으로는 apps/v1beta, extensions/v1beta 등이 있음.
- Kind:
- 생성할 객체의 유형을 지정.
- 예: Pod, ReplicaSet, Deployment, Service 등.
- Metadata:
- 객체에 대한 메타데이터를 포함.
- Name: Pod 이름 (예: MyAppPod).
- Labels: 키-값 쌍으로 구성된 레이블(예: app: myapp).
- 레이블은 나중에 Pod를 그룹화하거나 필터링하는 데 유용.
- 객체에 대한 메타데이터를 포함.
- Spec:
- 객체에 대한 세부 정보를 정의.
- Containers: 컨테이너 목록(리스트 형태).
- 각 컨테이너는 이름과 이미지 속성을 가짐.
- 예: name: nginx-container, image: nginx.
- Containers: 컨테이너 목록(리스트 형태).
- 객체에 대한 세부 정보를 정의.
3. YAML 파일 작성 규칙
- 들여쓰기 중요:
- 자식 항목은 부모 항목보다 오른쪽으로 들여쓰기.
- 같은 계층의 항목은 동일한 들여쓰기를 유지해야 함.
- Metadata와 Spec은 각각 딕셔너리 형식으로 작성.
- Containers는 리스트 형식으로 작성하며, 각 항목은 딕셔너리로 구성.
4. Pod 생성 과정
- YAML 파일 작성:
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
labels:
app: myapp
spec:
containers:
- name: nginx-container
image: nginx
kubectl create -f pod-definition.yaml
- Labels 사용 이유:
- 여러 개의 Pod를 쉽게 그룹화 및 관리 가능(예: frontend, backend 등).
- Spec에서 Containers가 리스트인 이유:
- 하나의 Pod에 여러 컨테이너를 포함할 수 있음.
- 단일 컨테이너가 일반적이지만, 보조 작업을 수행하는 헬퍼 컨테이너가 필요한 경우 다중 컨테이너 사용.
6. 요약
- Kubernetes YAML 파일에는 반드시 apiVersion, kind, metadata, spec 속성이 포함되어야 함.
- Pod는 Kubernetes에서 가장 작은 배포 단위이며, 일반적으로 하나의 컨테이너를 포함.
- YAML 파일을 통해 Pod와 컨테이너를 정의하고 관리 가능.
- 명령어(kubectl create/get/describe)를 사용해 Pod 생성 및 상태 확인 가능.
kubectl get pods -o wide
반응형
'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글
Kubernetes Deployment (0) | 2024.12.30 |
---|---|
Kubernetes Replication Controller와 Replica Set (0) | 2024.12.30 |
쿠버네티스 파드 (0) | 2024.12.14 |
Kube-Proxy (0) | 2024.12.12 |
Kubelet (1) | 2024.12.12 |