Kubernetes를 멀티 인터페이스 환경에서 설치할 땐 꼭 네트워크 인터페이스를 나눠서 설정해야 합니다. 그렇지 않으면 kubelet이나 CNI가 엉뚱한 IP를 선택해 통신 장애나 설치 실패로 이어질 수 있어요.
이번 글에서는 다음을 기준으로 정리할게요!
node-ip와iface설정이 왜 필요할까?- 실제 설치 과정
- 네트워크 흐름 예시로 개념 쉽게 이해하기
✅ 왜 인터페이스를 나눠야 할까?
클러스터가 여러 NIC(네트워크 인터페이스 카드)를 갖고 있다면, 다음 세 가지 네트워크가 각각 다를 수 있어요
- external network – 사용자 접근 (예: 17.x.x.x)
- internal network – 노드 간 통신 (예: 192.168.x.x)
- pod network – Pod 간 통신 (예: 10.x.x.x)

✅통신 Flow #1 – 외부 사용자가 클러스터에 접근하는 경우
왼쪽 그림처럼 외부 사용자가 접근할 때는, external → internal → pod 네트워크 순으로 트래픽이 흐릅니다.
✅통신 Flow #2 – Pod 간 내부 통신
오른쪽은 내부 Pod끼리 통신하는 경우입니다. 이때는 internal network와 pod network(VxLAN)를 주로 사용하죠.
👉 이런 구조에서 어떤 인터페이스를 사용할지 명확하게 지정하지 않으면 통신이 꼬이게 됩니다.
✅ 설치 전 필수 설정 – IP 지정
kubelet에 node-ip 지정
# node ip 사전 설정
echo 'KUBELET_EXTRA_ARGS=--node-ip=172.20.245.103' | sudo tee /etc/default/kubelet
→ kubelet이 사용할 IP를 명확히 지정합니다 (eth1 같은 내부 NIC의 IP).
✅ Kubernetes 설치 과정
1. kubeadm 설정 파일 작성
# kubeadm-init.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 172.20.245.102 # master 노드의 내부 NIC IP
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controlPlaneEndpoint: 172.20.245.102:6443 # VIP 또는 마스터 IP
networking:
podSubnet: 10.244.0.0/16 # Flannel 설정에 맞춰 사용
kubernetesVersion: "v1.27.14"
2. 클러스터 초기화
kubeadm init --config kubeadm-init.ya
✅ Flannel 설치 시 iface 설정
Flannel은 Pod 간 통신에 사용하는 CNI 플러그인이에요. --iface 옵션을 통해 어떤 인터페이스를 사용할지 지정해줘야 합니다:
# flannel.yaml 예시
- name: kube-flannel
command:
- /opt/bin/flanneld
- --ip-masq
- --kube-subnet-mgr
- --iface=eth1 # 내부 통신에 사용할 NIC
적용 명령어:
kubectl apply -f flannel.yaml
✅ 정리
| 설정 항목 | 역할 | 예시 IP |
|---|---|---|
| node-ip | kubelet이 사용할 IP 설정 | 172.20.245.103 |
| advertiseAddress | 마스터가 광고할 API IP | 172.20.245.102 |
| controlPlaneEndpoint | 외부에서 접근할 VIP 혹은 IP | 172.20.245.102:6443 |
| –iface | Flannel이 사용할 인터페이스 지정 | eth1 |
📌 마무리
멀티 인터페이스 환경에서는 “어떤 네트워크가 어떤 역할을 하는지” 명확히 나누는 것이 핵심입니다.
- kubelet에는
-node-ip - Flannel에는
-iface
이 설정이 제대로 되어 있어야 안정적인 설치와 통신이 가능합니다.
그림과 흐름만 잘 이해하면, 실무에서도 확실히 적용할 수 있어요.