K8s Ingress从v1beta1升级v1报serviceName字段不存在错误如何解决
Kubernetes Ingress v1beta1升级到v1版本配置调整方案
报错是因为networking.k8s.io/v1版本的Ingress对路径后端的字段结构做了不兼容变更,废弃了原backend下的serviceName、servicePort字段,同时新增必填的pathType字段。
修改后的完整配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600" kubernetes.io/tls-acme: "true" cert-manager.io/cluster-issuer: "example-issuer" spec: rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: name: http tls: - secretName: example-tls-cert hosts: - example.com
核心调整点说明:
- 后端服务字段重构:原
backend.serviceName、backend.servicePort被移除,替换为嵌套的backend.service结构,服务名对应service.name字段,服务端口对应service.port字段,端口为字符串命名则用name属性,为数字端口则用number属性。 - 新增必填
pathType字段,可选值有三类:Prefix:前缀路径匹配,适配绝大多数常规路由场景Exact:完全精确匹配路径ImplementationSpecific:匹配逻辑由你使用的Ingress Controller自行定义
内容的提问来源于stack exchange,提问作者Parnit Das
相关产品推荐
相关产品推荐

