티스토리 뷰

728x90

1. Pod 란?

- 쿠버네티스 노드 내에 최소 한 개 이상의 컨테이너를 가진 파드가 실행되고 있으며, 파드마다 다른 IP를 가지고 있고 컨테이너끼리 통신이 가능함
파드 내 컨테이너끼리 볼륨(저장소)을 공유하며, 컨테이너가 죽고 재시작해도 파드가 살아있는 한 Shared volume은 유지 됨
init-container 가 기본적으로 생성되며, 해당 컨테이너의 네트워크 인터페이스(CNI)를 파드 내 다른 컨테이너에서도 공유하여 사용

728x90


2. Pod의 Lifecycle

 

- Pending: 파드가 클러스터에 승인되었지만 한 개 이상의 컨테이너가 설정되지 않았고 실행할 준비가 되지 않은 상태
- Running: 파드가 노드에 바인딩(할당)되고 모든 컨테이너가 생성된 상태
- Succeeded: 파드에 있는 모든 컨테이너들이 성공적으로 종료되었고, 재시작 되지 않은 상태
- Failed: 파드에 있는 모든 컨테이너가 종료되었고, 최소 하나 이상의 컨테이너가 실패로 종료된 상태
- Unknown: 파드의 상태를 알 수 없는 상태로, 노드와 통신 오류로 인해 주로 발생

 


3. Pod의 생성


1) kubectl run 으로 pod 생성

kubectl run  test-nginx --image=nginx:1.19

 


2) yaml 형식으로 pod 생성

apiVersion: v1
kind: Pod
metadata:
  name: test-nginx2
spec:
  containers:
  - name: test-nginx2
    image: nginx:1.19
ports:
- containerPort: 80


# yaml 파일 적용
kubectl apply -f [yaml file]


- apiVersion : 오브젝트를 생성하기 위한 쿠버네티스의 API 버전
- kind : 어떤 종류의 오브젝트인지 설명 (pod, service, replicaset ...)
- metadata : name, UID, namespace 등을 포함한 기본적인 정보
- name : namespace의 유일한 값
- labels : 특정 오브젝트만 나열하거나 검색할 때 사용되는 key-Value
- spec : 생성할 오브젝트의 구체적인 내용, 포맷은 오브젝트 종류마다 다름

# pod 조회
kubectl get pod -n [namespace]
# 모든 namespace의 pod 조회
kubectl get pod -A
# pod 정보 확인
kubectl get pod -o wide
# pod 로그 확인
kubectl logs [pod name]
# pod의 상세 정보
kubectl describe pod [pod name]
# pod 정보를 yaml 파일 형식으로 출력
kubectl get pod [pod name] -o yaml
# pod 수정
kubectl edit pod [pod name]
# pod 삭제
kubectl delete pod [pod name]
kubectl delete -f [yaml 파일]

 

 

다음 글 보러가기

2024.02.08 - [infra/kubernetes] - [쿠버네티스] 워크 로드(2) / ReplicaSet, Deployment, DaemonSet, Static Pod

 

[쿠버네티스] 워크 로드(2) / ReplicaSet, Deployment, DaemonSet, Static Pod

1. ReplicaSet - 파드를 생성 및 복제하고, 복제된 파드 수를 yaml 파일에서 생성된 개수만큼 항상 유지 apiVersion: apps/v1 kind: Replicaset metadata: name: nginx-rs labels: app: nginx-rs tier: nginx-rs spec: replicas: 3 selector:

coding.lifeandmoney.kr

 

728x90
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크