我正在尝试在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>
我做错了什么?
答案 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
正在运行,这才有效。