
ΠΡΠ΅ΠΆΠΎΠ²ΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½ Calico ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΡΠΎΠΊ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Ρ
ΠΎΡΡΠΎΠ²Π΅ Π½Π° Ρ
Π°ΡΠ΄ΡΠ΅Ρ, Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ podβΠΎΠ²Π΅. Π’Π΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° namespace ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΊΡΠΌ (Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Ρ
ΠΎΡΡΠ° β Ρ
ΠΎΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΡΠ²ΡΡ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°) ΠΈΠ»ΠΈ ΠΊΡΠΌ (Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° Ρ
ΠΎΡΡΠ°). ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Calico ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΊΠ°ΡΠΎ preDNAT, unraracked ΠΈ applyOnForward. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ²Π°Ρ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Calico (preDNAT, unraracked ΠΈ applyOnForward), ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΊΡΠΌ host endpoints, Ρ Π°ΠΊΡΠ΅Π½Ρ Π²ΡΡΡ
Ρ ΡΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΏΡΡΠΈΡΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ (ΡΠ΅ΠΏΠΎΡΠΊΠΈ iptables).
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π² Kubernetes ΠΈ Calico. ΠΠΊΠΎ Π½Π΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ ΠΈ Ρ Calico ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ°Π·ΡΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π² Linux.
Calico Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π΅ΡΠΈΠΊΠ΅ΡΠΈ (ΠΊΡΠΌ Π³ΡΡΠΏΠΈ Ρ ΠΎΡΡΠΎΠ²Π΅ ΠΈ workloads/pods). Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ β Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Kubernetes. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ Π²Π°ΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ (Π½ΠΎΠ΄ΠΎΠ²Π΅) Ρ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΈ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΊΡΠΌ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π· NodePorts ΠΈΠ»ΠΈ Π²ΡΠ½ΡΠ½ΠΈ IP Π°Π΄ΡΠ΅ΡΠΈ).
ΠΠ° ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Calico ΡΠ²ΡΡΠ·Π²Π° pod Ρ ΠΌΡΠ΅ΠΆΠ°ΡΠ° (Π²ΠΆ. Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ), ΡΠΎΠΉ Π³ΠΎ ΡΠ²ΡΡΠ·Π²Π° Ρ Ρ ΠΎΡΡΠ° ΡΡΠ΅Π· Π²ΠΈΡΡΡΠ°Π»Π΅Π½ Ethernet ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (veth). Π’ΡΠ°ΡΠΈΠΊΡΡ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΎΡ pod-Π°, Π΄ΠΎΡΡΠΈΠ³Π° Π΄ΠΎ Ρ ΠΎΡΡΠ° ΠΏΡΠ΅Π· ΡΠΎΠ·ΠΈ Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°ΠΊΠ°, ΡΡΠΊΠ°Ρ ΠΈΠ΄Π²Π° ΠΎΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Calico Π½Π°ΡΠΈΡΠ° ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ caliXXX. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠΉ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· iptables, Π²ΡΠ΅ Π΅Π΄Π½ΠΎ ΡΠ΅ pod-ΡΡ Π΅ Π½Π° ΡΠ°Π·ΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ hop. ΠΠ°ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ Π΄ΠΎΡΡΠΈΠ³Π°/ΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ pod-Π°, ΡΠΎΠΉ ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° (forwarded) ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡΠ°.
ΠΠ° Kubernetes Π²ΡΠ·Π΅Π», Π½Π° ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ Calico, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (veth) Ρ workload ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½. Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ veth#10 (calic1cbf1ca0f8) Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ cnx-manager-* Π² calico-monitoring namespace.
[centos@ip-172-31-31-46 K8S]$ sudo ip a
...
10: calic1cbf1ca0f8@if4: mtu 1440 qdisc noqueue state UP group default
link/ether ee:ee:ee:ee:ee:ee brd ff:ff:ff:ff:ff:ff link-netnsid 5
inet6 fe80::ecee:eeff:feee:eeee/64 scope link
valid_lft forever preferred_lft forever
...
[centos@ip-172-31-31-46 K8S]$ calicoctl get wep --all-namespaces
...
calico-monitoring cnx-manager-8f778bd66-lz45m ip-172-31-31-46.ec2.internal 192.168.103.134/32
calic1cbf1ca0f8
... 
ΠΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Calico ΡΡΠ·Π΄Π°Π²Π° veth ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° Π²ΡΡΠΊΠΎ workload, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅? ΠΠ° ΡΠΎΠ²Π° Calico ΡΡΠ·Π΄Π°Π²Π° Ρ
ΡΠΊΠΎΠ²Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²Π΅ΡΠΈΠ³ΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ iptables.
ΠΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅, ΡΡΠ°ΡΡΠ²Π°ΡΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² iptables (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° netfilter). ΠΠΎΠ³Π°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠΎΠΉ ΠΏΡΡΠ²ΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° PREROUTING. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΎΠ²Π° ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· INPUT (Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° Ρ ΠΎΡΡΠ°) ΠΈΠ»ΠΈ ΠΏΡΠ΅Π· FORWARD (Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³ Π²ΡΠ·Π΅Π» Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°). ΠΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° OUTPUT ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° POSTROUTING ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ pod-ΡΡ ΡΡΡΠΎ Π΅ Π²ΡΠ½ΡΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ (ΡΠ²ΡΡΠ·Π°Π½ Ρ veth) ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° iptables. ΠΠ° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ:
- ΠΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ΠΈΡΡ (forwarded) ΡΡΠ°ΡΠΈΠΊ (nat, ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ»ΠΈ ΠΎΡ/Π΄ΠΎ pod) ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ PREROUTING - FORWARD - POSTROUTING.
- Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° PREROUTING - INPUT.
- Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· Π²Π΅ΡΠΈΠ³Π°ΡΠ° OUTPUT - POSTROUTING.

