zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    LOJ3160 「NOI2019」斗主地
    常系数齐次线性递推
    最小树形图——朱刘算法学习小记
    Linux系统分区(一)
    Linux系统启动过程(二)
    Linux系统目录结构(三)
    cross_val_score
    sklearn.pipeline.Pileline
    DBSCAN密度聚类算法
    特征选择
  • 原文地址:https://www.cnblogs.com/dudu/p/15548461.html
Copyright © 2011-2022 走看看