kubernetes process

사용자가 kubectl run nginx 명령을 실행했을 때의 7단계 흐름입니다.

  1. 요청: 사용자 → [[K8s - API 서버]]
    • kubectl이 “nginx 파드 실행해줘!” (Deployment 생성 요청)
  2. 저장: [[K8s - API 서버]][[K8s - etcd]]
    • “원하는 상태: nginx [[K8s - Deployment]] 1개”를 [[K8s - etcd]]에 저장
  3. 감시: [[K8s - Controller Manager]][[K8s - API 서버]]
    • Deployment ControllerAPI 서버를 감시하다 새 Deployment 발견
  4. 정의: [[K8s - Controller Manager]][[K8s - API 서버]]
    • ReplicaSet Controller[[K8s - Pod]] 명세서를 생성해 API 서버에 “이 명세대로 Pod 생성해줘” 요청
  5. 결정: [[K8s - Scheduler]][[K8s - API 서버]]
    • Scheduler가 노드가 할당되지 않은(nodeName: null) 파드를 발견
    • “이 파드는 ‘워커 노드 2번’이 적합해”라고 판단, 파드 정보에 nodeName을 업데이트
  6. 생성: [[K8s - Kubelet]] (Node 2) → [[Container Runtime]]
    • ‘워커 노드 2번’의 Kubelet이 자신에게 할당된 파드를 발견
    • Container Runtime을 통해 컨테이너 실행!
  7. 연결: [[K8s - Kube-proxy]]
    • 새 파드가 생성된 것을 감지하고, 해당 파드에 접근할 수 있도록 노드의 네트워크 규칙(iptables 등)을 설정

작성일: 2025-11-03