규칙은
-A KUBE-SEP-G3HEJMIUHDVUA2GR -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination
이는 kube 서비스 규칙의 일부입니다.
-N KUBE-SEP-G3HEJMIUHDVUA2GR
-A KUBE-SEP-G3HEJMIUHDVUA2GR -s 10.233.64.2/32 -m comment --comment "kube-system/kube-dns:dns" -j KUBE-MARK-MASQ
-A KUBE-SEP-G3HEJMIUHDVUA2GR -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination
내가 아는 한, 일반적으로 이 규칙은 다음과 같은 특정 대상을 갖습니다.
-A KUBE-SEP-XEZU3EBQ2WW4MLUB -p tcp -m comment --comment "default/nginx:https" -m tcp -j DNAT --to-destination 10.233.116.87:443
첫 번째에는 특정 대상이 없지만 서비스에 엔드포인트가 하나만 있기 때문일 수 있지만 다음 사항을 알고 싶습니다.
- 대상 ":0"은(는) 무슨 뜻인가요?
- "--destination"이 세 번 나타나는 이유는 무엇입니까?
- 여기서 "--지속"의 용도는 무엇입니까?
- DNAT 표적에 대한 더 자세한 문서는 어디에서 찾을 수 있나요?
답변1
이것은 전혀 대답이 아닙니다. 추가 조사를 통해 kube-proxy 컨테이너의 iptables 규칙이 호스트의 iptables 규칙과 다르다는 사실을 발견했습니다.
-N KUBE-SEP-OYL6BTTAC4W4HXLZ
-A KUBE-SEP-OYL6BTTAC4W4HXLZ -s 10.233.64.38/32 -m comment --comment "kube-system/kube-dns:dns" -j KUBE-MARK-MASQ
-A KUBE-SEP-OYL6BTTAC4W4HXLZ -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination :0 --persistent --to-destination :0 --persistent --to-destination
(컴퓨터를 재부팅했기 때문에 이름과 IP가 변경되었습니다)
그런 다음 두 iptables cli의 버전을 확인한 결과 일치하지 않는 것으로 나타났습니다. 이전에 커널을 업그레이드했는데 이로 인해 몇 가지 문제가 발생했을 수 있습니다. 하지만 저는 너무 깊이 파고들고 싶지 않습니다. 저는 커널 전문가가 아닙니다.