본문 바로가기

컨테이너/Kubernetes

k3s ip여러개 일 때 external ip 정하는 방법(Flannel)

k3s ip여러개 일 때 external ip 정하는 방법

k3s 네트워크 통신을 확보하기 위해 기본적으로 flannel CNI를 제공한다.

 

 

CNI 플러그인이란?

  • 쿠버네티스는 별도 오버레이 네트워크를 구축하는 소프트웨어를 사용해야 한다.
  • 쿠버네티스 클러스터는 여러 쿠버네티스 노드로 구성되어 있으며, 해당 노드들은 파드간 통신을 확보하기 위해 클러스터 내에 분산 배치된 파드가 서로 통신이 가능하도록 네트워크를 구성해야 한다.
  • 이 역할을 하는 것이 CNI(Container Network Interface) 플러그인이다.

 

Flannel (k3s 기본 CNI)

  • Flannel은 Kubernetes 컨테이너 네트워크 인터페이스를 구현하는 Layer3 네트워크 패브릭의 경량 공급자이다.
  • Flannel 옵션은 서버노드에서만 설정할 수 있으며 클러스터의 모든 서버에서 동일해야 한다.
  • k3s 서버가 올라갈 때 flannel의 경우 서버에 다중 인터페이스가 있을 때, 가장 첫번째 인터페이스를 사용할 수 있기 때문에 원하는 ip 인터페이스가 따로 있는경우 옵션을 추가해줘야한다.
  • 기본적으로 k3s는 flannel(VXLAN) CNI를 사용하도록 되어 있다.

k3s docs 참고

 

 

이렇게 되는 경우 노출을 원하는 ip를 설정하려면 어떻게 해야될까?

 

 

k3s server 기동 시에 하단 옵션을 추가로 할당해주면 원하는 네트워크 인터페이스로 external ip를 설정할 수 있다.

 

--node-ip=[원하는 ip] --flannel-iface=[네트워크 인터페이스명]

 

ip, 네트워크 인터페이스명은 리눅스환경의 서버내에서 ifconfig로 확인할 수 있다.

 

 

 

 

 

 

[참고 문서]

 

https://docs.k3s.io/installation/network-options

 

Network Options | K3s

This page describes K3s network configuration options, including configuration or replacement of Flannel, and configuring IPv6.

docs.k3s.io

 

https://kubernetes.io/ko/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/

 

네트워크 플러그인

쿠버네티스 1.26 버전은 클러스터 네트워킹을 위해 컨테이너 네트워크 인터페이스(CNI) 플러그인을 지원한다. 클러스터와 호환되며 사용자의 요구 사항을 충족하는 CNI 플러그인을 사용해야 한다.

kubernetes.io