如何获取kubernetes GPC输出IP

时间:2019-07-31 21:45:28

标签: kubernetes google-cloud-platform ip

我在Google云中有kubernetes集群。

我有一个外部数据库,我需要在数据库中设置受信任的IP范围。

我的问题是,我不知道我的kubernetes传出的IP是什么。

在哪里可以找到它?

2 个答案:

答案 0 :(得分:0)

我认为您正在发现来自kubernetes的传出数据包的源IP被外部数据库信任。

  1. 当传出数据包为source NAT'ed时,源IP通常是节点的IP。
  2. 有一种方法可以通过使用服务清单中的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关于映射外部服务的文章。