Kubernetes v1.16
alpha
IPv4/IPv6 双协议栈能够将 IPv4 和 IPv6 地址分配给 PodsPod 是 Kubernetes 的原子对象。Pod 表示您的集群上一组正在运行的容器。 和 ServicesA way to expose an application running on a set of Pods as a network service. 。
如果你为 Kubernetes 集群启用了 IPv4/IPv6 双协议栈网络,则该集群将支持同时分配 IPv4 和 IPv6 地址。
在 Kubernetes 集群上启用 IPv4/IPv6 双协议栈可提供下面的功能:
为了使用 IPv4/IPv6 双栈的 Kubernetes 集群,需要满足以下先决条件:
要启用 IPv4/IPv6 双协议栈,为集群的相关组件启用 IPv6DualStack
特性门控,并且设置双协议栈的集群网络分配:
--feature-gates="IPv6DualStack=true"
--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
eg. --cluster-cidr=10.244.0.0/16,fc00::/24
--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>
--feature-gates="IPv6DualStack=true"
--proxy-mode=ipvs
--cluster-cidrs=<IPv4 CIDR>,<IPv6 CIDR>
--feature-gates="IPv6DualStack=true"
警告:如果命令行的
--cluster-cidr
指定大于 /24 的 IPv6 地址块,地址分配将失败。
如果你的集群启用了 IPv4/IPv6 双协议栈网络,则可以使用 IPv4 或 IPv6 地址来创建 ServicesA way to expose an application running on a set of Pods as a network service.
。你可以通过设置服务的 .spec.ipFamily
字段来选择服务的集群 IP 的地址族。你只能在创建新服务时设置该字段。.spec.ipFamily
字段的设置是可选的,并且仅当你计划在集群上启用 IPv4 和 IPv6 的 ServicesA way to expose an application running on a set of Pods as a network service.
和 IngressesIngress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。
。对于出口流量,该字段的配置不是必须的。
注意:集群的默认地址族是第一个服务集群 IP 范围的地址族,该地址范围通过 kube-controller-manager 上的
--service-cluster-ip-range
标志设置。
你可以设置 .spec.ipFamily
为:
IPv4
:API 服务器将从 service-cluster-ip-range
中分配 ipv4
地址IPv6
:API 服务器将从 service-cluster-ip-range
中分配 ipv6
地址以下服务规约不包含 ipFamily
字段。Kubernetes 将从最初配置的 service-cluster-ip-range
范围内分配一个 IP 地址(也称作“集群 IP”)给该服务。
service/networking/dual-stack-default-svc.yaml
|
---|
|
以下服务规约不包含 ipFamily
字段。Kubernetes 将从已配置的 service-cluster-ip-range
范围内分配一个 IPv6 地址(也称作“集群 IP”)给该服务。
service/networking/dual-stack-ipv6-svc.yaml
|
---|
|
为了进行比较,将从已配置的 service-cluster-ip-range
向该服务分配以下 IPV4 地址(也称为“集群 IP”)。
service/networking/dual-stack-ipv4-svc.yaml
|
---|
|
在支持启用了 IPv6 的外部服务均衡器的云驱动上,除了将 ipFamily
字段设置为 IPv6
,将 type
字段设置为 LoadBalancer
,为你的服务提供云负载均衡。
公共路由和非公共路由的 IPv6 地址块的使用是可以的。提供底层 CNI容器网络接口 (CNI) 插件是遵循 appc/CNI 协议的一类网络插件。 的提供程序可以实现这种传输。如果你拥有使用非公共路由 IPv6 地址的 Pod,并且希望该 Pod 到达集群外目的(比如,公共网络),你必须为出口流量和任何响应消息设置 IP 伪装。ip-masq-agent 可以感知双栈,所以你可以在双栈集群中使用 ip-masq-agent 来进行 IP 伪装。
EndpointSlice
特性门控启用,则双栈网络不起作用。此页是否对您有帮助?
感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问 Stack Overflow. 在 GitHub 仓库上登记新的问题 报告问题 或者 提出改进建议.