kubernetes 프로젝트 #1

발행: (2026년 1월 5일 오전 07:48 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

개요

Kubernetes에서 단일 컨테이너화된 웹 앱을 실행하고 브라우저에서 접근합니다:

흐름: Browser → Service → Pod → Container

이 연습을 통해 다음을 배웁니다:

  • Pod가 무엇인지
  • Kubernetes가 존재하는 이유
  • 트래픽이 컨테이너에 도달하는 방식
  • Kubernetes 네트워킹이 Docker와 다른 점

이를 이해하면 다른 많은 Kubernetes 개념이 명확해집니다.

사전 요구 사항

  • Minikube(로컬 Kubernetes) 설치
  • kubectl 설치
  • Docker 설치

Minikube 시작:

minikube start

노드가 준비되었는지 확인:

kubectl get nodes

예상 출력

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   ...   ...

Kubernetes는 항상 워크로드를 노드에서 실행하므로 노드가 하나 이상 있어야 합니다.

Pod 생성

pod.yaml 파일을 만듭니다:

apiVersion: v1
kind: Pod
metadata:
  name: hello-pod
  labels:
    app: hello
spec:
  containers:
  - name: hello-container
    image: nginx
    ports:
    - containerPort: 80

매니페스트 적용:

kubectl apply -f pod.yaml

Pod가 실행 중인지 확인:

kubectl get pods

Pod의 상세 정보(할당된 IP, 컨테이너 상태, 이벤트 등)를 보려면 설명합니다:

kubectl describe pod hello-pod

핵심 포인트

  • Pod는 Kubernetes가 실행하는 가장 작은 단위이며(하나 이상의 컨테이너를 포함할 수 있음)
  • Pod는 고유한 IP 주소를 받지만 그 IP는 안정적이지 않습니다.

Service로 Pod 노출

service.yaml 파일을 만듭니다:

apiVersion: v1
kind: Service
metadata:
  name: hello-service
spec:
  type: NodePort
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30007

Service 적용:

kubectl apply -f service.yaml

Service 확인:

kubectl get svc

Service는 안정적인 엔드포인트(NodePort)를 제공하며, Pod의 IP가 바뀌어도 트래픽을 해당 Pod로 전달합니다.

애플리케이션 접근

Minikube의 IP 주소를 가져옵니다:

minikube ip

브라우저를 열고 다음 주소로 이동합니다:

http://<minikube-ip>:30007

기본 Nginx 환영 페이지가 표시됩니다:

Welcome to nginx!

이는 웹 앱이 Kubernetes에서 실행 중이며 클러스터 외부에서도 접근 가능함을 확인시켜 줍니다.

정리

Pod 삭제:

kubectl delete pod hello-pod

삭제됐는지 확인:

kubectl get pods

Pod가 사라지면, Pod만으로는 프로덕션에 적합하지 않음을 알 수 있습니다—실패 시 자동 복구되지 않기 때문입니다.

핵심 개념 요약

ConceptDescription
Pod배포 가능한 가장 작은 단위; 하나 이상의 컨테이너를 포함할 수 있음.
ServicePod에 접근하기 위한 안정적인 네트워킹(IP/Port)을 제공함.
NodePort각 노드의 고정 포트에 Service를 노출시켜 외부 접근을 가능하게 함.
LabelsService(및 기타 컨트롤러)가 Pod를 선택하도록 하는 키/값 쌍.
DeploymentReplicaSet을 관리; Pod가 죽으면 자동으로 재생성함.

Pod, Service, Labels를 이해하면 프로덕션 환경에서 Pod 수명 주기와 스케일링을 담당하는 Deployment를 활용하는 기반이 됩니다.

Back to Blog

관련 글

더 보기 »