Kubernetes 升級后 ingress api 變化帶來的問題


將 k8s 從 1.17.0 升級到 1.22.3 之后部署 ingress 時報錯

error: unable to recognize "cnblogs-ingress.yaml": no matches for kind "Ingress" in version "extensions/v1beta1"

原來從 1.19 開始 ingress api 版本變成了 networking.k8s.io/v1,詳見 https://github.com/kubernetes/kubernetes/issues/90077

改為 networking.k8s.io/v1 后出現新的報錯

missing required field "pathType" in io.k8s.api.networking.v1.HTTPIngressPath

我們添加的 ingress 規則多數是基於域名的,之前正常使用的配置如下

rules:
- host: q.cnblogs.com
  http:
    paths:
      - backend:
          serviceName: q-web
          servicePort: 80

而 v1 版必須要指定 pathpathType,需要改成下面這樣

rules:
- host: q.cnblogs.com
  http:
    paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: q-web
          servicePort: 80

我們添加了很多這樣的規則,幸好可以通過替換的方式一次修改,不然還挺麻煩,將 - backend: 替換為

- path: /
          pathType: Prefix
          backend:

解決上面的問題后部署又出現新的報錯

unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend
unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend

要將

backend:
  serviceName: q-web
  servicePort: 80

改為

backend:
  service:
    name: q-web
    port: 
      number: 80

繼續通過替換進行批量修改,將 serviceName: 替換為

service:
              name:

servicePort: 替換為

  port: 
                number:

后來發現還需要在 spec 中添加 ingressClassName: nginx,不然 ingress 規則不會被添加到 nginx.conf 中。

apiVersion: networking.k8s.io/v1 
kind: Ingress
metadata:
  name: cnblogs-ingress
spec:
  ingressClassName: nginx 
  rules:
  - host: q.cnblogs.com
    http:
      paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: q-web
              port: 
                number: 80

搞定!

ingress.networking.k8s.io/cnblogs-ingress configured

補充:另外需要在 nginx-ingress 部署配置中

  • rbac.authorization.k8s.io/v1beta1 改為 rbac.authorization.k8s.io/v1
  • image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0 改為 image: docker.io/bitnami/nginx-ingress-controller:latest


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM