You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s配置service-cluster-ip-range后获取的ClusterIP与设置网段不符问题咨询

K8s集群配置service-cluster-ip-range后出现非指定网段ClusterIP问题处理

问题现象

集群已配置启动参数service-cluster-ip-range=10.96.0.0/12,实际运行中部分Service分配的ClusterIP不属于该网段,相关现象截图如下:
问题截图1
问题截图2

常见根因

  • 控制面组件配置不统一:多master节点集群中,部分节点的kube-apiserver或kube-controller-manager的service-cluster-ip-range参数未对齐,比如某台kube-controller-manager还在使用旧网段配置,IP分配时就会生成跨网段地址
  • 历史Service未重建:修改service-cluster-ip-range配置前已经创建的Service,不会自动更新ClusterIP,会一直保留创建时分配的旧网段地址;如果创建Service时手动指定了非当前网段的ClusterIP,也会出现这类现象
  • CNI插件网段配置冲突:Calico、Flannel这类CNI插件自身也需要配置Service CIDR,如果插件侧配置的网段和apiserver不一致,插件做Service转发、IP分配时会按自身配置生成非预期网段的地址
  • 多Service CIDR特性影响:K8s 1.29及以上版本正式支持多Service CIDR,如果集群中创建了除10.96.0.0/12之外的ServiceCIDR资源,IPAM会从额外CIDR中分配地址
  • etcd残留旧分配记录:修改网段配置时没有清理etcd中旧的IP分配记录,IPAM模块初始化时会加载旧的残留数据,分配旧网段的可用IP

排查步骤

  1. 校验所有控制面组件参数一致性
    逐台登录master节点,检查kube-apiserver、kube-controller-manager的启动参数,确认所有实例的service-cluster-ip-range值完全相同:
    # 查询kube-apiserver的service网段配置
    ps aux | grep kube-apiserver | grep service-cluster-ip-range
    # 查询kube-controller-manager的service网段配置
    ps aux | grep kube-controller-manager | grep service-cluster-ip-range
    
    kubeadm部署的集群还要同步检查/etc/kubernetes/manifests/下两个组件的静态Pod yaml文件,避免配置文件和运行参数不一致。
  2. 定位异常Service属性
    拿到非10.96.0.0/12网段的Service名称和所属命名空间,导出其完整配置,确认创建时间、是否手动指定ClusterIP:
    kubectl get svc <异常服务名> -n <所属命名空间> -o yaml
    
    对比metadata.creationTimestamp和当前service-cluster-ip-range配置的生效时间,确认是否为配置变更前创建的历史资源;同时查看spec.clusterIP字段是否为手动填写的固定值。
  3. 校验CNI插件配置
    根据集群使用的CNI类型检查对应配置:
    • Calico:检查IPPool资源、Calico felix配置中service_cluster_ip_range字段值是否和集群配置一致
    • Flannel:检查kube-flannel-cfg ConfigMap中的ServiceCIDR配置项是否匹配
  4. 检查多CIDR配置(仅1.29+版本需要)
    执行以下命令查看集群是否存在额外的Service CIDR资源:
    kubectl get servicecidrs
    
  5. 检查etcd残留数据
    备份etcd后,查看/registry/services/specs、/registry/clusteripranges路径下的存储数据,确认是否存在旧网段的IP分配残留记录。

修复方案

  • 统一控制面配置:逐台修正所有master节点上kube-apiserver、kube-controller-manager的service-cluster-ip-range参数,保证所有实例配置完全一致,修改后重启对应组件,确认参数加载生效
  • 处理历史Service:无固定IP需求的异常Service直接删除后重建,会自动分配当前网段的ClusterIP;有固定IP需求的核心Service,提前评估业务影响后,将spec.clusterIP修改为当前网段内的未占用IP
  • 对齐CNI配置:修改CNI插件的Service CIDR配置,和集群service-cluster-ip-range参数保持一致,重启CNI相关Pod确保配置加载
  • 清理多余CIDR资源:如果是多Service CIDR特性误配置导致的问题,删除非预期的ServiceCIDR资源即可
  • 清理etcd残留:确认残留数据为无效旧记录后,在etcd备份完成的前提下删除旧网段的IP分配记录,重启控制面组件让IPAM重新初始化IP池

内容的提问来源于stack exchange,提问作者yanzhiluo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:37:29