website/content/zh-cn/docs/tasks/network/reconfigure-default-service...

12 KiB
Raw Permalink Blame History

min-kubernetes-server-version title content_type
v1.33 重新配置 Kubernetes 默认的 Service CIDR task

{{< feature-state feature_gate_name="MultiCIDRServiceAllocator" >}}

本文介绍如何重新配置集群中分配的默认 Service IP 范围。

{{% heading "prerequisites" %}}

{{< include "task-tutorial-prereqs.md" >}}

{{< version-check >}}

重新配置 Kubernetes 默认 Service CIDR

本文解释了如何管理 Kubernetes 集群中的 Service IP 地址范围,这也会影响集群针对不同 Service 所支持的 IP 协议族。

可用于 Service ClusterIP 的 IP 协议族由传递给 kube-apiserver 的 --service-cluster-ip-range 参数决定。要更好地了解 Service IP 地址分配,请参考 Service IP 地址分配追踪文档。

自 Kubernetes 1.33 起,为集群所配置的 Service IP 协议族会通过名为 kubernetesServiceCIDR 对象反映。 这个 kubernetes ServiceCIDR 对象由依据其配置的 --service-cluster-ip-range 参数所启动的第一个 kube-apiserver 实例创建。为了确保集群行为一致,所有 kube-apiserver 实例必须使用相同的 --service-cluster-ip-range 配置,其取值需与默认的 kubernetes ServiceCIDR 对象保持一致。

Kubernetes Service CIDR 重新配置类别

我们可以将 Service CIDR 的重新配置分为以下几种情形:

  • 扩展现有的 Service CIDR 这可以通过添加新的 ServiceCIDR 对象动态完成,无需重新配置 kube-apiserver。 请参考扩展 Service IP 范围的专门文档。
  • 保留主 Service CIDR 的单栈到双栈转换: 这意味着引入次要 IP 协议族IPv6 到仅 IPv4 集群,或 IPv4 到仅 IPv6 集群), 同时保留原 IP 协议族作为主协议族。 这需要更新 kube-apiserver 配置,并相应修改需要处理这个附加 IP 协议族的各个集群组件。 这些组件包括但不限于 kube-proxy、CNI 或网络插件、服务网格实现和 DNS 服务。
  • 保留主 Service CIDR 的双栈到单栈转换: 这意味着从双栈集群中移除次要 IP 协议族,恢复为单一 IP 协议族,同时保留原主 IP 协议族。 除了重新配置这些组件以匹配新的 IP 协议族外,你还可能需要处理那些显式使用被移除 IP 协议族的 Service。

替换默认 Service CIDR 的手动操作

重新配置默认 Service CIDR 需要集群运维人员、管理员或管理集群生命周期的软件执行一系列手动步骤。 这些通常包括:

  1. 更新 kube-apiserver 配置: 使用新的 IP 范围修改 --service-cluster-ip-range 参数。
  1. 重新配置网络组件:这一步至关重要,具体步骤取决于正在使用的联网组件。 这可能包括更新配置文件、重启代理 Pod或更新组件以处理新的 Service CIDR 和期望的 Pod IP 协议族配置。 典型组件可以是 Kubernetes Service例如 kube-proxy的实现、 所配置的网络插件以及服务网格控制器和 DNS 服务器等潜在的其他联网组件, 以确保它们能够正确处理流量并使用新的 IP 协议族配置来执行服务发现。
  1. 管理现有 Service 如果某些 Service 所使用的 IP 不在新配置的范围内,则需处理这些服务。 你可以选择重新创建(会造成停机并重新分配 IP或者采取更复杂的重新配置策略。
  2. 重新创建 Kubernetes 内部服务: 如果主 IP 协议族发生变化,或者被替换为另一个不同的网络, 则必须删除并重新创建 kubernetes.default Service以便从新的 Service CIDR 获取 IP 地址。

示例重新配置步骤

以下步骤描述了受控的重新配置过程,重点是完全替换默认 Service CIDR 并重新创建 kubernetes.default Service

  1. 使用初始的 --service-cluster-ip-range 启动 kube-apiserver。
  2. 创建初始 Service使其从该范围获取 IP。
  3. 引入新的 Service CIDR作为重新配置的临时目标。
  4. 将默认的 kubernetes Service CIDR 标记为删除(由于存在 IP 和 Finalizer会处于 Pending 状态)。 这将阻止从旧的范围分配新的 IP。
  1. 重新创建现有 Service。这些 Service 应从新的临时 Service CIDR 分配 IP。
  2. 使用配置的新 Service CIDR 重新启动 kube-apiserver并关闭旧实例。
  3. 删除 kubernetes.default Service。新的 kube-apiserver 将在新的 Service CIDR 范围内重新创建此 Service。

{{% heading "whatsnext" %}}