У меня проблемы с получением реального IP-адреса клиента в кластере Kubernetes v1.10.11
В моей предыдущей версии Kubernetes 1.6.1 я настроил модуль nginx со службой NodePort, и для этой службы яиспользовал эту старую аннотацию моды:
annotations:
service.beta.kubernetes.io/external-traffic: OnlyLocal
И все работало нормально. Это была полная конфигурация службы yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
labels:
app: nginx
annotations:
service.beta.kubernetes.io/external-traffic: OnlyLocal
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
protocol: TCP
name: http
- port: 443
nodePort: 30443
protocol: TCP
name: https
selector:
app: nginx
Теперь я использую Kubernetes 1.10.11 поверх Ubuntu 16.04.4 LTS с Kernel 4.4.0-165-generic и docker 18.6.2.
Я пытаюсь использовать новый service.spec.externalTrafficPolicy: Local
, как описано в этой документации и в этой документации однако Я не получаю реальный клиентский IP .
Я использую ту же службу и ту же конфигурацию модулей, что и в прошлом при использовании Kubernetes v1.6.1, просто удаляя старую аннотацию и используя service.spec.externalTrafficPolicy
.
Этовесь новый файл службы yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
labels:
app: nginx
spec:
type: NodePort
externalTrafficPolicy: Local
ports:
- port: 80
nodePort: 30080
protocol: TCP
name: http
- port: 443
nodePort: 30443
protocol: TCP
name: https
selector:
app: nginx
Я задаю здесь вопрос, потому что я следовал официальной документации и безуспешно прочитал все подобные проблемы, описанные здесь, в StackOverflow:
Хорошо отметить, что я размещаю свой хостингсобственный кластер, не использующий AWS, GCE и т. д.
Есть идеи, что происходит? какие-либо предложения, чтобы исправить это?
Спасибо!