Google compute engine 为什么可以';我不能通过其IP访问Kubernetes服务吗?

Google compute engine 为什么可以';我不能通过其IP访问Kubernetes服务吗?,google-compute-engine,kubernetes,google-kubernetes-engine,Google Compute Engine,Kubernetes,Google Kubernetes Engine,我在GKE上提供Kubernetes服务,如下所示: $ kubectl describe service staging Name: staging Namespace: default Labels: <none> Selector: app=jupiter Type: NodePort IP: 10.11.246.27 Port: <unnamed&g

我在GKE上提供Kubernetes服务,如下所示:

$ kubectl describe service staging
Name:           staging
Namespace:      default
Labels:         <none>
Selector:       app=jupiter
Type:           NodePort
IP:             10.11.246.27
Port:           <unnamed>   80/TCP
NodePort:       <unnamed>   31683/TCP
Endpoints:      10.8.0.33:1337
Session Affinity:   None
No events.
$kubectl描述服务转移
名称:登台
名称空间:默认值
标签:
选择器:app=jupiter
类型:节点端口
IP:10.11.246.27
端口:80/TCP
节点端口:31683/TCP
终点:10.8.0.33:1337
会话关联:无
没有事件。
我可以直接通过VM的一个端点(
10.8.0.21:1337
)或通过节点端口(
10.240.251.174:31683
)从VM访问服务。但是,如果我尝试访问
10.11.246.27:80
,我将一无所获。我还尝试了端口1337和31683


为什么我不能通过IP访问服务?我需要防火墙规则吗?

服务IP是由kube代理管理的虚拟IP。因此,为了使IP有意义,客户机还必须是kube代理“覆盖”网络的一部分(让kube代理运行,指向同一个apiserver)

GCE/GKE上的Pod IP由GCE管理,GCE更像是网络中所有虚拟机的“底层”

有几种方法可以从集群外部访问非公共服务。它们更为详细,但简而言之:

  • 为集群的服务创建堡垒GCE路由
  • 将群集的kube代理安装到您希望访问群集服务的任何位置