This is a stable feature in Kubernetes, and has been since version 1.33. It was first available in the v1.27 release.
本文介绍如何重新配置集群中分配的默认 Service IP 范围。
你必须拥有一个 Kubernetes 的集群,且必须配置 kubectl 命令行工具让其与你的集群通信。 建议运行本教程的集群至少有两个节点,且这两个节点不能作为控制平面主机。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面的 Kubernetes 练习环境之一:
你的 Kubernetes 服务器版本必须不低于版本 v1.33.要获知版本信息,请输入 kubectl version.
本文解释了如何管理 Kubernetes 集群中的 Service IP 地址范围,这也会影响集群针对不同 Service 所支持的 IP 协议族。
可用于 Service ClusterIP 的 IP 协议族由传递给 kube-apiserver 的 --service-cluster-ip-range
参数决定。要更好地了解 Service IP 地址分配,请参考
Service IP 地址分配追踪文档。
自 Kubernetes 1.33 起,为集群所配置的 Service IP 协议族会通过名为 kubernetes 的 ServiceCIDR 对象反映。
Kubernetes 的 ServiceCIDR 由第一个启动的 kube-apiserver 实例根据其 --service-cluster-ip-range
参数配置创建。为了确保集群行为一致,所有 kube-apiserver 实例必须使用相同的
--service-cluster-ip-range 配置,其取值需与默认的 kubernetes ServiceCIDR 对象保持一致。
我们可以将 ServiceCIDR 的重新配置分为以下几种情形:
kubernetes.default Service。
如果主 IP 协议族也发生变化,则更为复杂,可能需要修改多个集群组件(如 kubelet、网络插件等)
以匹配新的主 IP 协议族。重新配置默认 ServiceCIDR 需要集群运维人员、管理员或管理集群生命周期的软件执行一系列手动步骤。 这些通常包括:
--service-cluster-ip-range 参数。kubernetes.default Service,以便从新的 Service CIDR 获取 IP 地址。以下步骤描述了受控的重新配置过程,重点是完全替换默认 ServiceCIDR 并重新创建 kubernetes.default Service:
--service-cluster-ip-range 启动 kube-apiserver。kubernetes ServiceCIDR 标记为删除(由于存在 IP 和 Finalizer,会处于 Pending 状态)。
这将阻止从旧的范围分配新的 IP。kubernetes.default Service。新的 kube-apiserver 将在新的
ServiceCIDR 范围内重新创建此 Service。