我注意到集群中的每个节点都有一个分配给它的外部 IP。这似乎是 Google Kubernetes Engine 的默认行为。
我认为集群中的节点应该只能从本地网络访问(通过其虚拟 IP),但我什至可以通过连接到其托管节点(不使用负载均衡器)。
我试图通过更改集群实例模板设置(将属性“External IP”从“Ephemeral”更改为“None”)使容器引擎不为新创建的节点分配外部 IP。但是在我这样做之后,GCE 无法启动任何 pod(出现“没有最低可用性”错误)。新实例甚至没有显示在我的集群中的节点列表中。
切换回具有外部 IP 的默认实例模板后,一切又恢复正常。因此,出于某种原因,Google Kubernetes Engine 似乎要求集群节点是公开的。
您能解释一下为什么会这样吗?是否有办法防止 GKE 将集群节点暴露在互联网上?我应该设置防火墙吗?我应该使用什么规则(因为节点是动态创建的)?
我认为谷歌不允许私有节点是一个安全问题......假设有人在数据库管理系统上发现了一个安全漏洞。如果我们的数据库节点没有暴露在 Internet 上,我们会更愿意修复它(应用补丁、升级版本)。