Kube-proxy

Yu Sang Min·2025년 5월 19일

CKA

목록 보기
7/110
post-thumbnail

📌 Kube-proxy란?

  • Pod Networking solution을 클러스터에 배포함으로써 서로 Pod끼리 서로 통신 가능하게 함
  • Pod Network는 내부 가상 네트워크로 모든 Pod가 연결되는 클러스터 내 모든 Node에 연결되어 있음
  • 이 네트워크를 통해 서로 통신 할 수 있음
  • 이 경우 사용가능한 솔루션이 많음
  • 예를 들어 node01에 애플리케이션이 배포되고 node02에 데이터베이스 응용 프로그램이 배포될 경우
    • 웹 앱은 단순히 Pod의 IP를 이용해 DB에 도달할 수 있음
    • 하지만 DB Pod의 IP가 늘 같을거라는 보장이 없음
    • 웹앱이 DB에 엑세스하는 더 나은 방법은 Service를 이용
      • Service는 Pod의 단일 진입점을 생성하는것으로 알고 있음
    • 클러스터에 걸쳐 DB를 노출할 서비스를 생성
    • 웹앱은 이제 DB의 서비스 이름을 이용해 데이터베이스에 액세스 가능
    • 서비스는 거기에 할당된 IP 주소도 받음
    • Pod가 IP나 이름을 이용해 서비스에 도달하려 할 때마다 트래픽을 백엔드 포드로 전달
      • 위 경우엔 데이터베이스임

❓what is service

  • 서비스는 무엇이고 IP는 어떻게 얻는가?
  • 서비스가 같은 Pod Network에 연결되는것인가?
    • 서비스는 Pod Network에 Join 될 수 없다 서비스는 actual thing(실제)이 아니다.
    • Pod 같은 컨테이너가 아니라 인터페이스도 없고 실제로 리스닝을 하는 프로세스도 없다
    • 쿠버네티스 메모리에만 존재하는 가상 구성 요소

❗️큐브 프록시가 필요한 이유

  • 서비스를 가로질러 클러스터 내의 Pod에 도달하기 위해서
  • kube-proxy는 쿠버네티스 클러스터의 각 노드에서 실행되는 프로세스!
  • 서비스를 찾아준다
  • 서비스가 생성될 때마다 각 노드에 적절한 규칙을 만들어 그 서비스로 트래픽을 전달(백엔드 포드로)

❓kube-proxy 통신하는 방법

  • iptables rule을 사용한다.
    • 이 규칙을 이용하여 서비스의 IP로 트래픽을 향하게 함
    • 단일 진입점 IP(서비스)로 접근하려는 트래픽을 실제 Pod의 IP로 연결하는 역할

⚙️ Installing kube-proxy

# 바이너리 파일 다운로드 및 서비스
$ wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-proxy
# kubeadm
$ kubectl get pods -n kube-system
  • kubeadm로 클러스터 구성시 각 노드에 kube-proxy를 Pod 형태로 배포
$ kubectl get daemonset -n kube-system
  • Daemonset으로 배포됨
  • 단일 포드는 항상 클러스터 내 각 노드에 배포
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글