我在Services
集群中有以下GKE
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
currency-conversion NodePort 10.105.13.208 <none> 8100:30285/TCP 5h56m app=currency-conversion
currency-exchange LoadBalancer 10.105.6.251 34.72.191.147 8000:31396/TCP 5h59m app=currency-exchange
kubernetes ClusterIP 10.105.0.1 <none> 443/TCP 3d12h <none>
我在Nodes
中有以下GKE
:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
gke-my-first-cluster-1-default-pool-c2c915e7-818c Ready <none> 9h v1.17.6-gke.7 10.128.0.9 35.194.22.175 Container-Optimized OS from Google 4.19.112+ docker://19.3.6
gke-my-first-cluster-1-default-pool-c2c915e7-xg0r Ready <none> 9h v1.17.6-gke.7 10.128.0.8 104.197.190.232 Container-Optimized OS from Google 4.19.112+ docker://19.3.6
gke-my-first-cluster-1-default-pool-c2c915e7-z8fn Ready <none> 9h v1.17.6-gke.7 10.128.0.10 35.188.75.231 Container-Optimized OS from Google 4.19.112+ docker://19.3.6
当我尝试使用以下命令时:
curl http://35.194.22.175:30285/
我得到了Timeout error
。
答案 0 :(得分:1)
由于防火墙规则,您无法访问服务currency-conversion
。 默认情况下,VPC Firewall
将阻止您的请求。
要允许流量进入您的currency-conversion
服务,您可以:
$ curl NODE_IP:NODE_PORT)
:
$ gcloud compute firewall-rules create test-node-port --allow tcp:NODE_PORT
LoadBalancer
的服务,该服务将分配公共IP地址并创建转发规则以进行访问(您已经使用currency-exchange
完成了此服务):
$ kubectl expose deployment NAME --type=LoadBalancer --port=PORT-CONTAINER-IS-LISTENING-ON
您可以在此处阅读有关Kubernetes服务的更多信息:
GKE
免责声明!
$ gcloud compute firewall-rules create test-node-port --allow tcp:node-port
上述规则将允许流量流向默认网络中的 ALL 个实例。
对于更安全的方法,您可以使用以下规则:
$ gcloud compute --project=PROJECT_NAME firewall-rules create allow-nodeport --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:30285,udp:30285 --source-ranges=0.0.0.0/0 --target-tags=gke-gke-XYZ-ABC-node
重点关注上述命令的一部分:
--direction=INGRESS
-用于传入请求--network=default
-使用您的GKE
群集所在的网络的名称--rules=tcp:30285,udp:30285
-使用您的服务公开的端口号(30285)--source-ranges=0.0.0.0/0
-此参数将允许来自任何IP的流量--target-tags=gke-gke-XYZ-ABC-node
-使用network tag
集群节点中的GKE
。您可以进入network tag
来获得此GCP -> Compute Engine -> GKE-NODE -> VM Instance details -> network tags
。 您也可以在这里看看: