Skip to the content.

[Kubernetes] Kind로 실습하며 정리한 핵심 개념 요약 (노드, 컨트롤러, 서비스)

로컬 쿠버네티스 학습 도구인 **Kind(Kubernetes in Docker)**를 사용하여 실습하면서 알게 된, 초심자가 헷갈리기 쉬운 핵심 개념들을 정리해 보았다.

1. 인프라: Kind 노드의 정체 (가면무도회)

kind create cluster로 노드 3개를 띄웠을 때, 내 컴퓨터에서는 무슨 일이 일어난 걸까?

2. 워크로드: 누가 누구를 관리하나?

우리는 파드(Pod)를 직접 관리하지 않는다. 상위 개념들이 계층적으로 관리한다.

  1. Deployment (채용 담당 매니저):
    • “Nginx 파드 3개 유지해!” 같은 **희망 상태(Desired State)**를 정의한다.
    • 파드 템플릿의 내용이 점 하나라도 바뀌면(업데이트), 해시(Hash)값이 바뀌면서 새로운 레플리카셋을 생성해 갈아치운다.
  2. ReplicaSet (반장):
    • 실제 파드의 **개수(Replicas)**를 맞추는 역할을 한다.
  3. Pod (직원):
    • 실제 컨테이너가 돌아가는 곳.
    • 중요: 파드는 언제든 죽고 새로 태어나는 **‘일회용품(Ephemeral)’**이다. 죽었다 살아나면 IP가 바뀐다.

3. 핵심 원리: 컨트롤러 (The Brain)

쿠버네티스가 사람의 개입 없이 자동으로 시스템을 유지하는 비결은 **‘컨트롤러(Controller)’**라는 감시 로봇 덕분이다.

4. 네트워크: 서비스(Service)가 필요한 이유

파드는 자꾸 죽고 IP가 바뀌는데, 어떻게 접속해야 할까? 여기서 **서비스(Service)**가 등장한다.

5. 외부 연결: 서비스 타입(Service Type) 4가지

상황에 따라 어떤 ‘문’을 열지 결정해야 한다.

  1. ClusterIP (기본): “우리끼리만 쓰자.”
    • 외부 접속 불가. 클러스터 내부 파드끼리 통신할 때 사용. (DB, 백엔드 내부 통신 등)
  2. NodePort: “창문 열어둘게.”
    • 모든 노드의 특정 포트(예: 30000)를 개방.
    • 로컬 개발이나 테스트용으로 가장 적합하다.
  3. LoadBalancer: “정문 안내원 고용.”
    • AWS, GCP 같은 클라우드 환경에서 사용하며, 실제 공인 IP를 받는다.
    • 주의: Kind 환경에서는 로드밸런서를 줄 클라우드가 없어서 상태로 멈춘다.
  4. ExternalName: “단축번호.”
    • 외부의 긴 도메인(예: AWS RDS 주소)을 내부에서 짧은 별칭으로 부르기 위해 사용한다.

6. 실전 팁: 로컬 개발 환경 구성 (Kind + Docker Compose)

Kind에 백엔드를 올리고, 로컬(Docker Compose)에서 프론트엔드를 띄워 연동하려면 어떻게 해야 할까?