쿠버네티스 플랫폼을 포함하여 다양한 플랫폼에서 워크로드의 네트워크 통신과 네트워크 보안 기능을 제공
쿠버네티스 CNI를 준수하여, 파드를 위한 네트워크 통신 환경을 마련
파드가 없는 노드 정보
직접 파드에 쉘 접속 후 확인해봤을 때, 네트워크 인터페이스인 calice#~ 와 veth 연결이 돼 있으며 IP는 32bit 서브넷을 가진다.
ARP 정보는 현재 아무것도 없다.
⇒ ARP를 통해 MAC 주소를 알려주는 모습
⇒ 터널을 통하진 않는다.
iptables -n -t nat --list cali-nat-outgoing
src가 cali40masq-ipam-pools
에 매칭되고, dst에서 매칭 되지 않는 것은 MARSQUERADE
를 통하여 통신 (외부 통신)
실제로 외부 통신 실행
MASQUERADE pkts 증가하는 모습!
calicoctl get ippool default-ipv4-ippool -o yaml | sed -e "s/natOutgoing: true/natOutgoing: false/" | calicoctl apply -f -
⇒ 위와 같이 natOutgoing을 false로 한다면 외부 통신 불가능!
파드 생성 후 현재 상태
watch -d 'ifconfig tunl0 | head -2 ; ifconfig tunl0 | grep bytes’
tcpdump -i tunl0 -nn
⇒ 터널 인터페이스에 파드간 IP 패킷 정보 확인
tcpdump -i ens5 -nn proto 4
노드와 노드 구간 파드 간 통신이 IPIP encapsulation을 통해 이루어진다.
⇒ 앞서 실습했던 모드.
calicoctl get ippool default-ipv4-ippool -o yaml | sed -e "s/ipipMode: Always/ipipMode: Never/" | calicoctl apply -f -
⇒ 상대방 ip와 통신할 때 tunl0 인터페이스였으나 사라지고 ens5로 변경
⇒ 다른 대역대인 worker-node0와 통신시 실패!
⇒ 네트워크 간 라우터가 존재, 하지만 라우팅 테이블에 정보가 없다.
⇒ 되게 하는 법은, 네트워크 팀이 이걸 다 라우팅을 해줘야한다.
calicoctl patch ippool default-ipv4-ippool -p '{"spec":{"ipipMode":"CrossSubnet"}}’
calicoctl patch felixconfiguration default --type='merge' -p '{"spec":{"wireguardEnabled":true}}'