Devops/Kubernetes

[Kubernetes/Calico] 파드 IP와 네트워크 인터페이스

dev_ss 2024. 5. 27. 12:30

 

 

노드의 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

 

Install calicoctl | Calico Documentation

Install the CLI for Calico.

docs.tigera.io

 

# 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였던 것을 참고하여 네트워크 인터페이스가 무엇인지 찾을 수 있다.

 

 

반응형