服务找不到端点

时间:2019-02-13 21:53:06

标签: google-kubernetes-engine kubernetes-service

我正在尝试使用ServiceEndpoint资源将外部Postgres框映射到我的Kubernetes集群中,但是该服务未检测到端点。

terraform $ kubectl describe services postgres -n infrastructure
Name:              postgres
Namespace:         infrastructure
Labels:            <none>
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.222.4.128
Port:              postgres  5432/TCP
TargetPort:        5432/TCP
Endpoints:         
Session Affinity:  None
Events:            <none>

该服务和端点是通过以下方式创建的:

kind: Service
apiVersion: v1
metadata:
 name: postgres
 namespace: infrastructure
spec:
 type: ClusterIP
 ports:
 - port: 5432
   targetPort: 5432
----
kind: Endpoints
apiVersion: v1
metadata:
 name: postgres
 namespace: infrastructure
subsets:
 - addresses:
     - ip: "10.0.0.1"
   ports:
     - port: 5432

如果我使用实例的IP,但不能使用Kubernetes服务名称(postgres.infrastructure.svc.cluster.local.)

,则可以从运行中的容器连接到Postgres框

1 个答案:

答案 0 :(得分:0)

我只是直接复制了清单文件,然后将其应用到群集中,而没有任何运行的pod,并且得到了一个端点(与您的端点不同):

kubectl describe svc/postgres -n infrastructure
Name:              postgres
Namespace:         infrastructure
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                     {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"postgres","namespace":"infrastructure"},"spec":{"ports":[{"port":...
Selector:          <none>
Type:              ClusterIP
IP:                10.109.74.181
Port:              <unset>  5432/TCP
TargetPort:        5432/TCP
Endpoints:         10.0.0.1:5432
Session Affinity:  None
Events:            <none>

如果您上方的“端点”字段为空,则表示出了问题,也就无法通过主机名进行连接。

类似地,主机名查找在集群上的pod内进行

$ kubectl run --rm '--restart=Never' '--image-pull-policy=IfNotPresent' -i -t '--image=alpine' tmp-29399
# apk-add install --no-cache bind-tools
[output omitted]
# dig +short postgres.infrastructure.svc.cluster.local.
10.109.74.181

我怀疑您的服务有问题。您是否可以运行kubectl describe svc/postgres -n infrastructure(如果有的话,请查看最后的“事件”部分)以查看在serviceendpoint资源进行同步时是否存在任何问题。

还请指定您的运行位置。这是GKE吗?