我们即将开始在我们自己的数据中心的裸机上建立一个新的 kubernetes 集群。k8s 模块和服务的文档很棒,但是我找不到任何关于满足我们要求所需组件的全面顶视图文档:
Pod 需要可通过 IPv4 和 IPv6 访问 Pod 需要能够在主机之间移动,并且仍然可以通过两种协议访问 Pod 需要通过 IPv4 和 IPv6 访问外部资源 我知道可以使用 MetalLb 进行入口流量管理。但是,当 pod 尝试访问外部 v4/v6 资源时,这是否也有效?
总体而言,要满足这些要求需要什么?
我们即将开始在我们自己的数据中心的裸机上建立一个新的 kubernetes 集群。k8s 模块和服务的文档很棒,但是我找不到任何关于满足我们要求所需组件的全面顶视图文档:
Pod 需要可通过 IPv4 和 IPv6 访问 Pod 需要能够在主机之间移动,并且仍然可以通过两种协议访问 Pod 需要通过 IPv4 和 IPv6 访问外部资源 我知道可以使用 MetalLb 进行入口流量管理。但是,当 pod 尝试访问外部 v4/v6 资源时,这是否也有效?
总体而言,要满足这些要求需要什么?
我使用 Kubernetes 1.21 和 Calico 在我的 BGP 路由器/防火墙 (Juniper SRX) 后面进行网络连接以实现外部连接。Calico 可以与 metallb 结合使用,其中 metallb 负责编排,Calico 负责 BGP 路由。有关详细信息,请参阅https://docs.projectcalico.org/networking/advertise-service-ips#advertise-service-load-balancer-ip-addresses 。
为入口添加 nginx,为证书添加 cert-manager,您应该拥有所需的一切。
我确实注意到负载均衡器不处理双堆栈,但您可以通过创建两个单独的堆栈轻松解决这个问题:一个单堆栈 IPv6 和一个单堆栈 IPv4。
我正在使用带有 Calico 的 Kubernetes 1.21 和没有 metalb 的 BGP。
使用 traefik 作为入口,使用 cert-manager 作为证书。
Traefik 负载均衡器确实支持双栈,至少没有 metalb,但需要您将
ipFamilyPolicy
服务设置为PreferDualStack
,并使用 IPv6 cidr 配置服务 cidr(默认情况下应该在 kubeadm v1.21+ 上完成)。我必须使用 RequireDualStack 和 k3s 才能接受 IPv6 连接。https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services https://kubernetes.io/docs/tasks/network/validate-dual-stack/