• 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
  • 相关阅读:
    当最好的朋友背叛你的时候
    那就这样沉沦??
    Struts初步知识JSP实例学习教程
    结合struts和hibernate谈J2EE架构的数据表示
    创建 Controller
    对话:关于架构、设计与需求
    Struts 应用转移到 Struts 2 一
    Struts 应用转移到 Struts 2 二
    出现空白网页可能的原因
    jsp常用功能模块JSP实例学习教程
  • 原文地址:https://www.cnblogs.com/dudu/p/15548461.html
Copyright © 2020-2023  润新知