[섹션11] 컴포넌트 동작으로 이해하기 (Pod, Service, Secret, HPA)

·2025년 7월 28일

✅ 1. Pod 생성 & Probe 동작 흐름

사용자가 Deployment를 생성 → ReplicaSetPod 생성kubelet이 Pod 실행 → probe로 상태 체크

🔁 동작 흐름:

  1. kubectl apply -f deployment.yaml
    kube-apiserver로 요청 전달됨

  2. etcd에 Deployment 정의가 저장됨

  3. kube-controller-manager

    • Deployment 확인 후 필요한 만큼 ReplicaSet & Pod 생성 요청
  4. kube-scheduler

    • Pod를 적절한 Node에 배치
  5. 해당 Node의 kubelet

    • 컨테이너 생성 요청 (container runtime 호출)
  6. probe 체크

    • livenessProbe: 컨테이너가 살아있는지
    • readinessProbe: 요청 받을 준비가 되었는지


✅ 2. Service 동작 흐름

Service는 Pod IP가 바뀌어도 클라이언트가 고정된 주소로 접근 가능하게 해주는 네트워크 객체

🔁 동작 흐름:

  1. 사용자가 NodePort Service 생성
  2. kube-apiserveretcd에 저장
  3. 각 Node의 kube-proxy가 Service 정보 감지
    iptables 업데이트
  4. 클라이언트가 NodeIP:31231로 요청
  5. iptables → 적절한 Pod IP로 라우팅
  6. kubelet이 트래픽을 컨테이너에 전달

✅ 예:

http://<NodeIP>:31231/version


✅ 3. Secret 동작 흐름

민감한 정보를 etcd에 저장하고, Pod 내부에 메모리 기반 볼륨으로 마운트해서 전달

🔁 동작 흐름:

  1. 사용자가 kubectl apply -f secret.yaml 실행
    kube-apiserver를 통해 Secret이 etcd에 저장됨

  2. 이후 생성되는 Pod가 해당 Secret을 참조하고 있으면:

  3. kubeletkube-apiserver에 Secret 요청

  4. Secret은 tmpfs 메모리 볼륨에 마운트되어 Pod 내부에 주입됨
    예: /usr/src/myapp/datasource/postgresql-info.yaml

  5. 컨테이너는 위 경로에서 Secret 값을 파일 형태로 읽을 수 있음

  6. Secret 내용이 수정되면:

    • kubelet이 주기적으로 이를 감지하고
    • 마운트된 내용을 자동 업데이트

💡 특징:

  • 마운트 경로는 memory 기반 (emptyDir: medium: Memory)로 생성됨
  • Pod 종료 또는 노드 전원 OFF 시 마운트된 메모리 볼륨은 사라짐
  • 하지만 etcd에는 Secret이 영속 저장되어 있어, Pod가 재생성되면 다시 마운트됨


✅ 4. HPA (Horizontal Pod Autoscaler) 동작 흐름

CPU/메모리 부하가 기준을 넘으면 Pod 개수를 자동으로 늘리거나 줄이는 컨트롤러

🔁 동작 흐름:

  1. 사용자가 HPA 리소스 생성
kubectl autoscale deployment my-app --cpu-percent=50 --min=2 --max=5
  1. metrics-server가 모든 Node의 kubelet으로부터 CPU/메모리 사용량 수집
    container → container runtime → kubelet → metrics-server
  2. kube-controller-manager가 15초마다 metric을 조회
  3. 평균 CPU 사용률이 설정된 목표(예: 50%)를 초과하면 → Deployment의 replicas 수 증가
  4. Deployment → ReplicaSet → 새로운 Pod 생성
  5. kube-scheduler가 새로운 Pod를 적절한 Node에 배치
  6. Pod 수가 줄어들어야 하면, ReplicaSet의 replicas 수 감소 → 자동으로 Pod 종료
항목주기
container 리소스 조회10초
kubelet 사용량 수집60초
controller-manager metric 조회15초
HPA 반응 시간1~85초

💡 주의사항

metrics-server가 설치되어 있어야 HPA가 동작함
기본적으로 CPU/메모리 metric 기반이지만, Custom Metrics API를 통해 사용자 정의 metric으로도 확장 가능


Reference

📚 인프런 : 쿠버네티스 어나더 클래스 - 지상편

profile
DevOps를 기반으로 한 클라우드, 알고리즘, 백엔드 관심있는 컴공생

0개의 댓글