DevOps/kubernetes

[Kubernetes] Pod

jhyoonzi 2024. 4. 17. 13:15

 

 

Pod

Pod는 컨테이너 하나 또는 여러개의 애플리케이션 컨테이너들의 그룹을 나타내며 스토리지,IP 주소 그것을 동작시키는 방식에 대한 정보를 포함하고 있습니다. 또 Pod에서 컨테이너들의 일부는 컨테이너에 자원을 공유 할 수 있습니다.

공유하는 자원

  • 볼륨과 같은 스토리지
  • 클러스터 IP와 같은, 네트워킹
  • 컨테이너 실행 방식 정보

Pod는 쿠버네티스에서 가장 최소의 단위이며, 하나의 Pod에 여러개의 컨테이너를 생성 할 수 있고, 하나의 컨테이너를 담을수 있습니다. 예를 들어 Web컨테이너, App 컨테이너를 Pod에 담아서 배포 할 수 있습니다. Pod에 컨테이너가 새로 생성이 필요 할 때는 추가로 배포 할 수 있습니다.

ex) pod

Pod 배포

Pod를 배포하는 방법에는 두가지 방법이 있습니다.

  1. 커맨드 라인을 통한 배포
  2. manifest 파일을 사용한 배포

먼저 1번 커맨드 라인을 통한 배포를 해보겠습니다.

$kubectl run nginx — image nginx:latest — port=80

커맨드 라인 배포

위의 커맨드 라인과 같이 nginx라는 Pod가 생성되었습니다. 보시면 Ready 0/1 이라고 되어 있는데, nginx Pod안에 컨테이너가 1개인 것을 알 수 있고, ContainerCreating 즉 컨테이너가 생성되는 중인 상태입니다.

생성된 Pod의 자세한 정보를 확인하려면 아래 명령어를 사용하여 확인 할 수 있습니다.

 

$kubectl describe pod [pod name]

pod의 상세 정보

다음은 2번 manifest 파일을 사용하여 2개의 컨테이너를 가진 Pod를 배포 해보겠습니다.

manifest파일로 Pod를 배포하려면 yaml 포맷을 사용하여 배포합니다.
아래와 같이 간단한 yaml 파일을 작성하였습니다.

yaml 파일을 작성하는 방법은 아래와 같은니 참고 부탁드립니다.

 

 

아래와 같이 Pod를 배포할 yaml 파일을 작성하였습니다. 
manifest 파일을 통해 pod를 배포하는 명령어는 아래와 같습니다.

$kubectl apply -f [배포할 파일].yaml

 

 

배포를 하고나서 Pod가 잘 생성되었는지 확인합니다.
아래와 같이 nginx라는 pod안에 컨테이너가 2개 전부 실행되고 있는것을 볼 수 있습니다.

 

Pod의 상세한 정보를 확인하려면 아래 명령어를 입력합니다.

$kubectl describe pod [Pod 이름]

 

 

Pod의 생명주기

파드는 생성 부터 삭제까지의 과정에 생명 주기가 있습니다.

  • Pedning 
    쿠버네티스 시스템에 파드를 생성하는 중임을 뜻하며, 컨테이너 이미지를 다운로드 후 전체 컨테이너를 실행하는 상태입니다.
  • Running
    파드 안의 모든 컨테이너가 실행중인 상태를 의미합니다.
  • Succeeded
    파드 안 모든 컨테이너가 정상 실행 종료된 상태로 재시작 되지 않습니다
  • Failed
    파드 안 모든 컨테인너 중 정상적으로 실행 종료되지 않은 컨테이너가 있는 상태입니다.
  • Unknown
    파드 안의 상태를 확인 할 수 없는 상태이며, 보통 파드가 있는 노드와 통신할 수 없을 때 입니다.

감사합니다.