无法访问Google Cloud上公开的外部IP的Kubernetes Pod

时间:2018-10-06 16:57:22

标签: kubernetes google-cloud-platform google-kubernetes-engine

我已经创建了一个示例node.js应用程序和其他必需文件(deployment.yml,service.yml),但是我无法访问该服务的外部IP。

#kubectl get services

    NAME         TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)          AGE
    kubernetes   ClusterIP      10.7.240.1    <none>           443/TCP          23h
    node-api     LoadBalancer   10.7.254.32   35.193.227.250   8000:30164/TCP   4m37s

#kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
node-api-6b9c8b4479-nclgl   1/1     Running   0          5m55s

#kubectl describe svc node-api
Name:                     node-api
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=node-api
Type:                     LoadBalancer
IP:                       10.7.254.32
LoadBalancer Ingress:     35.193.227.250
Port:                     <unset>  8000/TCP
TargetPort:               8000/TCP
NodePort:                 <unset>  30164/TCP
Endpoints:                10.4.0.12:8000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age    From                Message
  ----    ------                ----   ----                -------
  Normal  EnsuringLoadBalancer  6m19s  service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   5m25s  service-controller  Ensured load balancer

当我尝试在外部ip上卷曲时,它会拒绝连接

curl 35.193.227.250:8000
curl: (7) Failed to connect to 35.193.227.250 port 8000: Connection refused

我也在Dockerfile中公开了端口8000。让我知道我是否想念任何东西。

1 个答案:

答案 0 :(得分:1)

看看您对此线程的描述,似乎一切都很好。 您可以尝试以下方法:

  1. SSH到运行Pod的GKE节点。您可以通过运行与“ -o wide”标志相同的命令来获取节点名称。

    $ kubectl获得豆荚-o宽

在执行SSH之后,尝试对Cluster和Service IP进行卷曲,以查看是否得到响应。

  1. 尝试通过SSH到Pod

    $ kubectl exec -it-/ bin / bash

之后,运行本地主机以查看是否得到响应

$ curl localhost

因此,如果您尝试上述故障排除步骤后得到响应,则可能是GKE潜在的问题。您可以提交缺陷报告here

如果在尝试上述步骤时未得到任何响应,则可能是您在某个地方配置了错误的集群。

在我看来,这是对您的用例进行故障诊断的一个很好的起点。