# 노드 간에 서로 통신하기 위해 각 노드에 브릿지 네트워크를 생성한다.
# 생성
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와 함께 스크립트를 실행하고, 이후 우리의 스크립트가 나머지를 처리합니다.