3주차 [1] - Calico CNI
Calico CNI 동작과 통신흐름을 이해한다.
1. Calico 기본 통신 이해
Calico는 k8s의CNI입니다.
네트워크 보안기능 지원
k8s가 아닌 플랫폼간 통신 지원
실습을 위한 환경 생성합니다.

스택을 먼저 생성해줍니다.

기본 k8s 정보를 확인합니다.


Calico CNI를설치합니다.

1.1 Calico CNI 알아보기
Calico는 k8s의 Node간 통신을 연결하는 CNI Plugin 입니다.

calicoctl은 파드를 생성하거나, calico 설정이 변경될때, datastore에 정보가 변경됩니다.
calico datastore(A) 는 k8s API 저장소를 사용하며, calico 동작을 위해 데이터를 저장합니다.
bird(B) 는 오픈 소스 소프트웨어 라우팅 데몬 프로그램으로, pod의 CIDR을 광고합니다. 이를 통해서 각 노드는 다른 노드들의 pod들과 통신 할 수 있습니다.
felix(C)는 버드로 알아낸 pod 대역을 라우팅 테이블에 업데이트 하는 역할을 하고 IP Tables 규칙을 설정 합니다.
confd는 가벼운 오픈소스 설정 변경 관리 툴입니다. calico datastore 에 변경이 발생하면 bird의 변경된 설정 파일을 만들고 반영하게 합니다.
calico는 자체 IPAM 플러그인 을 제공합니다. (pod 에 할당할 IP 대역)
파드 생성할때, CNI 플러그인과 CNI IPAM 플러그인을 통해서 파드의 네트워크 설정을 하고, 통신의 경우 노드 felix의 iptables과 라우팅 테이블 통해서 이루어지게됩니다.


ipam show를 보면 각각 노드가 가지고 있는 대역을 확인할 수 있습니다.



1.2 파드 <-> 파드 간 통신

1.2.1 [실습] - 기본 상태 확인


여기서 블랙홀 라우팅은
라우팅 루핑 문제를 해결하기 위함
1.2.2 [실습] - 파드 배포 후 상태 확인

파드간 통신 실행 및 확인
arp 프록시를 사용하게 됩니다.
arp 테이블은 mac address를 ip로 변환해주는 프로토콜입니다.
호스트간 통신시에 각각의 arp 테이블에 대해서 ip를 resolving하지 않고, 프록시 arp 테이블에 대해서 resolving 하는 메커니즘입니다.

1.3 파드 -> 외부(인터넷) 통신

1.3.1 최종 통신 흐름
1.3.2 파드 배포 전 기본상태 확인

1.3.3 파드 배포 및 외부 통신 확인인


1.4 다른 노드에서 파드 <-> 파트 간 통신

1.4.1 최종 통신 흐름
각 노드에 파드 네트워크는 BIRD를 통해서 전파되고, FELIX에 의해 라우팅 테이블이 업데이트됩니다.
다른 노드 간 파드 통신시에는 IPIP 모드를 통해서 이루어지게 됩니다.

이렇게 protocol이 IPIP로 잡혀서 헤더값을 패킷에서 관찰 할 수 있습니다.
1.4.2 파드 배포 전 기본 상태 확인

1.4.3 파드 배포
1.4.4 파드간 통신 실행 확인


패킷을 확인해보면, IPIP로 통신한것을 확인할 수 있습니다.
Last updated