如何使用群集ip连接到数据库服务

kar*_*ina 3 kubernetes kubernetes-helm

这可能是一个非常基本的问题,但我找不到任何地方,因此我深表歉意。

我已经在Google Kubernetes Engine上使用Helm安装了postresql

$ helm install --name staging stable/postgresql
Run Code Online (Sandbox Code Playgroud)

我的部署:

$ kubectl get deployments
NAME                 DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
staging-backend      7         7         7            0           3h
staging-postgresql   1         1         1            0           3h
Run Code Online (Sandbox Code Playgroud)

我的服务:

$ kubectl get services
NAME                 TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
staging-postgresql   ClusterIP   xx.x.xxx.xx   <none>        5432/TCP   3h
Run Code Online (Sandbox Code Playgroud)

我尝试使用群集IP 进行连接staging-backendstaging-postgresql但似乎不起作用。还是我应该使用外部IP。在哪里可以找到外部IP。

谢谢你..

小智 6

在Kubernetes中,您有两个选择来找到服务的IP。

  1. 环境变量

Kubernetes会自动生成环境变量以及访问服务所需的所有数据。如果env在Pod中运行命令,则应该看到类似以下的输出:

KUBERNETES_SERVICE_PORT=443
STAGING_POSTGRESQL_SERVICE_HOST=10.0.162.149
KUBERNETES_SERVICE_HOST=10.0.0.1
STAGING_POSTGRESQL_SERVICE_PORT=5432
KUBERNETES_SERVICE_PORT_HTTPS=443
Run Code Online (Sandbox Code Playgroud)

STAGING_POSTGRESQL_SERVICE_HOST在您的应用中使用环境变量来获取服务IP。

  1. DNS(首选)

Kubernetes自动为所有服务分配DNS名称。使用您的服务名称代替IP,它将解析为服务IP。

例如,ping staging-postgresql在任何吊舱内运行。

您可以在此处阅读有关使用服务的更多信息。