2017-08-10 73 views
2

我想在Google容器引擎上部署多个相同的码头容器。我正在使用kubectl来遵循这里的说明:https://cloud.google.com/container-engine/docs/tutorials/hello-node谷歌容器引擎,直接访问豆荚

说明描述如何运行由负载平衡器管理的冗余服务,因此当我联系平衡器时,它会将我的请求发送到我的冗余Pod中的一个。在这种模式下,它可以正常工作。

但我需要以不同的方式做到这一点。我需要能够直接从客户端联系单个豆荚。所以我试图用--type = NodePort与我“kubectl揭露部署”命令:

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计算实例列表”中看到的外部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> 

我做错了什么?

+0

您是否在Google云端防火墙中打开了端口9000? –

+0

将流量直接路由到pod会破坏k8s中的一些设计原则。你想通过直接到达单个豆荚来实现什么目标? – danielepolencic

回答

1

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

正如Eric所建议的那样,您还需要在防火墙上打开端口30513

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