【发布时间】:2018-01-19 00:47:43
【问题描述】:
我正在尝试在 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 compute instances list”查看各个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>
我做错了什么?
【问题讨论】:
-
你在谷歌云防火墙中打开了9000端口吗?
-
将流量直接路由到 pod 违背了 k8s 中的一些设计原则。您想通过直接到达各个 pod 来达到什么目的?
标签: kubernetes google-kubernetes-engine