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

GCP中无需负载均衡器,为双栈Kubernetes服务分配公网IPv6实现外部访问

让GKE双栈集群Service使用公网主网段IP的实现方法

要让GKE双栈集群的Service直接使用你指定的公网主网段(而非谷歌私有服务段),核心是在集群创建阶段自定义IPv6服务网段,因为集群创建后无法修改服务IP段配置。以下是具体步骤:

1. 规划自定义服务IPv6子网

从你的主网段2600:1900:0:1::/64中划出一个独立的子网分配给Service使用,要求:

  • 子网不能和Pod/节点的IP段重叠
  • 满足GKE对IPv6服务段的大小要求:至少/112(每个Service需要一个/128地址),最大/64
  • 示例:可以划出2600:1900:0:1:1::/112作为服务网段

2. 创建带自定义IPv6服务段的双栈GKE集群

使用gcloud命令创建集群时,明确指定Pod的IPv6段和自定义的服务IPv6段,同时开启IP别名和双栈支持:

gcloud container clusters create your-cluster-name \
  --network=your-vpc-name \
  --subnetwork=your-subnet-name \
  --enable-ipv6 \
  --cluster-ipv6-cidr=2600:1900:0:1::/64 \
  --services-ipv6-cidr=2600:1900:0:1:1::/112 \
  --enable-ip-alias \
  --release-channel=stable

注意:现有集群无法修改服务IP段,必须重新创建集群。

3. 部署并验证Service的IP分配

部署带RequireDualStack的Nginx Service后,通过以下命令检查Service的IPv6地址是否来自你指定的主网段子网:

kubectl get svc nginx-service -o wide

输出中IPs列的IPv6地址应落在2600:1900:0:1:1::/112范围内。

4. 配置防火墙规则确保公网访问

除了已有的允许::0/0的IPv6流量规则,还需添加针对自定义服务网段的流量放行规则(以80端口为例):

gcloud compute firewall-rules create allow-service-ipv6-public \
  --network=your-vpc-name \
  --allow=tcp:80 \
  --source-ranges=::0/0 \
  --destination-ranges=2600:1900:0:1:1::/112

同时确保你的VPC子网已开启IPv6公网路由能力,节点的IPv6地址是公网可路由的。

5. 直接访问Service的IPv6地址

此时Service的IPv6地址属于公网主网段,且防火墙规则已放行流量,你可以直接通过该IPv6地址从公网访问Nginx服务,无需依赖LoadBalancer、Ingress、Gateway或NodePort组件。


内容的提问来源于stack exchange,提问作者Chandan Pasunoori

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:48:13