我有一个nodejs应用程序,它引用了kubernetes服务/负载均衡器公共IP的IP地址。有没有办法从运行时的进程/ env变量中获取它?
e..g process.env.ENV_VARIABLE
以及env变量名称是什么
由于
答案 0 :(得分:2)
不可用作为环境变量。另外请记住,pod可以从多个负载均衡器接收流量,并且在Pod启动后外部IP也可能会发生变化,从而留下过时的值;所以环境变量中的IP可能不是一个合适的解决方案。
如果您使用 Ingress 对象,则可以通过查询Kubernetes apiserver来确定它的外部IP(请尝试kubectl get myingress -o yaml
,请参阅status:
部分)。
对于特定的传入 http请求,请检查负载均衡器IP的X-Forwarded-For:
标头。
由于问题标记为google-container-engine,您还可以使用 gcloud 获取该IP(可能来自initContainer或启动时):
gcloud compute forwarding-rules describe k8s-fw-YOURNAMESPACE-YOURINGRESSNAME--YOURHASHVALUE --global --format='value(IPAddress)'
gcloud compute addresses describe my-static-ip-name --global --format='value(address)'