gpt4 book ai didi

kubernetes - 如何在 pod 上获取客户端的公共(public) IP?

转载 作者:行者123 更新时间:2023-12-02 12:14:54 25 4
gpt4 key购买 nike

我有一个基于 Python-Flask 的应用程序。我想在客户访问我的入口端点时获取他们的公共(public) IP。

我已经尝试将 externalTrafficPolicy 更改为 Local 和 Cluster。

我的 Pod YAML 文件

apiVersion: v1
kind: Pod
metadata:
labels:
run: webplatform
name: webplatform-deployment-6d68c99fc7-xlb8j
namespace: prod
spec:
containers:
- command:
- python
- /app/app.py
envFrom:
- secretRef:
name: webplatform-secret
optional: false
image: docker.fuchicorp.com/webplatform-prod:0.5
imagePullPolicy: Always
name: webplatform-container
imagePullSecrets:
- name: nexus-creds
serviceAccount: webplatform-service-account
serviceAccountName: webplatform-service-account

我的服务 YAML 文件
apiVersion: v1
kind: Service
metadata:
name: webplatform-service
namespace: prod
spec:
externalTrafficPolicy: Cluster
ports:
- nodePort: 32744
port: 7101
protocol: TCP
targetPort: 5000
selector:
run: webplatform
sessionAffinity: None
type: NodePort


我的 Ingress 资源 YAML 文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
certmanager.k8s.io/cluster-issuer: letsencrypt-fuchicorp-prod
kubernetes.io/ingress.class: nginx
generation: 2
name: ingress-webplaform
namespace: prod
spec:
rules:
- host: academy.fuchicorp.com
http:
paths:
- backend:
serviceName: webplatform-service
servicePort: 7101
tls:
- hosts:
- academy.fuchicorp.com
secretName: letsencrypt-sec-webplatform-prod


当我看到日志时,我在日志上看到了 Ingress-Controllers IP
INFO: 10.16.0.16 - - [28/Sep/2019 20:06:12] "GET / HTTP/1.1" 200 -

最佳答案

TL;博士

客户端 IP 应该可以通过 X-Forwarded-For HTTP header

它应该由负载均衡器(入口 Controller )提供。假设您的集群在云上运行(aws、gcp 等),您可以通过 X-Forwarded-For 获取客户端 IP。 HTTP header 。

如果它是一个本地 k8s 集群(您在自己的私有(private)云/本地机器上运行它),请配置您的负载均衡器来执行此操作 -
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream

关于kubernetes - 如何在 pod 上获取客户端的公共(public) IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58149992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com