IT/Cloud & DevOps

Pod : 쿠버네티스에서 컨테이너 실행하는 방법

iamhyeon 2025. 4. 21. 20:04

💡 Pod

- 쿠버네티스에서 다루는 가장 기본적인 단위를 의미하는 오브젝트이다 

- 쿠버네티스에서 가장 기본이 되는 배포 단위이자, 컨테이너를 감싸는 논리적인 단위이다 

- 컨테이너 여러개를 묶어서 하나의 역할을 하는 작은 가상의 컴퓨터처럼 동작한다

- 내부에 있는 컨테이너들은 같은 IP와 포트를 공유하고, 같은 네트워크 공간을 사용한다 

    - 같은 pod 안에서는 같은 포트를 공유할 수 없다 
- 일반적으로 하나의 컨테이너만 포함하는 구조가 많다 (유지보수 & 디버깅을 위해)

 

 

|  pod 안에 여러 컨테이너를 넣는 이유

- 하나의 기능을 완성하려면 여러 컴포넌트가 필요하다 

    - 여러 앱을 하나의 컨테이너에 넣다 보면 문제를 파악하는데 어려움을 겪을 수 있다 
    - 일반적으로 컨테이너 하나에는 앱을 하나만 넣는다 
- 쿠버네티스는 Pod 단위로 동작한다  
- 컨테이너 단위로 조작하는 경우는 거의 없다 


 

🔶 Pod 만들어보기 

 

( ⚠️ GCP 클러스터 생성 ⬇️ )

2025.04.19 - [IT/Cloud & DevOps] - 클라우드 환경에서 쿠버네티스 클러스터 만들기

 

( ⚠️ GCP 컨테이너 레지스트리 ⬇️ )

2025.04.18 - [IT/Cloud & DevOps] - 컨테이너 레지스트리란? GCP Artifact Registry 로 실습해보기

 

 

✅ sample-pod.yaml 작성

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx:1.27.0
    ports:
    - containerPort: 80

 

- apiVersion: v1   :    쿠버네티스 리소스 형식 버전 (v1은 기본 Pod 형식) / 거의 고정 값이다

- kind   :   객체(오브젝트) 종류
- metadata  :   이름, 네임스페이스 등 기본 정보 (오브젝트 이름)
- spec   :   실행할 컨테이너 정보

    - containerPort: 80    nginx가 80포트 사용한다

 

- YAML 형식은 인프라 선언 시 많이 사용되며, 직관적이고 간결한 구성에 유리하여 많이 쓰인다 

 

|  json으로 표현해 보면 이런 느낌  ⬇️

 

 

✅ Pod 생성

kubectl apply -f sample-pod.yaml

쿠버네티스에 내 파일을 적용시켜라

- apply :  선언적 방식으로 리소스를 적용
- f :  파일 지정

 

 

✅ Pod 확인 

kubectl get pods

현재 클러스터에 있는 Pod 리스트 확인

 

 

 

✅ 외부에서 접속해보기 (포트포워딩) 

kubectl port-forward pod/sample-pod 8000:80

- localhost:8000  →  Pod 안의 Nginx 80포트로 연결된다 

 

 

✅ Pod 상세 정보 보기 

kubectl describe pod sample-pod

- 이벤트, IP, 상태 등 Pod 내부 상태를 자세히 확인할 수 있다 

 

반응형