Cloud Engineering/Kubernetes ⚙️

[Kubernetes] Pod 생성 및 삭제하기

minjiwoo 2023. 2. 9. 17:31
728x90

Pod

  • 쿠버네티스의 워크로드 리소스 중에서 가장 작은 기본 구성 단위이다.
  • 쿠버네티스에서는 컨테이너 단위로 다루는 도커와 달리 개별 pod 단위로 다룬다. 하나이상의 컨테이너를 포함하는 쿠버네티스의 기본 실행 단위이다.
  • pod가 포함하는 컨테이너는 1개일 수도, 여러개일 수도 있다.
  • pod가 실행하는 컨테이너가 1개이면 pod와 컨테이너를 비슷하게 생각할 수 있다. 그러나 컨테이너가 여러개 실행될 수도 있으므로 구분해야 한다.
  • 네트워크나 Storage에 연결할 때 컨테이너가 아니라, pod 단위와 연결한다. 즉, pod와 연결된 volume storage가 있는 경우 pod 내부의 컨테이너들은 이 공간을 공유해서 사용한다. 네트워크도 동일하게 공유해서 사용한다.
  • pod라는 단위는 하나의 노드에서 실행된다.

Pod 의 두가지 사용 방법

  • 단일 컨테이너 : pod 내부에 실행되는 컨테이너가 하나인 경우
  • 다중 컨테이너 : pod 내부에 실행되는 컨테이너가 N개 인 경우

 

Manifest File 을 이용하여 Pod object를 생성하기 

먼저 manifest file을 작성한다. 보통은 YAML으로 작성하며 JSON도 지원한다. 

Manifest File 작성 예시

sudo vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
    - name: test-pod
      image: ghcr.io/c1t1d0s7/go-myweb:alpine
      ports:
        - containerPort: 8080
          protocol: TCP

 

Manifest file을 지정하여 object 생성하기 

$ kubectl create -f MANIFEST_FILE

현재 컨테이너의 pod object의 목록 확인

$ kubectl get pods
  • NAME : pod object name
  • READY 필드 : pod 오브젝트가 준비된 상태인지 표시한다. 1/1 pod object 내에서 현재 실행 중인 컨테이너의 개수 / 총 컨테이너의 개수 를 나타낸 내용이다.
  • STATUS: Running 한개 이상의 컨테이너가 정상적으로 실행되고 있다는 의미
  • AGE : pod object가 만들어진 후 얼마나 지났는가 확인

특정 pod object만 지정하여 정보 확인

$ kubectl get pods POD_NAME

 

get pods 에 출력 방식을 지정하기 

i) -o 는 출력 방식을 지정하는 옵션이다. wide 는 더 상세한 정보를 확인할 수 있는 옵션이다. 

$ kubectl get pods PODNAME -o wide

ii) pod 오브젝트를 yaml 형식으로 Manifest File 확인하기 

$ kubectl get pods PODNAME -o yaml

ii) pod 오브젝트를 JSON 형식으로 확인하기 

$ kubectl get pods PODNAME -o json

 

pod object 상세한 정보 확인하기 : describe 

$ kubectl describe pods PODNAME

 

describe로 출력되는 내용들 중에서, Events 필드에서 kube scheduler 에 의해서 어떤 노드에 pod가 할당되었는지 확인할 수 있다.

이 경우 Node3에 새로 생성한 pod이 할당되었다. 

해당 pod 의 로그 정보를 확인

$ kubectl logs PODNAME

 

 

 

728x90