我在Google云中有kubernetes集群。
我有一个外部数据库,我需要在数据库中设置受信任的IP范围。
我的问题是,我不知道我的kubernetes传出的IP是什么。
在哪里可以找到它?
答案 0 :(得分:0)
我认为您正在发现来自kubernetes的传出数据包的源IP被外部数据库信任。
有一种方法可以通过使用服务清单中的service.spec.externalTrafficPolicy
字段来preserve source IP address,而不进行源NAT。请注意,这可能会导致流量分散不平衡。
"externalTrafficPolicy": "Local"
由于以下错误,注释"externalTrafficPolicy": "Local"
在早期的k8s版本中的NodePort
服务类型存在问题:
答案 1 :(得分:0)
如果要从外部连接到群集,则必须创建Service
。创建它后,您将自动收到External-IP
地址,可用于从外部连接到群集。您可以检查here如何创建service
。
如果您需要多个IP地址,也可以创建endpoints
(取决于您的需要)。
稍后,您只需要执行kubectl get service -o wide
。您将收到如下输出:
$ kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
connection-to-my-db LoadBalancer 10.0.3.84 34.76.XXX.148 8080:32165/TCP 84s run=nginx
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 17d <none>
但是,对于该服务中的External-IP
来说,它将处于状态。您只需要等待1-2分钟即可收到它。
在使用GCP时,您可以阅读this关于映射外部服务的文章。