Trebuie să configurez un IP static într-unul dintre POD-urile mele, deoarece un serviciu de la distanță (în afara clusterului meu) necesită o listă albă de IP de încredere.
Am urmat documentația oferită de Google:
https://cloud.google.com/nat/docs/overview?hl=es-419
https://cloud.google.com/kubernetes-engine/docs/how-to/ip-masquerade-agent
Dar când încerc să configurez traficul de ieșire folosind serviciul Google cloud NAT în clusterul meu GKE plus masquerading folosind ip-masq-agent
Încep să am timeout-uri și probleme când accesez servicii de la distanță în afara clusterului.
Clusterul meu este în versiune 1.19.10-gke.1600
.
Am încercat aceste fișiere de configurare cu următoarele rezultate:
Interval de resincronizare: 60s
Rezultat:
Lanț IP-MASQ (2 referințe)
target prot opt sursă destinație
RETURN all -- oriunde 10.0.0.0/8 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 172.16.0.0/12 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.168.0.0/16 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
MASQUERADE all -- oriunde oriunde /* ip-masq-agent: traficul de ieșire este sub
ject to MASQUERADE (trebuie să fie ultimul din lanț) */
Serviciile continuă să folosească IP greșit.
Interval de resincronizare: 60s
masqLinkLocal: adevărat
Lanț IP-MASQ (2 referințe)
target prot opt sursă destinație
RETURN all -- oriunde 169.254.0.0/16 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 10.0.0.0/8 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 172.16.0.0/12 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.168.0.0/16 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
MASQUERADE all -- oriunde oriunde /* ip-masq-agent: traficul de ieșire este sub
ject to MASQUERADE (trebuie să fie ultimul din lanț) */
Același efect, serviciile mele externe obțin IP greșit.
nonMasqueradeCIDRs:
- 0.0.0.0/0
Interval de resincronizare: 60s
masqLinkLocal: adevărat
Lanț IP-MASQ (2 referințe)
target prot opt sursă destinație
RETURN all -- oriunde oriunde /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
MASQUERADE all -- oriunde oriunde /* ip-masq-agent: traficul de ieșire este sub
ject to MASQUERADE (trebuie să fie ultimul din lanț) */
Se pare că acest lucru funcționează mai bine deoarece serviciile externe primesc IP-ul corect, dar am probleme de conexiune și timeout-uri.
Aceasta este configurația mea NAT:
Cartografierea NAT
- Disponibilitate ridicată: Da
- Subrețele sursă și intervale IP: intervalele IP primare și secundare ale tuturor subrețelelor
- Adrese IP NAT: static-egress-ip XXX.XXX.XXX.XXX
Am ramas fara idei, imi poate da cineva un sfat?
După ce răspunsul a ajuns aici, mi-am actualizat fișierul de configurare pentru a adăuga ips-ul după documentația Google Cloud, fișierul merge astfel:
nonMasqueradeCIDRs:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 100.64.0.0/10
- 192.0.0.0/24
- 192.0.2.0/24
- 192.88.99.0/24
- 198.18.0.0/15
- 198.51.100.0/24
- 203.0.113.0/24
- 240.0.0.0/4
Interval de resincronizare: 60s
masqLinkLocal: adevărat
Rezultatul acestui lucru în iptables este:
Lanț IP-MASQ (2 referințe)
target prot opt sursă destinație
RETURN all -- oriunde 10.0.0.0/8 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 172.16.0.0/12 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.168.0.0/16 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 100.64.0.0/10 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.0.0.0/24 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.0.2.0/24 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 192.88.99.0/24 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 198.18.0.0/15 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 198.51.100.0/24 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 203.0.113.0/24 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
RETURN all -- oriunde 240.0.0.0/4 /* ip-masq-agent: traficul local nu este sub
ject to MASQUERADE */
MASQUERADE all -- oriunde oriunde /* ip-masq-agent: traficul de ieșire este sub
ject to MASQUERADE (trebuie să fie ultimul din lanț) */
Dar dacă trec o buclă checkip.amazonaws.com
pentru a vedea ce IP este folosit de nod, primesc un IP diferit de cel definit în configurația mea NAT Cloud și serviciile externe resping cererea ca nefiind de încredere din clusterul meu.