Pod Networking

zuckerfrei·2024년 1월 29일
0

Kubernetes

목록 보기
53/63

pod 3가지 규칙

  • 모든 파드는 아이피 주소를 가져야한다.
  • 모든 파드는 같은 노드 내의 다른 파드와 통신할 수 있어야 한다.
  • 모든 파드는 다른 노드의 파드들과 NAT 없이 통신할 수 있어야 한다.

같은 노드 내의 파드 간의 통신 허용

# 노드 간에 서로 통신하기 위해 각 노드에 브릿지 네트워크를 생성한다.
# 생성
ip link add v-net-0 type bridge

# UP
ip link set dev v-net-0 up

# 네트워크 인터페이스에 임의 아이피 주소 할당
# 노드1
ip addr add 10.244.1.1/24 dev v-net-0
# 노드2
ip addr add 10.244.2.1/24 dev v-net-0
# 노드3
ip addr add 10.244.3.1/24 dev v-net-0

이 작업을 스크립트로 만들어 놓음


다른 노드의 파드들과 통신 허용

# 노드1에서 노드2,3 통신
node1$ ip route add 10.244.2.2 via 192.168.1.12
node1$ ip route add 10.244.3.2 via 192.168.1.13

# 노드2에서 노드1,3 통신
node2$ ip route add 10.244.1.2 via 192.168.1.11
node2$ ip route add 10.244.3.2 via 192.168.1.13

# 노드3에서 노드1,2 통신
node3$ ip route add 10.244.1.2 via 192.168.1.11
node3$ ip route add 10.244.2.2 via 192.168.1.12

그리고 위 명령어들을 스크립트로 만들어놓는다. ex) net-script.sh


자동화

큰 클러스터에서는 이런 작업을 매번 수동으로 할 수 없다.

CNI가 k8s에게 컨테이너 생성될 때 마다 이렇게 스크립트를 작성하고 실행하라는 지침을 준다.

각 노드의 컨테이너 런타임은 컨테이너를 생성하는 역할을 담당합니다.

컨테이너가 생성될 때마다 컨테이너 런타임은 실행될 때 전달된 CNI(configuration) 구성을 확인하고 스크립트의 이름을 식별합니다.

그런 다음 /opt/cni/bin 디렉토리에서 우리 스크립트를 찾아 add 명령어와 컨테이너의 이름 및 네임스페이스 ID와 함께 스크립트를 실행하고, 이후 우리의 스크립트가 나머지를 처리합니다.

profile
무설탕 음료를 좋아합니다

0개의 댓글