Networking - Pod Networking

2025. 1. 15. 00:28쿠버네티스/쿠버네티스

728x90
반응형

Kubernetes에서 Pod 네트워킹

1. Kubernetes 네트워크 설정 개요

Kubernetes 클러스터를 구성할 때, 노드 간 통신을 위한 네트워크는 이미 설정되어 있습니다. 그러나 Pod 레벨의 네트워킹은 별도로 구현해야 합니다. Kubernetes는 기본적으로 Pod 네트워크에 대한 솔루션을 제공하지 않으며, 사용자가 이를 직접 설정해야 합니다.Pod 네트워킹의 주요 요구사항은 다음과 같습니다:

  • 각 Pod는 고유한 IP 주소를 가져야 합니다.
  • 동일한 노드 내의 모든 Pod는 서로 통신할 수 있어야 합니다.
  • 다른 노드에 있는 Pod와도 동일한 IP 주소를 사용하여 통신할 수 있어야 합니다.
  • NAT(Network Address Translation) 규칙 없이 통신이 가능해야 합니다.

2. Pod 네트워크 구현 계획

Pod 네트워크를 구현하기 위해 다음과 같은 단계를 수행합니다:

노드 네트워크

  • 노드는 외부 네트워크(예: 192.168.1.x 대역)에 연결되어 있으며, 각 노드는 고유한 IP 주소를 가집니다(예: 192.168.1.11, 192.168.1.12, 192.168.1.13).

Bridge 네트워크 생성

  • 각 노드에서 Bridge 네트워크를 생성합니다.
  • Bridge 네트워크는 각 노드 내 컨테이너 네임스페이스를 연결하는 역할을 합니다.
  • 예시로, 각 Bridge 네트워크에 다음과 같은 서브넷을 할당합니다:
    • Node 1: 10.240.1.0/24
    • Node 2: 10.240.2.0/24
    • Node 3: 10.240.3.0/24

컨테이너 연결

컨테이너를 Bridge 네트워크에 연결하기 위해 다음 작업을 수행합니다:

  1. 가상 네트워크 인터페이스 생성: ip link add 명령어로 컨테이너와 Bridge를 연결하는 가상 케이블 생성.
  2. IP 주소 할당: ip addr 명령어로 컨테이너에 IP 주소 할당(예: 10.244.x.x).
  3. 라우팅 설정: ip route 명령어로 기본 게이트웨이 경로 추가.
  4. 인터페이스 활성화: ip link set 명령어로 인터페이스 활성화.

노드 간 라우팅

  • 서로 다른 노드의 Pod 간 통신을 위해 라우팅 테이블을 설정합니다.
  • 예를 들어, Node 1의 Pod(10.244.1.x)가 Node 2의 Pod(10.244.2.x)와 통신하려면, Node 1의 라우팅 테이블에 Node 2 서브넷(10.244.2.x)을 가리키는 경로를 추가해야 합니다.

3. 확장 가능한 솔루션

위의 방식은 소규모 클러스터에서는 작동하지만, 대규모 환경에서는 비효율적입니다:

  • 모든 노드에 수동으로 라우팅 테이블을 추가하는 것은 비현실적입니다.
  • 대신, 라우터를 사용하여 중앙 집중식으로 라우팅 테이블을 관리하거나 Kubernetes의 CNI(Container Network Interface)를 활용합니다.

4. CNI(Container Network Interface)

CNI는 Kubernetes와 사용자 정의 스크립트를 연결하는 표준 인터페이스입니다:

  • CNI는 Pod 생성 시 스크립트를 자동으로 실행하여 네트워크 설정을 처리합니다.
  • 스크립트는 다음과 같은 두 가지 섹션으로 구성됩니다:
    • Add 섹션: 컨테이너를 네트워크에 추가.
    • Delete 섹션: 컨테이너 삭제 시 인터페이스 제거 및 IP 주소 반환.

Kubernetes는 CNI 플러그인을 통해 Pod가 생성될 때 해당 스크립트를 실행하며, 이를 통해 자동화된 네트워킹 환경을 제공합니다.

https://doitnow-man.tistory.com/entry/CKA-28-Pod%EC%9D%98-Networking

Note CNI Weave

Important Update: -

Before going to the CNI weave lecture, we have an update for the Weave Net installation link. They have announced the end of service for Weave Cloud.

To know more about this, read the blog from the link below: -

https://www.weave.works/blog/weave-cloud-end-of-service

As an impact, the old weave net installation link won’t work anymore: -

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Instead of that, use the below latest link to install the weave net: -

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml

Reference links: -

  1. https://www.weave.works/docs/net/latest/kubernetes/kube-addon/#-installation
  2. https://github.com/weaveworks/weave/releases
반응형