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

如何将已部署Ingress的apiVersion从extensions/v1beta1升级至networking.k8s.io/v1?

解决Ingress从extensions/v1beta1升级到networking.k8s.io/v1的配置问题

嘿,我来帮你搞定这个Ingress版本升级的问题!你遇到的验证错误并不是serviceName和servicePort本身写法错了——而是networking.k8s.io/v1版本的Ingress对后端服务的配置格式做了彻底调整,旧的字段已经不被支持了。

错误原因解析

从Kubernetes 1.19开始正式推荐使用networking.k8s.io/v1的Ingress API,这个版本和旧的extensions/v1beta1相比,最大的变化之一就是后端服务的定义方式:

  • 旧版本直接用serviceName和servicePort字段
  • 新版本要求把后端服务嵌套在service字段下,并且port需要明确指定是number(端口号)还是name(端口名称)

正确的配置片段

把你当前YAML里的paths部分改成下面这样:

spec:
  rules:
  - host: your-hostname-here  # 替换成你的实际域名
    http:
      paths:
      - backend:
          service:
            name: location  # 对应原来的serviceName
            port:
              number: 80  # 对应原来的servicePort,这里用number指定端口号
        path: /
        pathType: ImplementationSpecific

如果你的服务端口是用名称定义的(比如在Service里给端口起了名字),也可以用name来指定:

port:
  name: http-port  # 替换成你Service里的端口名称

操作步骤建议

  • 先导出当前Ingress的配置到本地文件:
    kubectl get ingress current-ingress -o yaml > ingress.yaml
    
  • 在本地文件里修改apiVersion为networking.k8s.io/v1,同时按照上面的格式调整后端服务配置
  • 验证配置是否正确:
    kubectl apply --dry-run=client -f ingress.yaml
    
  • 确认没问题后再应用到集群:
    kubectl apply -f ingress.yaml
    

或者你也可以直接用kubectl edit ingress current-ingress,修改后保存即可——这次应该不会再出现验证错误了。

额外说明

你的集群Server版本是v1.19.9,完全支持networking.k8s.io/v1的Ingress API,所以不用担心版本兼容性问题。另外,pathType字段是v1版本要求的必填项,你已经设置了ImplementationSpecific,这个是没问题的(如果是匹配所有路径,也可以用Prefix或者Exact,根据你的需求调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:32:48