来自Env的Kubernetes服务/负载均衡器的公共IP地址

时间:2017-08-29 02:46:19

标签: kubernetes google-kubernetes-engine

我有一个nodejs应用程序,它引用了kubernetes服务/负载均衡器公共IP的IP地址。有没有办法从运行时的进程/ env变量中获取它?

e..g process.env.ENV_VARIABLE以及env变量名称是什么

由于

1 个答案:

答案 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或启动时):

  • 如果您使用的是Ingress:gcloud compute forwarding-rules describe k8s-fw-YOURNAMESPACE-YOURINGRESSNAME--YOURHASHVALUE --global --format='value(IPAddress)'
  • 如果您保留了静态IP:gcloud compute addresses describe my-static-ip-name --global --format='value(address)'