谷歌容器引擎,直接访问pods

时间:2017-08-10 16:45:02

标签: kubernetes google-kubernetes-engine

我正在尝试在Google Container Engine上部署多个相同的docker容器。我按照此处的说明使用kubectl:https://cloud.google.com/container-engine/docs/tutorials/hello-node

说明介绍了如何运行负载均衡器管理的冗余服务,因此当我联系平衡器时,它会将我的请求发送到我的一个冗余pod。在这种模式下,它工作正常。

但我需要以不同的方式做到这一点。我需要能够直接从客户端联系各个pod。所以我试图使用--type = NodePort和我的“kubectl expose deployment”命令:

mac-124307:hellonode ivm$ kubectl expose deployment hello-world --type=NodePort --port 9000 --target-port 9000
service "hello-world" exposed

mac-124307:hellonode ivm$ kubectl get service
NAME          CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-world   10.15.253.149   <nodes>       9000:30513/TCP   21m
kubernetes    10.15.240.1     <none>        443/TCP          46m

该命令没有抱怨,我可以使用“gcloud计算实例列表”查看各个pod的外部IP地址:

mac-124307:hellonode ivm$ gcloud compute instances list
NAME                                          ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
gke-hello-cluster-default-pool-402030b2-j60q  us-central1-a  n1-standard-1               10.128.0.3   104.197.72.212  RUNNING
gke-hello-cluster-default-pool-402030b2-q86r  us-central1-a  n1-standard-1               10.128.0.4   35.192.4.43     RUNNING
gke-hello-cluster-default-pool-402030b2-tf7t  us-central1-a  n1-standard-1               10.128.0.2   146.148.72.137  RUNNING

但是当我尝试在任何这些IP地址连接到端口9000时,我的连接超时。

mac-124307:hellonode ivm$ curl http://104.197.72.212:9000/
... <time-out>

我做错了什么?

1 个答案:

答案 0 :(得分:2)

请注意,分配的节点端口为30513。您正在使用9000,这是已分配的ClusterIP 10.15.253.149的端口。

您还需要在防火墙上打开端口30513,如Eric所示。

如果您只需要对此广告连播的一次性访问权限,您还可以使用kubectl port-forward name-of-a-hello-pod 9000将您工作站上的127.0.0.1:9000直接转发到广告连播。当然,只有kubect port-forward正在运行,这才有效。