【问题标题】:error: resource mapping not found || make sure CRDs are installed first错误:找不到资源映射 ||确保首先安装 CRD
【发布时间】:2022-08-03 01:42:46
【问题描述】:

错误:找不到名称的资源映射:\"ingress-srv\" 命名空间:\"\" 来自 \"ingress-srv.yaml\":版本 \"networking.k8s 中类型 \"Ingress\" 没有匹配项。 io/v1beta1\" 确保首先安装 CRD

我是 Kubernetes 新手,我在 minikube 上设置了入口 nginx,它安装成功,但是当我尝试使用 kubectl apply -f filename 运行时,它给出了上述错误

这是代码 文件名:入口-srv.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - host: posts.com
      http:
        paths:
          - path: /posts
            pathType: Prefix
            backend:
              serviceName: posts-clusterip-srv
              servicePort: 4000
  • 你的 Kubernetes 版本是什么? $ kubectl version --short
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
  • @Royal thapa 你的问题解决了吗?如果是,您能否发布您遵循的程序作为解决方案并接受它?

标签: kubernetes


【解决方案1】:

清单中指定的资源类型 networking.k8s.io/v1beta1 Ingress 已在 Kubernetes v1.22 中删除并替换为 networking.k8s.io/v1 Ingress(有关详细信息,请参阅 deprecation guide)。如果您的集群的 Kubernetes 服务器版本是 1.22 或更高版本(我怀疑是这样),尝试从您的清单创建一个 Ingress 资源将导致您得到的错误。

您可以使用命令 kubectl version --short 检查集群的 Kubernetes 服务器版本(正如 Kamol Hasan 指出的那样)。

如果版本确实是 1.22 或更高,则需要修改 YAML 文件,使其格式在新版本的 API 中有效。这个pull request 总结了格式差异。在您的情况下,ingress-srv.yaml 需要更改为:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - host: posts.com
      http:
        paths:
          - path: /posts
            pathType: Prefix
            backend:
              service:
                name: posts-clusterip-srv
                port:
                  number: 4000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多