Kubernetes предоставляет IP-адрес внутреннего источника, хотя для externalTrafficPolicy установлено значение Local.

Наш кластер Kubernetes включает балансировщик нагрузки nginx, который перенаправляет запросы в другие поды.

Однако nginx видит IP-адреса локального источника и, следовательно, не может установить правильный заголовок X-Real-IP. Я попытался установить для nginx значение externalTrafficPolicy как «Local», но IP-адрес не изменился.

Раздел конфигурации сервиса nginx:

 "selector": {
  "app": "nginx-ingress",
  "component": "controller",
  "release": "loping-lambkin"
},
"clusterIP": "10.106.1.182",
"type": "LoadBalancer",
"sessionAffinity": "None",
"externalTrafficPolicy": "Local",
"healthCheckNodePort": 32718

Результат:

GET / HTTP/1.1
Host: example.com:444
X-Request-ID: dd3310a96bf154d2ac38c8877dec312c
X-Real-IP: 10.39.0.0
X-Forwarded-For: 10.39.0.0

Мы используем кластер из чистого металла с металлом.


person Johannes Mittendorfer    schedule 15.10.2018    source источник
comment
Я обнаружил, что плетение необходимо настроить с использованием NO_MASQ_LOCAL=1 для соблюдения свойства externalTrafficPolicy.   -  person Johannes Mittendorfer    schedule 15.10.2018
comment
Мы сталкиваемся с той же проблемой, единственная разница в том, что мы находимся во фланелевой сети, вы знаете, как отключить маскарад на фланелевой сети?   -  person 阿尔曼    schedule 10.06.2019
comment
Извините, я понятия не имею о фланели   -  person Johannes Mittendorfer    schedule 11.06.2019


Ответы (2)


Я обнаружил, что weave необходимо настроить с использованием NO_MASQ_LOCAL=1 для соблюдения свойства externalTrafficPolicy.

person Johannes Mittendorfer    schedule 11.06.2019

Похоже, это ошибка в реализации IPVS для служб типа LoadBalancer: https://github.com/google/metallb/issues/290

person eknudtson    schedule 19.11.2018