kube proxy

Watermelon·2025년 12월 1일

CKA 학습 과정

목록 보기
14/35

kube proxy

pod network

  • 모든 포드는 다른 모든 포드에 도달 가능
  • 클러스터에 포드 네트워킹 솔루션을 배포하여 수행됨
  • pod network는 모든 파드가 연결되는 클러스터의 모든 노드에 걸쳐 있는 내부 가상 네트워크
  • 이러한 네트워크 배포하는데에 사용 가능한 많은 솔루션 존재

ex: pode network

  • 예시: node1는 웹 애플리케이션 배포, node2는 데이터베이스 애플리케이션 배포
  • 웹 앱은 파드의 IP를 사용하여 데이터베이스에 연결 가능, 데이터 베이스 파드의 IP가 항상 동일하게 유지된다는 보장 없음
  • 데이터베이스에 액세스하려면 서비스를 사용하는 것이 좋음
  • 클러스터 전체에 데이터베이스 앱을 노출하는 서비스 생성
  • service: db 이름을 통하여 데이터베이스에 액세스 가능
  • 해당 서비스는 파드가 IP 또는 이름을 사용하여 접속하려고 할 떄마다 할당된 IP 주소를 가져와 트래픽을 백엔드 파드로 전달

kube proxy 필요성

  • 이 서비스는 무엇이고 IP를 얻는 방법은 무엇일까?
  • 파드와 같은 컨테이너가 아니므로 인터페이스나 능동적 수신 프로세스 없음
  • 쿠버네티스 메모리에만 존재하는 가상 구성 요소
  • 하지만 클러스터 전체 모든 노드에서 서비스에 액세스할 수 있어야 함
  • 어떻게 해야하나? -> kube proxy

kube proxy 정의

  • 쿠버네티스 클러스터의 각 노드에서 실행되는 프로세스, 새로운 서비스를 찾는 것이 임무
  • 새 서비스가 생성될 때마다 각 노드에 적절한 규칙을 생성하여 해당 서비스로의 트래픽을 백엔드 포드로 전달
  • iptables 규칙을 사용하여 수행 가능
  • 클러스터의 각 노드에서 서비스의 IP로 향하는 트래픽을 포워딩하는 iptables 규칙을 생성
  • 이후로는 네트워킹, 서비스, kube proxy, pod network 등 배워야함

Installing kube proxy

wget https://storage.googleapis.com/kubernetes-release/release/v1.xx.0/linux/amd64/kube-proxy
  • 추출하여 서비스로 실행
kubectl get pod -n kube-system

kubectl get daemonset -n kube-system
  • 각 노드에 kube 프록시를 파드로 배포함을 알 수 있음
  • 실제로 데몬셋으로 배포되므로 클러스터의 각 노드에는 항상 단일 파드가 배포됨
profile
많은 경험을 해보고자 하는

0개의 댓글