본문 바로가기
킷도우의 클라우드, 쿠버네티스/쿠버네티스(kubernetes)

[쿠버네티스] pod란? pod 생성, 매니페스트(yaml) 파일 파헤치기

by 킷도우 2023. 2. 21.
반응형

안녕하세요. IT Window 킷도우입니다.

오늘 여러분들에게 설명드릴 내용은 바로 쿠버네티스에서 컨테이너 실행과 관련된 리소스 중 하나인 파드입니다. 파드란 무엇이며 이 파드의 근본이라고 할 수 있는 매니페스트 파일을 뜯어 분석해 보는 시간을 갖도록 하겠습니다.

 

1. 파드란 무엇인가?

파드는 쿠버네티스 클러스터에서 어떤 역할을 할까요? 그림을 통해 설명해 보겠습니다.

파드는 쿠버네티스 리소스 중 하나로 여러 개의 컨테이너를 담을 수 있습니다. MSA 아키텍처 구성 특성상 각 역할별(WEB/WAS/DB 등)로 컨테이너를 분리시켜 운영하는 것이 원칙이기에 보통은 파드 1개당 컨테이너 1개를 담는 것을 권장합니다. 또 반드시 알아야할 특징 중 하나는 이 파드에는 1개의 IP가 할당됩니다. 즉, 파드 안의 컨테이너는 상단의 파드에게 할당된 IP를 공유해서 쓰는 것입니다. 그럼 통신 시 컨테이너 구분은 PORT로 하면 되겠죠?

 

2. 파드의 생성

 파드는 아래와 같이 yaml 형태의 매니페스트 파일을 정의하고 kubectl apply명령어를 통해 생성합니다. 우선 예시를 통해 yaml 파일을 어떻게 정의하여 pod를 생성하는지 살펴 보겠습니다. 아래 정의된 매니페스트 파일을 실행하면 test-pod라는 이름의 파드가 하나 만들어지고, nginx-container1과 nginx-container2라는 이름의 2개의 컨테이너가 올라옵니다. nginx-container1은 80포트로 열릴 것이고, nginx-container2는 8090 포트로 오픈되며 컨테이너가 실행된 직후 약 1분간 sleep상태에 빠지게 됩니다. 해당 파드에 호스트 픽스 설정을 하여 내부에서 로컬 IP가 아닌 kitdow.com으로 접근할 수 있도록 추가 설정을 하였습니다.

 

test-pod.yaml

apiVersion: v1
kind: Pod
metadata:
 name: test-pod
spec:
 containers:
 - name: nginx-container1
   image: nginx:1.16
 - name: nginx-container2
   image: nginx:1.17
   ports:
   - containerPort: 8090
   command: ["/bin/sleep"]
   args : ["60"]
 hostAliases:
 - ip: 10.10.6.128
   hostnames :
   - kitdow.com

각 속성별로 간략히 설명드리겠습니다.

반응형

apiVersion: 쿠버네티스 API 버전

kind: 구성할 리소스의 종류

metadata: 기타 일반 정보로 리소스 이름을 정의

spec: 실행과 관련된 정보

containers: 파드 내 생성할 컨테이너를 정의하는 영역으로 여러 개의 컨테이너를 정의할 수 있음. 단, 포트 번호가 겹치면 안됨. 위 예제에서는 이를 위해 하나는 nginx1.16 이미지의 default port인 80을 그대로 쓰고, nginx1.17도 default port가 80이나 ports 속성을 활용해 8090으로 오픈했기 때문에 정상적으로 컨테이너가 올라감. 만약 별도로 8090으로 지정하지 않을 경우 컨테이너가 정상 동작하지 않음.

- name : 생성할 컨테이너명

- image : 컨테이너를 생성할 도커 이미지

- ports : 컨테이너가 실행될 port번호 지정(nginx의 경우 default 포트가 80번이나 8090으로 강제 지정한 케이스)

- command : 컨테이너가 실행되고 난 이후 실행할 명령어

- args : 위 command에 함께 전달한 매개변수

hostAliases : 호스프 픽스 설정, 윈도우에서 etc 밑에 hosts 파일을 수정하는 것과 같은 원리

 

네 이렇게 파드를 정의한 이후에는 아래 명령어를 통해 파드를 시스템에 올립니다.

kubectl apply -f test-pod.yaml

삭제하는 방법도 간단합니다.

kubectl delete -f test-pod.yaml

 

3. 파드 조회

파드 조회하는 방법

 kubectl get pods

좀 더 상세하게 조회하는 방법

kubectl get pod -o wide

 

yaml 형식으로 출력

 kubectl get pod -o yaml test-pod

좀 더 보기 쉬운 형태로 요약 출력

kubectl describe pod test-pod

 

 

네 이렇게해서 쿠버네티스 리소스 중 파드에 대해서 알아봤습니다. 

다음 시간에 더 유용한 정보로 찾아뵙겠습니다.

 

감사합니다.

반응형

댓글