Kubernetes Pods 요약

2024. 12. 30. 21:42쿠버네티스/쿠버네티스

728x90
반응형
kubectl get pods

1. 기본 개념

https://medium.com/@InnovateForge/cka-certified-kubernetes-administrator-cheat-sheet-afaf2c2ec473

  • 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)를 공개하지 않음.
  • 추후 강의에서 네트워킹 및 서비스를 통해 외부 접근 방법 학습 예정.

핵심 포인트

  1. Kubernetes에서 모든 컨테이너는 Pod 안에 배치되며, 확장을 위해 새로운 Pod를 생성함.
  2. 다중 컨테이너 Pod는 특정 시나리오에서만 사용되며, 일반적으로 단일 컨테이너로 구성된 Pod가 권장됨.
  3. Kubernetes는 Docker보다 복잡한 애플리케이션 아키텍처를 더 효율적으로 관리할 수 있음.

https://blog.prateekjain.dev/ckad-exam-preparation-notes-pods-deployments-replicasets-and-namespaces-part-1

 

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가지 필수 속성:
    1. API Version: Kubernetes API 버전 (예: v1).
    2. Kind: 생성할 객체의 유형 (예: Pod, ReplicaSet, Deployment 등).
    3. Metadata: 객체의 이름, 레이블 등 메타데이터 포함.
    4. 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.

3. YAML 파일 작성 규칙

  • 들여쓰기 중요:
    • 자식 항목은 부모 항목보다 오른쪽으로 들여쓰기.
    • 같은 계층의 항목은 동일한 들여쓰기를 유지해야 함.
  • Metadata와 Spec은 각각 딕셔너리 형식으로 작성.
  • Containers는 리스트 형식으로 작성하며, 각 항목은 딕셔너리로 구성.

4. Pod 생성 과정

  1. 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