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를 사용하도록 되어 있다.
이렇게 되는 경우 노출을 원하는 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