提问人:Chandan Pasunoori 提问时间:10/30/2023 最后编辑:Chandan Pasunoori 更新时间:11/7/2023 访问量:195
在 GCP 中使用公共 ipv6 ip 对双堆栈 Kuberentes 服务进行外部访问,而无需负载均衡器
External access to dualstack Kuberentes service with public ipv6 ip without load balancer in GCP
问:
我在 Google Cloud 中创建了一个双栈 GKE 集群,使用 RequireDualStack 部署了一个示例 Nginx 部署和服务,并创建了一个防火墙规则以允许所有 IPv6 流量流向所有内容。::0/0
节点/Pod IP 范围:(公有/主范围)2600:1900:0:1::/64
服务 IP 范围:(Google 专用地址范围)。2600:2D00:0:4::0:0/64
如何从主范围而不是 Google 私有地址范围分配服务 ip,以便它可以在不使用 LoadBalancer/Ingress/Gateway/NodePort 的情况下从公共网络连接?
答:
请尝试以下故障排除步骤来访问集群外部的服务,这可能有助于解决您的问题:
确保群集运行及更高版本 (GA)。 仅包含 L4 DualStack 的预览版,其中不包括 IPv6 静态 IP、标准层网络、自定义 IPv6 子网。
GKE version 1.28
1.26+ GKE
请注意,不支持将 IPv6 作为 Pod 或节点的单栈 IPv6。
- 注意:对于 nodeport 服务,您可以使用 ClusterIP 地址(内部)和端口字段或节点 IP 地址(外部)和 nodePort 字段向 GKE 服务发送请求。每个节点外部 IP 地址都可用于访问服务。
使用以下命令检查防火墙规则是否正确配置:
gcloud alpha compute firewall-rules describe <firewall name\>
请注意,源范围与 subnetIpv6CidrBlock 相同。目标标签是 GKE 节点上的标签
使用以下命令验证是否已正确分配节点的 IPv6 地址,验证节点是否已正确分配 Pod 的 IPv6 地址:
kubectl get nodes <node-name\> -o go-template --template='{{range .status.addresses}}{{printf "%s: %s\\n" .type .address}}{{end}}'
kubectl get nodes <node-name\> -o go-template --template='{{range .spec.podCIDRs}}{{printf "%s\\n" .}}{{end}}'
如果上述步骤无法解决您的问题,请尝试使用服务类型 loadbalancer。
附上故障排除文档以供参考。
评论
NODE\_IP\_ADDRESS:NODE\_PORT
评论