错误:找不到资源映射|| 确保首先安装 CRD

Roy*_*apa 27 kubernetes

错误:未找到名称的资源映射:“ingress-srv”名称空间:“ingress-srv.yaml”中的“”:版本“networking.k8s.io/v1beta1”中没有与类型“Ingress”匹配,确保首先安装 CRD

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

这是代码文件名:ingress-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
Run Code Online (Sandbox Code Playgroud)

Dav*_*sby 32

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

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

如果版本确实是 1.22 或更高版本,您需要修改 YAML 文件,使其格式在新版本的 API 中有效。此拉取请求总结了格式差异。对于您的情况,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
Run Code Online (Sandbox Code Playgroud)