자격증/CKA

[CKA] Udemy 20. Kube Proxy

14ben 2024. 6. 23. 16:59
728x90

kube-proxy

  • Kubernetes 클러스터 내에서 모든 포드는 다른 모든 포드에 접근할 수 있음.
  • 이는 클러스터에 포드 네트워크 솔루션을 배포함으로써 가능해짐.
  • 포드 네트워크는 클러스터 내 모든 노드를 아우르는 내부 가상 네트워크로, 모든 포드가 이 네트워크에 연결됨.
  • 이를 통해 포드들은 서로 통신할 수 있음.
  • 이러한 네트워크를 배포하기 위한 여러 솔루션이 존재함.

 

네트워크 예시

  • 첫 번째 노드에 웹 애플리케이션을, 두 번째 노드에 데이터베이스 애플리케이션을 배포한 경우를 가정함.
  • 웹 애플리케이션은 데이터베이스 포드의 IP를 사용해 데이터베이스에 접근할 수 있음.
  • 그러나 데이터베이스 포드의 IP가 항상 동일할 것이라는 보장은 없음.
  • 초급 과정에서 다룬 서비스 강의를 통해, 웹 애플리케이션이 데이터베이스에 접근하는 더 나은 방법은 서비스를 사용하는 것임을 알 수 있음.
  • 따라서 데이터베이스 애플리케이션을 클러스터 전반에 노출시키기 위해 서비스를 생성함.
  • 웹 애플리케이션은 서비스의 이름(DB)을 사용해 데이터베이스에 접근할 수 있고, 서비스에는 IP 주소도 할당됨.
  • 포드가 서비스의 IP나 이름을 사용해 서비스에 접근하려 할 때, 트래픽은 백엔드 포드(이 경우 데이터베이스)로 전달됨.

 

서비스와 IP

  • 서비스는 실제 엔티티가 아니므로 포드 네트워크에 참여할 수 없음.
  • 서비스는 포드와 같은 컨테이너가 아니므로 인터페이스나 적극적으로 리스닝하는 프로세스가 없음.
  • 서비스는 Kubernetes 메모리에만 존재하는 가상 구성 요소임.
  • 그러나 서비스는 클러스터 내 모든 노드에서 접근 가능해야 함.

 

 

kube-proxy의 역할

  • kube-proxy는 Kubernetes 클러스터의 각 노드에서 실행되는 프로세스임.
  • kube-proxy의 역할은 새로운 서비스를 감지하고,
  • 새로운 서비스가 생성될 때마다 각 노드에 적절한 규칙을 생성해 해당 서비스로 트래픽을 전달하는 것임.
  • 한 가지 방법으로 iptables 규칙을 사용함.
  • 예를 들어, 클러스터의 각 노드에 iptables 규칙을 생성해 서비스의 IP(10.96.0.12)로 향하는 트래픽을
    실제 포드의 IP(10.32.0.15)로 전달하도록 설정함.

 

설치 방법

  • kubeadm 도구는 각 노드에 kube-proxy를 포드로 배포함.
  • 실제로 이는 DaemonSet으로 배포되어, 클러스터의 각 노드에 항상 하나의 포드가 배포됨.
wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/adm64/kube-proxy


kube-proxy.service
ExecStart=/usr/local/bin/kube-proxy \\
--config=/var/lib/kube-proxy/kube-proxy-config.yaml \\
Restart=on-failure
RestartSec=5

 

 

 

 

728x90

'자격증 > CKA' 카테고리의 다른 글

[CKA] Udemy 22. Pods with YAML  (0) 2024.06.23
[CKA] Udemy 21. Pods  (0) 2024.06.23
[CKA] Udemy 19. Kubelet  (0) 2024.06.23
[CKA] Udemy 18. kube-scheduler  (0) 2024.06.22
[CKA] Udemy 17. Kube Controller Manager  (0) 2024.04.18