OS-Level Preparation for Kubernetes - FireWall
방화벽
sudo ufw disable
platform이 안정적으로 운영되기 위해서는 방화벽의 방해를 받으면 안됨
ufw (ububtu 방화벽)
↓
iptables (동시에 건드림)
↑
kube-proxy (k8s)ufw를 끄고, iptables를 k8s한테 통째로 맡김
sudo ufw disable
Firewall stopped and disabled on system startup
sudo ufw status
Status: inactiveufw는 기본적으로 FORWARD를 차단
다른 node의 Pod끼리 통신하려면 node가 라우터 역할로 패킷을 통과시켜야함
그래서 net.ipv4.ip_forward=1을 켜서 node를 router로 만들었음
그런데 ufw가 FORWARD를 기본 DROP으로 막아버리면 ip_forward를 1로 켜놔도 ufw가 그 패킷을 통과 직전에 버림
또한, iptables는 위에서부터 순서대로 규칙을 읽는데 ufw가 위쪽에 기본적으로 다 막는 규칙을 박아두면 kube-proxy가 아무리 정교한 DNAT 규칙을 적어놔도 패킷이 거기까지 도달하기 전에 ufw 규칙에 걸려서 DROP됨
따라서, ‘iptables를 k8s한테 통째로 맡긴다’ 라는 의미는 ‘이 node의 iptables를 관리하는 주체를 kube-proxy로 통일한다’ 라는 의미
iptables vs netfilter vs ufs
netfilter: 리눅스 커널 안에서 패킷의 IN/OUT/FORWARD를 결정하는 패킷 처리 엔진
iptables: netfilter를 제어하는 명령어
ufw(uncomplicated firewall): 복잡한 iptables의 규칙을 직접 다루지 않고 쉽게 만들어 주는 도구