Правила iptables Kubernetes kube-proxy кажутся излишними - PullRequest
0 голосов
/ 27 февраля 2019

Контекст

Возможно, существует ненужная избыточность в правилах iptalbes, сгенерированных kubeadm init для kube-proxy:

iptables -t filter -S

Вывод:

-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N KUBE-EXTERNAL-SERVICES
-N KUBE-FIREWALL
-N KUBE-FORWARD
-N KUBE-SERVICES
-A INPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes externally-visible service portals" -j KUBE-EXTERNAL-SERVICES
-A INPUT -j KUBE-FIREWALL
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A FORWARD -s 10.244.0.0/16 -j ACCEPT
-A FORWARD -d 10.244.0.0/16 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m comment --comment "kubernetes service portals" -j KUBE-SERVICES
-A OUTPUT -j KUBE-FIREWALL
-A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACCEPT
-A KUBE-FORWARD -s 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod source rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A KUBE-FORWARD -d 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod destination rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Диапазон 10.244.0.0/16 соответствует сети оверлеев pod.

Позволяет сосредоточиться на цепочке FORWARD.

-P FORWARD DROP
-N KUBE-FORWARD
-A FORWARD -m comment --comment "kubernetes forwarding rules" -j KUBE-FORWARD
-A FORWARD -s 10.244.0.0/16 -j ACCEPT
-A FORWARD -d 10.244.0.0/16 -j ACCEPT
-A KUBE-FORWARD -m comment --comment "kubernetes forwarding rules" -m mark --mark 0x4000/0x4000 -j ACCEPT
-A KUBE-FORWARD -s 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod source rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A KUBE-FORWARD -d 10.244.0.0/16 -m comment --comment "kubernetes forwarding conntrack pod destination rule" -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Вопрос:

Почему KUBE-FORWARDпринимает пакеты в оверлейной сети, когда их состояние соединения равно RELATED или ESTABLISHED, если FORWARD цепочка будет принимать весь трафик пакетов в оверлейной сети независимо от их состояния соединения?

Примечание:

кластер kubernetes работает нормально.

1 Ответ

0 голосов
/ 10 мая 2019

Это дублирование есть, потому что по умолчанию политика FORWARD может быть отключена по какой-то причине, и Kubernetes все еще хочет пересылать пакеты, которые либо:

  1. помечены как "masqueradeMark" (те могут начинаться с новогосоединения)
  2. Являются частью уже установленного соединения

Вы можете попробовать прочитать комментарии в источнике k8s: https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/iptables/proxier.go#L1325

В общем, следует ожидать некоторыхдублирование в правилах iptables при автоматическом управлении этими правилами.Это облегчает кодирование автоматизации.

...