You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Kubernetes Engine中设置集群节点为私有?

解决GKE节点默认分配外部IP的问题

嘿,我之前也碰到过这个困惑——GKE默认给每个节点分配外部IP确实容易让人觉得集群暴露得太宽泛,尤其是像你说的,连Pod里的Mongo都能直接从家用电脑访问,这确实存在安全隐患。下面给你梳理两种靠谱的解决思路:

1. 创建不带外部IP的私有节点池

这是最直接的解决方案,创建新节点池时明确告诉GKE不要分配外部IP就行。用gcloud命令的话,加上--no-address参数即可:

gcloud container node-pools create private-node-pool \
  --cluster your-cluster-name \
  --zone your-cluster-zone \
  --no-address \
  --num-nodes 2
  • 划重点:这类节点只有内部IP,无法直接从公网访问,但GKE会通过Cloud NAT自动让节点具备访问公网的能力(比如拉取镜像),前提是你的VPC已经配置了NAT服务,没配置的话得先创建一个。
  • 如果要替换现有节点池,记得先把旧池里的Pod调度到新池,再删除旧节点池就好。

2. 改用私有集群(更彻底的网络隔离)

如果你的集群完全不需要公网直接访问节点,可以直接创建私有GKE集群。这种集群的所有节点默认只有内部IP,控制平面也仅在内部网络可见(你可以配置授权IP来访问控制平面,方便用kubectl管理)。创建命令示例:

gcloud container clusters create private-cluster \
  --zone your-cluster-zone \
  --private-cluster \
  --master-ipv4-cidr 172.16.0.0/28 \
  --enable-master-authorized-networks \
  --master-authorized-networks your-home-public-ip/32
  • 这里--master-authorized-networks用来指定能访问控制平面的IP,比如你家用电脑的公网IP,这样你依然能正常管理集群。

另外补充下:你能直接连接到Mongo的原因,大概率是Pod使用了节点端口(NodePort)或者配置了hostNetwork: true,再加上节点有外部IP,才让外部能直接打通。解决节点外部IP的问题后,这种直接访问的路径就会被切断;之后如果需要对外提供服务,建议用LoadBalancer或者Ingress,这才是Kubernetes推荐的安全服务暴露方式。

内容的提问来源于stack exchange,提问作者Ricardo Baptista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:27:12