← 목차
Week 4 · Phase 2 핵심 오브젝트

네트워킹
Service · Ingress · CNI

Pod 평면 네트워크부터 Service 4타입, Ingress 도메인 라우팅, CoreDNS, 그리고 CNI 비교까지
학습 자료 · k8s-networking · (심화) cni-comparison · kube-proxy
산출물 · 도메인 기반 라우팅 구현

학습 목표

"서비스를 어떻게 노출하고 연결하나"
  • Pod 네트워크 모델 — 모든 Pod가 하나의 평면 IP로 통신하는 원리를 이해한다
  • Service 4타입 — ClusterIP / NodePort / LoadBalancer / ExternalName을 구분한다
  • kube-proxy — iptables / IPVS 모드 동작을 안다
  • Ingress — 도메인·경로 기반 HTTP 라우팅을 구현한다
  • CNI — Antrea / Calico / Cilium의 역할·차이를 설명한다

Service 4가지 타입

사라지는 Pod IP 앞에 안정적인 연결점을 제공
타입노출 범위용도
ClusterIP클러스터 내부 (기본)내부 서비스 간 통신 · 가상 IP
NodePort노드 IP:30000–32767외부에서 노드 포트로 접근 (개발/테스트)
LoadBalancer외부 LB VIP클라우드/MetalLB로 외부 노출
ExternalNameDNS CNAME외부 도메인을 클러스터 이름으로 매핑

Ingress — 도메인·경로 라우팅

하나의 진입점(L7)에서 여러 서비스로 분기
ClientHTTP(S) Ingress Controllernginx · 호스트/경로 규칙 api.example.local →Service: api web.example.local →Service: web Ingress = L7 라우팅(호스트·경로) · NodePort/LoadBalancer 여러 개 대신 진입점 1개로 통합 → 비용·관리 절감

CNI 비교 — Antrea · Calico · Cilium

Pod 네트워크·정책을 구현하는 플러그인, 데이터플레인이 다르다
Antrea

OVS 기반

  • Open vSwitch 데이터플레인
  • NetworkPolicy + Antrea CRD
  • VMware/VKS 기본 CNI
Calico

L3 라우팅/BGP

  • BGP 라우팅(터널 없이도)
  • 강력한 NetworkPolicy
  • 대규모·성능 안정
Cilium

eBPF 기반

  • eBPF 데이터플레인·고성능
  • L7 정책·Hubble 관측성
  • kube-proxy 대체 가능

라이브 실습 — Service & Ingress

타입별 차이 관찰 후 Ingress Controller 설치
# 실습 1: Service 타입 비교 (ClusterIP → NodePort → LoadBalancer) $ ./k8s-learn.sh # 4번 메뉴 # 실습 2: Ingress Controller(nginx) 설치 $ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx $ helm install ingress-nginx ingress-nginx/ingress-nginx \ -n ingress-nginx --create-namespace \ --set controller.service.type=NodePort

라이브 실습 — CoreDNS (서비스 디스커버리)

이름으로 서비스를 찾는 원리
# dnsutils Pod에서 이름 해석 관찰 $ kubectl run dnsutils --image=registry.k8s.io/e2e-test-images/jessie-dnsutils:1.3 --rm -it -- bash # Pod 안에서: # nslookup kubernetes.default # nslookup my-svc.my-namespace.svc.cluster.local
i
서비스 FQDN 규칙: <service>.<namespace>.svc.cluster.local — Pod IP는 사라져도 이 이름은 안정적

과제 — 네트워킹 실전

정책·노출·보안·CNI 비교
기본

노출 & 보안

  • NetworkPolicy로 dev→prod 접근 차단
  • MetalLB로 LoadBalancer 구현(베어메탈)
  • TLS Secret + Ingress HTTPS(cert-manager)
심화

CNI · kube-proxy 비교

  • 동일 워크로드를 Antrea/Calico/Cilium에 배포 → 패킷 경로(터널 vs BGP vs eBPF) 비교
  • iptables ↔ IPVS 전환 → 분산 알고리즘(rr/lc) 검증

체크리스트 & 다음 주

이걸 할 수 있으면 Week 4 완료
  • CNI가 무엇이고 왜 필요한지 설명할 수 있다
  • kube-proxy의 iptables/IPVS 모드 차이를 안다
  • CoreDNS의 service discovery 동작 원리를 안다
  • Ingress와 NodePort/LoadBalancer의 차이를 비교할 수 있다
→
다음 주(Week 5) — 스토리지: PV/PVC, CSI, StatefulSet으로 영속 데이터를 다룹니다.