노드와 파드 (Node & Pod)
노드는 클러스터에 자원을 대는 기계이고, 파드는 그 위에 잠깐 놓이는 것입니다. 노드는 스스로 무엇을 띄울지 정하지 않습니다 — 만드는 것은 컨트롤러, 놓을 자리를 고르는 것은 스케줄러이고, 노드의 kubelet 은 받아서 띄웁니다. 그래서 파드는 노드를 옮겨 다니지 않습니다. 옮겨 간 것처럼 보이는 것은 사실 지워지고 다른 곳에 새로 만들어진 것입니다.
01노드와 파드 (Node & Pod)
개념 한눈에 보기노드는 클러스터에 자원을 대는 기계 한 대입니다. 물리 서버든 가상 머신이든 상관없고, 쿠버네티스가 보는 것은 그 위에서 도는 설비입니다.
설비는 셋입니다. kubelet 이 파드 명세를 받아 띄우고, 컨테이너 런타임이 실제로 실행하며, kube-proxy 가 서비스 주소를 이 노드의 규칙으로 옮깁니다.
파드는 그 위에 놓입니다. 노드가 무엇을 띄울지 스스로 정하지는 않습니다 — 몇 개인지는 컨트롤러가, 어느 노드인지는 스케줄러가 정합니다.
한 노드에 파드는 여럿, 한 파드는 한 노드입니다. 파드 안의 컨테이너들도 나뉘지 않고 같은 기계에서 함께 돕니다.
노드가 내놓는 양은 총량이 아닙니다. 시스템 몫을 뺀 할당 가능량이 스케줄러가 보는 값이고, 개수에도 한계가 있어 노드당 110개를 기준으로 잡습니다.
노드 위에 워크로드만 있는 것은 아닙니다. kube-proxy 나 네트워크 플러그인처럼 노드마다 하나씩 있어야 하는 것은 데몬셋이 채웁니다.
파드는 노드를 옮겨 다니지 않습니다. 돌고 있는 파드를 다른 기계로 옮기라는 명령은 아예 없습니다.
노드 2가 응답을 멈춥니다. 노드 컨트롤러가 Ready 를 Unknown 으로 바꾸고 표시를 붙이면, 기본값이면 5분 남짓 뒤 그 위의 파드가 정리 대상이 됩니다.
빠진 몫은 살아 있는 노드에 새로 만들어집니다. 다만 돌아온 것은 같은 파드가 아닙니다 — 이름이 web-4 로 바뀐 것이 그 증거이고, IP 도 함께 바뀝니다.
그래서 주소를 기억하는 쪽은 파드가 아니라 서비스를 불러야 합니다. 파드 이름과 IP 는 언제든 바뀌는 값입니다.
대가도 있습니다. 응답이 끊긴 노드의 파드가 정말 죽었는지는 알 수 없어, 같은 일을 하는 파드가 잠시 양쪽에 있을 수 있습니다.
02 쉽게 이해하기
For Everyone노드는 파드가 실제로 도는 서버 한 대이고, CPU 와 메모리에서 시스템 몫을 뺀 만큼만 파드에 내줍니다. 노드가 멈추면 그 위의 파드는 옮겨 가는 것이 아니라 다른 노드에 새로 만들어집니다.
노드에는 쿠버네티스가 요구하는 설비 셋이 있습니다.
kubelet 이 파드 명세를 받아 컨테이너를 띄우고, 컨테이너 런타임이 실제로 실행하며, kube-proxy 가 서비스 주소를 그 노드의 규칙으로 옮깁니다.
노드가 클러스터에 내놓는 양은 총량(capacity)이 아니라 시스템 몫을 뺀 할당 가능량(allocatable)이고, 개수에도 한계가 있어 노드당 파드는 110개를 넘지 않는 것을 기준으로 삼습니다.
한 파드의 컨테이너는 반드시 한 노드에서 함께 돕니다.
노드가 응답을 멈추면 노드 컨트롤러가 Ready 를 Unknown 으로 바꾸고 NoExecute 표시를 붙여, 기본값이면 5분 남짓 뒤 그 위의 파드를 정리 대상으로 넘깁니다.
이때 API 서버는 kubelet 과 말이 끊긴 상태라 파드가 실제로 죽었는지 알 수 없습니다 — 그래서 같은 일을 하는 파드가 잠시 양쪽에 있을 수 있고, StatefulSet 처럼 중복이 곤란한 워크로드가 조심스러운 이유가 여기 있습니다.
쿠버네티스가 고치는 것은 워크로드지 기계가 아닙니다.
- –파드가 사라졌다 다시 생길 때 이름·IP 가 바뀌는 이유 파악
- –노드 장애 시 복구 경로와 지연 이해
- –노드당 파드 상한과 allocatable 로 용량 잡기
- –노드에 상주하는 시스템 파드(DaemonSet) 구분
03 자주 묻는 질문
FAQ노드와 파드 (Node & Pod)란 무엇인가요?+
노드는 클러스터에 자원을 대는 기계이고, 파드는 그 위에 잠깐 놓이는 것입니다. 노드는 스스로 무엇을 띄울지 정하지 않습니다 — 만드는 것은 컨트롤러, 놓을 자리를 고르는 것은 스케줄러이고, 노드의 kubelet 은 받아서 띄웁니다. 그래서 파드는 노드를 옮겨 다니지 않습니다. 옮겨 간 것처럼 보이는 것은 사실 지워지고 다른 곳에 새로 만들어진 것입니다.
노드와 파드 (Node & Pod)은(는) 어디에 사용하나요?+
파드가 사라졌다 다시 생길 때 이름·IP 가 바뀌는 이유 파악, 노드 장애 시 복구 경로와 지연 이해, 노드당 파드 상한과 allocatable 로 용량 잡기, 노드에 상주하는 시스템 파드(DaemonSet) 구분
노드와 파드 (Node & Pod)를 쉽게 비유하면?+
노드는 파드가 실제로 도는 서버 한 대이고, CPU 와 메모리에서 시스템 몫을 뺀 만큼만 파드에 내줍니다. 노드가 멈추면 그 위의 파드는 옮겨 가는 것이 아니라 다른 노드에 새로 만들어집니다.