Calico ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΡΡΠ΅Π· ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΠΈΠ³ΠΈ. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠΎΠ²Π°, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅, Π½Π°Π»ΠΈΡΠ½ΠΈ Π² Calico. Π¦ΠΈΡΡΠΈΡΠ΅ Π² ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΎΠΏΡΠΈΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠΈΡΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅.
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠΎΠ²Π°Ρ (pod)
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡ
- ΠΠΏΡΠΈΡ ApplyOnForward
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° PreDNAT
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Untracked
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠΎΠ²Π°Ρ (pod'ΠΎΠ²Π΅ Π½Π° Kubernetes ΠΈΠ»ΠΈ OpenStack VMs), Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° Ρ ΠΎΡΡ.
ΠΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠΎΠ²Π°Ρ
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠΎΠ²Π°Ρ (1)
Π’ΠΎΠ²Π° Π΅ ΠΎΠΏΡΠΈΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π²Π°ΡΠΈΡΠ΅ kubernetes pod'ΠΎΠ²Π΅. Π Calico ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π±ΠΎΡΠ° Ρ Kubernetes NetworkPolicy, Π½ΠΎ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ β Calico NetworkPolicy ΠΈ GlobalNetworkPolicy. Calico ΡΡΠ·Π΄Π°Π²Π° Π²Π΅ΡΠΈΠ³Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ pod (ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠΎΠ²Π°Ρ) ΠΈ Π½Π°ΠΊΠ°ΡΠ° Π² Π²Π΅ΡΠΈΠ³ΠΈ INPUT ΠΈ OUTPUT Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΡΠΎΠ²Π°Ρ ΠΊΡΠΌ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Ρ ΡΠΈΠ»ΡΡΡΠΈ Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° FORWARD.
ΠΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° Ρ ΠΎΡΡ
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡ (2)
ΠΡΠ²Π΅Π½ CNI (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½Π° ΠΌΡΠ΅ΠΆΠ°), ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΡΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° Ρ ΠΎΡΡΠ°. Π Calico ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡ, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° Ρ ΠΎΡΡΠ° ΠΈ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΠ²Π΅ΡΠ΅. ΠΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΠΎΠ·ΠΈ ΠΎΠ±Π΅ΠΊΡ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΡΡΠ΅Π· ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Ρ ΡΠΈΠ»ΡΡΡΠΈ Π² Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ INPUT ΠΈ OUTPUT. ΠΠ°ΠΊΡΠΎ ΡΠ΅ Π²ΠΈΠΆΠ΄Π° ΠΎΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ°, (2) ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ Π½Π° Π½ΠΎΠ΄Π°ΡΠ°/Ρ ΠΎΡΡΠ°. Π’ΠΎΠ΅ΡΡ, Π°ΠΊΠΎ ΡΡΠ΅ ΡΡΠ·Π΄Π°Π»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡ, ΡΡ Π½ΡΠΌΠ° Π΄Π° ΠΏΠΎΠ²Π»ΠΈΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΈΠ΄Π²Π°Ρ ΠΊΡΠΌ/ΠΎΡ Π²Π°ΡΠΈΡΠ΅ pod'ΠΎΠ²Π΅. ΠΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΅Π΄ΠΈΠ½Π΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ/ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π·Π° Π²Π°ΡΠΈΡ Ρ ΠΎΡΡ ΠΈ pod'ΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico. Π’ΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½Π° ΠΌΡΠ΅ΠΆΠ°. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° Ρ ΠΎΡΡ Π·Π° Π·Π°ΡΠΈΠ»Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π΅ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²Π°ΠΆΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° ApplyOnForward (3)
ΠΠΏΡΠΈΡΡΠ° ApplyOnForward Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° Calico, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΊΡΠΌ ΡΠ΅Π»ΠΈΡ ΡΡΠ°ΡΠΈΠΊ, ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° Ρ ΠΎΡΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ ΠΎΡ Ρ ΠΎΡΡΠ°. Π’ΠΎΠ·ΠΈ ΡΡΠ°ΡΠΈΠΊ Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π΄ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ pod ΠΈΠ»ΠΈ Π½ΡΠΊΡΠ΄Π΅ Π΄ΡΡΠ³Π°Π΄Π΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°. Calico ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π° Π±ΡΠ΄Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ PreDNAT ΠΈ untracked, Π²ΠΈΠΆΡΠ΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ApplyOnForward ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π½Π° Ρ ΠΎΡΡΠ° Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΡΡΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ NAT.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π°ΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΊΠ°ΠΊΡΠΎ Π·Π° Ρ ΠΎΡΡ-ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° pod-ΠΎΠ²Π΅, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° ApplyOnForward. ΠΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π΅ΡΠΈΠΊΠ΅Ρ Π·Π° Π½ΡΠΆΠ½ΠΈΡΠ΅ hostendpoint ΠΈ workload endpoint (pod). Calico Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠΌΠ΅Π½, Π·Π° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π΅ΡΠΈΠΊΠ΅ΡΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΈΠΏΠ° endpoint (hostendpoint ΠΈΠ»ΠΈ workload).
PreDNAT ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° (4)
Π Kubernetes ΠΏΠΎΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° service ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΠ±ΠΈΡΠΈ Π½Π°Π²ΡΠ½ Ρ ΠΎΠΏΡΠΈΡΡΠ° NodePorts ΠΈΠ»ΠΈ, ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ (ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Calico), ΡΡΠ΅Π· ΡΡΡ Π½ΠΎΡΠΎ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½Π΅ ΠΏΡΠ΅Π· ΠΎΠΏΡΠΈΠΈ Cluster IPs ΠΈΠ»ΠΈ External IPs. Kube-proxy Π±Π°Π»Π°Π½ΡΠΈΡΠ° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡΠ°ΡΠΈΠΊ, ΡΠ²ΡΡΠ·Π°Π½ Ρ service, ΠΊΡΠΌ pod-ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ service, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ DNAT. Π‘ΡΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΠΉΠΊΠΈ ΡΠ΅ Ρ ΡΠΎΠ²Π°, ΠΊΠ°ΠΊ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΠΈΠΊΠ°, ΠΏΠΎΡΡΡΠΏΠ²Π°Ρ ΠΏΡΠ΅Π· NodePorts? ΠΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΡΠ°ΡΠΈΠΊΡΡ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ DNAT (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° Ρ ΠΎΡΡ:ΠΏΠΎΡΡ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΈΡ service), Calico ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π° globalNetworkPolicy, Π½Π°ΡΠ΅ΡΠ΅Π½ βpreDNAT: trueβ.
ΠΠΎΠ³Π°ΡΠΎ pre-DNAT Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½, ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π² (4) Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° β Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° mangle Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° PREROUTING β Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ DNAT. ΠΠ±ΡΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΡ ΡΠ΅Π΄ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ (order) ΡΡΠΊ Π½Π΅ ΡΠ΅ ΡΠΏΠ°Π·Π²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΡΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ preDNAT ΡΠΏΠ°Π·Π²Π°Ρ ΡΠ΅Π΄Π° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ (order) ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ pre-DNAT Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π²Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ Ρ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΠΉΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΡΠ΅, ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΡ
Π²ΡΡΠ»Π΅Π½. Π’ΡΠ°ΡΠΈΠΊΡΡ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ ΠΊΠ°ΡΠΎ βallowβ Π² ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° pre-DNAT, ΠΏΠΎΠ²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° hostendpoint, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠ°ΡΠΈΠΊΡΡ, ΠΏΡΠΈ ΠΏΡΠΎΠ²Π°Π» Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° pre-DNAT, ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΠΏΡΡΡ ΡΠΈ ΠΏΡΠ΅Π· ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ Π²Π΅ΡΠΈΠ³ΠΈ.
Calico Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° applyOnForward ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° preDNAT, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠΎΠ½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΈΠ·Π±ΡΠ°Π½ΠΎ. Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ Ρ
ΠΎΡΡ-ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ»ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° Π½ΠΎΠ΄Π°.
Untracked ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° (5)
ΠΡΠ΅ΠΆΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. Π Π½ΡΠΊΠΎΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΠΉΠ½ΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² conntrack (ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΡΡΠ΅ΠΊ Π½Π° Linux). Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠΎΠ·ΠΈ ΡΠΈΠΏ Π² Linux Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΠΈΠ»ΠΈ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° conntrack, ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π·Π° iptables, Π·Π° Π΄Π° ΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ conntrack. ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Untracked Π² Calico ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±ΡΡΠ·ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΌΠ°ΡΠΈΠ²Π΅Π½ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΌΡΡΠΊΠ° Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ .
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠΎΠ·ΠΈ (ΠΈΠ»ΠΈ ) Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° untracked policy.
ΠΠΎΠ³Π°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° "doNotTrack: true" Π² Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Calico, ΡΡ ΡΡΠ°Π²Π° **Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠ°** ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π½Π° Π½Π°ΠΉ-ΡΠ°Π½Π½ΠΈΡ Π΅ΡΠ°ΠΏ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π² Linux. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΡ Π΅ΠΌΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ untracked ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² Π²Π΅ΡΠΈΠ³ΠΈΡΠ΅ PREROUTING ΠΈ OUTPUT Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° raw, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° (conntrack). ΠΠΎΠ³Π°ΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡΡ Π±ΡΠ΄Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ ΠΎΡ untracked ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΡΠΎΠΉ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°, Π·Π° Π΄Π° ΡΠ΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°:
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ. ΠΡΠΌΠ° ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ). ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡ (connection) Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ:
- ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠ°ΠΊΡΠΎ ΡΡΠ°ΡΠΈΠΊ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΡΡΠ°ΡΠΈΠΊ Π½Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΊΡΠΎ Π·Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΡ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΈΡ (ΡΡΠΉ ΠΊΠ°ΡΠΎ Calico ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° conntrack, Π·Π° Π΄Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΈΡ ΡΡΠ°ΡΠΈΠΊ ΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½).
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π·Π° Kubernetes workloads (podβΠΎΠ²Π΅), ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½ΡΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈ ΠΈΠ·Ρ ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΎΡ podβΠ°.
- NAT Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Ρ Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ (ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΄ΡΠΎΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΡΠΎ NAT Π² conntrack).
- ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΏΡΠ΅Π· ΠΏΡΠ°Π²ΠΈΠ»ΠΎ "ΡΠ°Π·ΡΠ΅ΡΠΈ Π²ΡΠΈΡΠΊΠΎ" Π² untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π½Π΅ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΠΈ. Π’ΠΎΠ²Π° ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π½Π΅ Π΅ ΡΠΎΠ²Π°, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅, Π·Π°ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΠΎΡ untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ (ΠΈ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π½Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΊΠ° Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅).
- Untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π² ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΡΠΎΠ²Π° ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° pod Ρ order:1 ΠΈ untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Ρ order:1000. Π’ΠΎΠ²Π° Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° pod. Untracked-ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ ΡΠΏΠ°Π·Π²Π°Ρ ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° doNotTrack Π΅ Π΄Π° Π½Π°Π»ΠΎΠΆΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Π½Π°ΠΉ-ΡΠ°Π½Π½ΠΈΡ Π΅ΡΠ°ΠΏ ΠΎΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² Linux, Calico Π·Π°Π΄ΡΠ»ΠΆΠ°Π²Π° ΠΏΠΎΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° applyOnForward ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° doNotTrack. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° untracked (5) ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΡΠ΅Π΄ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠ°Π½Π΅. Π’ΡΠ°ΡΠΈΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ Ρ ΠΎΡΡ ΠΏΡΠΎΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ pod ΠΈΠ»ΠΈ Π½Π° Π΄ΡΡΠ³Π° Π½ΠΎΠ΄Π°.
Π Π΅Π·ΡΠΌΠ΅
Π Π°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ (Host endpoint, ApplyOnForward, preDNAT ΠΈ Untracked) Π² Calico ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΡ Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Calico ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ Π΅ΡΠΈΠΊΠ΅Ρ (Π³ΡΡΠΏΠ° Π½ΠΎΠ΄ΠΈ ΠΈ pod-ΠΎΠ²Π΅) ΠΈ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈΡΠ΅ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ² Π΄ΠΈΠ·Π°ΠΉΠ½ Π΄Π° Π·Π°ΡΠΈΡΠ°Π²Π°Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ βΠ²ΡΠΈΡΠΊΠΎβ (ΡΠΈΠΏΠΎΠ²Π΅ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π΅Π΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Calico.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡ: ΠΡΠΊΠ°ΠΌ Π΄Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈ Π·Π° ΡΠ΅Ρ
Π½ΠΈΡ ΠΏΡΠ΅Π³Π»Π΅Π΄ ΠΈ Π·Π° ΡΠ΅Π½Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
