쿠버네티스 용어 사전
워크로드Pod · 사이드카 · initContainer

파드

함께 사는 컨테이너 묶음. localhost를 공유하고 함께 배치되며, 고쳐지지 않고 교체된다.

배포의 최소 단위. 컨테이너 하나가 아니라 함께 사는 묶음이다.

같은 파드 안 컨테이너들은

  • 네트워크 네임스페이스를 공유한다 → localhost 로 서로를 부른다
  • 같은 노드에 함께 뜬다 (쪼개지지 않는다)
  • 볼륨을 공유할 수 있다
  • 함께 태어나고 함께 죽는다

왜 껍데기가 필요한가

컨테이너를 직접 스케줄하면 '반드시 붙어 있어야 하는 둘' 을 표현할 수 없다

  • 로그 수집 사이드카 — 앱과 같은 볼륨을 봐야 한다
  • 프록시 사이드카 — 앱의 localhost 를 가로채야 한다
  • 설정 동기화 — 앱이 읽는 파일을 갱신해야 한다

이 관계를 표현하려면 '함께 배치되는 단위' 가 필요하다

파드는 일회용이다

파드는 고쳐지지 않는다. 문제가 생기면 지우고 새로 만든다

  • IP 가 바뀐다 → 그래서 서비스가 필요하다
  • 이름이 바뀐다 (web-7d4f8-x9k2l)
  • 안에 쓴 데이터는 사라진다 → 그래서 볼륨이 필요하다

"파드를 고친다" 는 개념이 없다는 것이 설계의 출발점이다

initContainer 와 사이드카

spec:
  initContainers:
    - name: wait-db
      image: busybox:1.36
      command: ["sh", "-c", "until nc -z db 5432; do sleep 2; done"]
  containers:
    - name: app
      image: myapp:1.4.2
  • initContainer — 앱보다 '먼저' 순서대로 실행되고 끝나야 다음이 뜬다

    • 준비 작업 — 마이그레이션 대기 · 설정 렌더링 · 권한 조정
  • 사이드카 — 앱과 '함께' 도는 보조 컨테이너

    • restartPolicy: Always 를 가진 initContainer 로 선언하면
    • 앱보다 먼저 시작되고 나중에 종료된다
    • 로그 수집기가 앱보다 먼저 죽어 마지막 로그를 놓치는
      • 문제가 해결된다

파드 하나에 컨테이너를 여럿 둘 때의 기준

  • 같이 둔다 — · 반드시 같은 노드에 있어야 한다

    • 같은 볼륨을 봐야 한다
    • localhost 로 통신해야 한다
    • 함께 배포·확장돼야 한다
  • 따로 둔다 — · 독립적으로 확장돼야 한다

    • 배포 주기가 다르다
    • 서로 없어도 의미가 있다

"편의상 같이" 두면 확장이 묶여 버린다 사이드카가 3~4개를 넘어가면 설계를 다시 본다

파드 안에서 볼 수 있는 것

downward API 로 자기 정보를 얻는다

  env:
    - name: POD_NAME
      valueFrom: { fieldRef: { fieldPath: metadata.name } }
    - name: NODE_NAME
      valueFrom: { fieldRef: { fieldPath: spec.nodeName } }
    - name: MEM_LIMIT
      valueFrom: { resourceFieldRef: { resource: limits.memory } }

로그에 파드 이름을 넣거나, limit 에 맞춰 스레드 풀을 정할 때 쓴다

면접 함정

  • "파드 = 컨테이너" → 여러 개를 담을 수 있고, 그 관계가 파드의 존재 이유다.
  • "파드를 직접 만들어 운영한다" → 죽으면 아무도 안 살린다. 컨트롤러가 필요하다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 워크로드 — 파드부터 Deployment까지