k8s-Postgres服务的IP和DNS

时间:2019-03-06 00:52:41

标签: kubernetes aws-eks eks

我创建了有状态服务,该服务由使用k8s的postgres部署支持。

设置为3个公共子网| AZ和3个私有子网| AZ。已进行postgres部署以使用clusterIP: none

创建1个副本和服务

但是现在每次我删除服务并再次创建时,IP都在变化,我正在阅读有关DNS解析的信息。我想从Java客户端访问数据库,以在n / w上部署另一个pod;在这里,我无法获得静态IP。

我可以使用clusterIP: #some_IP_from_one_of_the_subnet_range#创建服务吗?如果服务中断并重新生成k8s会发生什么?它将在相同的可用区和子网中启动吗?如果AZ下降怎么办?

1 个答案:

答案 0 :(得分:1)

我转载了您报告的问题。我创建了一个postgres集群,还为该集群创建了K8S服务。

集群看起来像

root@k8-master:~# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
kibana                      1/1     Running   0          9s
postgres-59bcb7c9d4-lvg8v   1/1     Running   0          56m
postgres-59bcb7c9d4-rfppm   1/1     Running   0          56m
postgres-59bcb7c9d4-s9zc4   1/1     Running   0          56m

创建集群和服务后

该服务提供了一个服务名称,该名称也可以通过k8s DNS解析转换为IP地址。

因此我们不需要为postgres集群使用静态IP地址,因为postgres k8s服务将帮助您连接到集群容器。 为了证明我已经通过使用服务名称而不是IP地址发送了curl请求。

root@k8-master:~# kubectl exec -it kibana /bin/bash
bash-4.2$ curl http://postgres:5432
curl: (52) Empty reply from server
bash-4.2$ exit

为postgres创建群集时,请确保将端点连接到您的群集容器之一。看起来应该是这样,

root@k8-master:~# kubectl describe services postgres
Name:                     postgres
Namespace:                default
Labels:                   app=postgres
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"postgres"},"name":"postgres","namespace":"default"},"spe...
Selector:                 app=postgres
Type:                     NodePort
IP:                       10.97.201.134
Port:                     <unset>  5432/TCP
TargetPort:               5432/TCP
NodePort:                 <unset>  30362/TCP
Endpoints:                10.244.1.12:5432,10.244.1.13:5432,10.244.2.242:5432
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

在上面的示例中,端点被分配给10.244.1.12等。如果该字段为空,则对postgres服务的访问将不会产生任何结果。

另一种说法是,服务仅将请求重定向到集群。如果群集无法识别服务,则无法通过Java访问。

希望这会有所帮助。