티스토리 뷰

kubernetes

[Kubernetes] Nginx로 pod 띄우기

개발자 쿠키 2025. 6. 7. 14:02

Manifest File
쿠버네티스에서 다양한 리소스(파드, 서비스, 볼륨 등)를 생성하고 관리하기 위해 사용하는 파일
kubectl apply -f nginx-pod.yml 실행 -> 클러스터에 생성

Dockerfile
컨테이너 이미지(→ Docker image)를 어떻게 만들지 단계별로 명시한 텍스트 스크립트

 

파드를 생성할 때, CLI를 활용하는 방법과 yaml 파일을 활용하는 방법이 있다.

 

1. yaml 파일 생성하기

공식문서에 pod를 생성할 때는 v1이라고 기재한다고, 나와있다.
metadata.name : pod에 이름 붙이는 기능이다.
containers.name : 생성할 컨테이너의 이름
containers.image : 컨테이너를 생성할 때 사용할 docker image
spec.containers.ports.containerPort : 해당 컨테이너가 어떤 포트를 사용하는지 명시 (문서화 용)

2. yaml 파일을 기반으로 파드 생성 및 확인

kubectl apply -f nginx-pod.yaml
kubectl get pods

NAME : Pod의 이름
READY : 파드 내 준비 완료된 컨테이너의 개수 / 파드 내 총 컨테이너 수
STATUS : 파드의 상태
RESTARTS : 해당 파드의 컨테이너가 재시작된 횟수
AGE : 파드가 생성되어 실행된 시간



3. Nginx 정상 접속 확인

localhost:80
접속 실패

도커는 컨테이너 내부와 컨테이너 외부의 네트워크가 서로 독립적으로 분리되어있다. 
쿠버네티스는 파드 내부의 네트워크를 컨테이너가 공유해서 같이 사용한다.
파드의 네트워크는 로컬 컴퓨터의 네트워크와는 독립적으로 분리되어있다. 이 때문에 파드로 띄운 Nginx에 아무리 요청을 보내도 응답이 없다.

Nginx가 띄우는 웹 페이지에 접근하려면
1. 파드 내부로 들어가서 접근
2. 파드의 내부 네트워크를 외부에서도 접속할 수 있도록 포트 포워딩 (포트 연결)



4. 파드 내부로 들어가서 Nginx 요청 보내기

kubectl exec -it nginx-pod -- /bin/bash

쿠버네티스에서는 파드 내부의 네트워크를 컨테이너가 공유해서 같이 사용하기 때문에 파드로 접속해서 Nginx로 요청을 보냈을 때 정상적으로 응답이 날라왔다.

 

5. 포트 포워딩을 활용해 Nginx로 요청 보내기

# kubectl post-foward pod/[파드명] [로컬에서의 포트]/[파드에서의 포트]
kubctl port-forward pod/nginx-pod 80:80 # mac은 sudo 추가

# 요청 보내기
curl localhost:80

 

6. 파드 삭제

# kubectl delete pod [파드명]
kubectl detlete pod nginx-pod
kubectl get pods