[Kubernetes/Calico] 파드 IP와 네트워크 인터페이스
노드의 CIDR
쿠버네티스 환경에서 파드를 생성하게 되면, 노드에 배정받은 IP 대역을 기반으로 파드의 IP를 배정하게 된다.
아래의 명령어로 초기 쿠버네티스 클러스터를 구축할 때 설정했던, pod-cidr을 기반으로 노드에 배정된 대역을 확인할 수 있다.
kubectl describe node [노드 이름] | grep CIDR
그리고 위 CIDR을 토대로 파드 IP가 배정되는 부분을 확인해 볼 것이다.
파드의 IP 배정
파드 생성
파드 조회
CIDR을 기반으로 192.168.1.4라는 IP가 파드에 배정이 된 것을 볼 수 있다.
생성된 네트워크 인터페이스 확인
이러한 파드들은 생성이 될 때, Calico에서 각각의 네트워크 인터페이스를 생성하게 되고, 이는 cali로 시작하는 이름의 네트워크 인터페이스인 것을 확인할 수 있다.
아래는 node로 접속하여 해당 네트워크 정보를 확인한 자료이다.
3개의 cali로 시작하는 네트워크 인터페이스가 존재하는 것을 볼 수 있다.
여기서 이전에 생성했던 nginx 파드의 네트워크 인터페이스가 무엇인지 위 사진을 보고는 알 수 있는 방법이 없다.
이는 아래의 두 가지 방법을 통하여 확인이 가능하다.
네트워크 인터페이스와 파드 정보 확인
방법 1 : Calicoctl 이용
아래는 calico에서 제공하는 calicoctl 설치 가이드이다.
https://docs.tigera.io/calico/latest/operations/calicoctl/install
# calicoctl 다운로드 (3.28.0 버전 기준)
curl -L https://github.com/projectcalico/calico/releases/download/v3.28.0/calicoctl-linux-amd64 -o calicoctl
# 권한 수정
chmod +x ./calicoctl
# 바이너리 파일 복사
cp ./calicoctl /usr/local/bin/
calicoctl을 설치하고, 아래 명령어를 실행한다면, 다음과 같이 파드 이름과 노드, 네트워크 및 네트워크 인터페이스 정보를 알 수 있다.
- 설치된 calico와 calicoctl의 버전이 맞지 않다면, 사진과 같이 --allow-version-mismatch 옵션을 줘야 한다.
# calicoctl을 통한 정보 확인
calicoctl get workloadEndpoint
# 네임스페이스 옵션
calicoctl get workloadEndpoint -n [네임스페이스]
# 모든 네임스페이스 파드 정보 확인
calicoctl get workloadEndpoint -A
방법 2 : 네트워크 라우팅 확인
파드가 실행되고 있는 Worker node에 접속하여 아래 명령어를 실행한다.
# 라우팅 정보 확인
ip route
그렇다면 위 사진과 같이 각 파드 IP와 연결된 네트워크 인터페이스를 확인할 수 있다.
이 정보를 이용하여 이전의 nginx 파드 IP가 192.168.1.4였던 것을 참고하여 네트워크 인터페이스가 무엇인지 찾을 수 있다.