我的Pod应该通过ExternalIP访问另一个LoadBalancer服务时,情况非常特殊。
是否可以将LoadBalancer ExternalIP作为ENV变量分配给Deployment.yaml?
提前谢谢!
答案 0 :(得分:1)
我认为这在任何标准模板工具中都不是直接可行的。问题的一部分是,创建云托管的负载均衡器是异步操作,因此,外部IP值要等到kubectl apply
(或等效的helm install
)完成之后的一段时间才能使用
如果可以提前创建服务,则可以将其外部IP地址或主机名硬编码为其他配置,但这本质上是两个步骤。 (如果您购买了Kubernetes运营商,那么应该可以使用自定义代码:监视服务,并在获得其外部地址后,创建一个保存该地址的相应ConfigMap。)
根据您的特定用例,也可以将集群中的LoadBalancer服务作为目标,就像其他任何服务一样。这不会在云提供商的负载均衡器层中解决,但应该否则无法区分。
答案 1 :(得分:0)
我找到了方法,但是@David Maze完全正确-没有直接方法。
因此,我的解决方案是添加具有公共区域和私有区域的DNS:
apiVersion: v1
kind: Service
metadata:
name: nginx-lb
labels:
app.kubernetes.io/name: nginx-lb
annotations:
external-dns.alpha.kubernetes.io/hostname: mycoolservice.{{ .Values.dns_external_zone }}.
external-dns.alpha.kubernetes.io/zone-type: public,private
external-dns.alpha.kubernetes.io/ttl: "1"
spec:
type: LoadBalancer
ports:
- name: https
port: 443
targetPort: https
- name: http
port: 80
targetPort: http
selector:
app.kubernetes.io/name: nginx