代码之家  ›  专栏  ›  技术社区  ›  Mandroid

kubectl应用入口:未知字段错误

  •  0
  • Mandroid  · 技术社区  · 3 年前

    我的入口为:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: mongoexpress-ingress
    spec:
      rules:
      - host: mylocalmongoexpress.com
        http:
          paths:
          - backend:
              serviceName: mongoexpress-service
              servicePort: 8081
    

    当我运行“kubectl apply-f mongoexpress ingress.yaml”时,我得到错误:

    错误:验证“mongoexpress ingress.yaml”时出错:验证时出错 数据:[ValidationError(Ingress.spec.rules[0].http.paths[0]后端): 中的未知字段“serviceName” io.k8s.api.networking.v1.入口后端, ValidationError(Ingress.spec.rules[0].http.paths[0].backend):未知 io.k8s.api.networking.v1.IngressBackend中的字段“servicePort”, ValidationError(Ingress.spec.rules[0].http.paths[0]):缺少必需项 io.k8s.api.networking.v1.HTTPIngressPath]中的字段“pathType”;如果你 选择忽略这些错误,使用关闭验证 --validate=false

    通过浏览在线资源,我在yaml文件中找不到问题。

    那么我在这里错过了什么?

    4 回复  |  直到 3 年前
        1
  •  4
  •   iomv    2 年前

    入口规格 has changed 从v1beta1到v1。尝试:

    ...
    spec:
      rules:
      - host: mylocalmongoexpress.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: mongoexpress-service
                port:
                  number: 8081
    
        2
  •  1
  •   rkosegi    3 年前

    你似乎混合了英格利斯的版本。你声明 networking.k8s.io/v1 ,但您的YAML块对应于 networking.k8s.io/v1beta1 -从起不再可用 1.22

    v1beta1

    - backend:
        serviceName: mongoexpress-service
        servicePort: 8081
    

    v1

    - backend:
        service:
          name: mongoexpress-service
          port:
            number: 8081
    
        3
  •  0
  •   Vüsal    3 年前

    作为其他答案的补充,您可以始终使用 kubectl explain 在这种情况下,如果您尝试这样做: kubectl explain ingress.spec.rules.http.paths.backend.service --api-version=networking.k8s.io/v1 那么您将得到:

    FIELDS:
       name <string> -required-
         Name is the referenced service. The service must exist in the same
         namespace as the Ingress object.
    
       port <Object>
         Port of the referenced service. A port name or port number is required for
         a IngressServiceBackend.
    

    通过这种方式,您可以很容易地找到哪些字段可用于API版本中的哪个资源。