我有一个nodejs应用程序,它指向kubernetes服务/负载均衡器公有IP的IP地址。有没有办法从运行时的process/env变量中获取它?来自Env的Kubernetes中的服务/负载均衡器的公共IP地址
e..g process.env.ENV_VARIABLE
,什么是环境变量名
感谢
我有一个nodejs应用程序,它指向kubernetes服务/负载均衡器公有IP的IP地址。有没有办法从运行时的process/env变量中获取它?来自Env的Kubernetes中的服务/负载均衡器的公共IP地址
e..g process.env.ENV_VARIABLE
,什么是环境变量名
感谢
这不可作为环境变量。同时请记住,一个容器可以接收来自多个负载平衡器的流量,并且在容器启动后外部IP可能会发生变化,从而导致陈旧的值;所以环境变量中的IP可能不是一个适当的解决方案。
如果您使用的是入口对象就可以判断它是通过查询Kubernetes API服务器的外部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)'
我相信{SVCNAME}_SERVICE_HOST
和{SVCNAME}_SERVICE_PORT
变量,其中丝氨酸副名是上层,破折号转换为下划线会给我IP地址。 (https://kubernetes.io/docs/concepts/services-networking/service/)
这个IP地址本地集群。它不在kubernets集群之外。 – sfgroups