我已经使用NodeJS
在docker容器中部署了一个简单的hello world
服务器(其输出minikube
)
我分配了两项服务,即ClusterIP
和NodeportIP
。
当我在NodePortIP
机器上卷曲host
时,可以看到输出(即hello world
)
当我只是尝试从主机上curl
的IP地址ClusterIP
时,我仍然可以看到NodeJS
服务器的输出,而没有任何错误。
这怎么可能?
我认为:
1。)ClusterIPs
仅可通过群集本身访问,这意味着仅在使用curl
后,我才能ClusterIP
到minikube ssh
。但是,即使我从主机curl
仍能看到输出。
2。)NodePortIps
可以将应用程序公开到集群之外。但是到什么程度呢?来自其他地理区域的人也可以curl
进入该IP并访问我的应用程序吗? 将应用程序暴露在集群之外意味着什么?
有人可以通过描述两个ClusterIP
和NodeportIP
所指的暴露程度来帮助我吗?
答案 0 :(得分:0)
这一切都取决于子网和路由。
通常,如果您可以访问容器,那么您要么与该容器位于同一网络中,要么在网络与管理流量的容器网络之间存在路由器或网桥。
因此,如果您的ClusterIP与本地主机位于同一网络中,或者存在将本地主机与群集网络连接的路由器或网桥网络,则可以使用ClusterIP访问容器。您正在运行minikube,所以我想其中之一是正确的。
在普通的k8s安装中,ClusterIP位于单独的子网中,并且没有将其连接到外部网络的网桥或路由,因此您无法使用ClusterIP访问容器。
NodePort将在所有主机上打开相同的端口,只要您可以通过主机所在的网络之一访问主机,就可以访问该服务。