为什么我可以通过minikube中的ClusterIP访问Kubernetes部署的应用程序?

时间:2019-12-02 17:20:38

标签: kubernetes minikube

我已经使用NodeJS在docker容器中部署了一个简单的hello world服务器(其输出minikube

我分配了两项服务,即ClusterIPNodeportIP

当我在NodePortIP机器上卷曲host时,可以看到输出(即hello world

当我只是尝试从主机上curl的IP地址ClusterIP时,我仍然可以看到NodeJS服务器的输出,而没有任何错误。

这怎么可能?

我认为:

1。)ClusterIPs仅可通过群集本身访问,这意味着仅在使用curl后,我才能ClusterIPminikube ssh。但是,即使我从主机curl仍能看到输出。

2。)NodePortIps可以将应用程序公开到集群之外。但是到什么程度呢?来自其他地理区域的人也可以curl进入该IP并访问我的应用程序吗? 将应用程序暴露在集群之外意味着什么?

有人可以通过描述两个ClusterIPNodeportIP所指的暴露程度来帮助我吗?

1 个答案:

答案 0 :(得分:0)

这一切都取决于子网和路由。

通常,如果您可以访问容器,那么您要么与该容器位于同一网络中,要么在网络与管理流量的容器网络之间存在路由器或网桥。

因此,如果您的ClusterIP与本地主机位于同一网络中,或者存在将本地主机与群集网络连接的路由器或网桥网络,则可以使用ClusterIP访问容器。您正在运行minikube,所以我想其中之一是正确的。

在普通的k8s安装中,ClusterIP位于单独的子网中,并且没有将其连接到外部网络的网桥或路由,因此您无法使用ClusterIP访问容器。

NodePort将在所有主机上打开相同的端口,只要您可以通过主机所在的网络之一访问主机,就可以访问该服务。