当前位置: 首页 > 知识库问答 >
问题:

kustomize和kubectl没有找到CRD

郏正信
2023-03-14

我正在使用kustomize在一个新的k8s集群(v1.17.2)上将清单传输到kubectl。这包括CRD,但其他对象无法找到它们。例如:

unable to recognize "STDIN": no matches for kind "Certificate" in version "cert-manager.io/v1alpha2"
unable to recognize "STDIN": no matches for kind "IngressRoute" in version "traefik.containo.us/v1alpha1"

CRD是在我的kubectl的参考资料部分中定义的,它们显示在我向kubectl传送的输出中,我确信上次将所有内容放在一个文件中的方法是有效的。

如果我先应用CRD,然后分别应用主清单,这一切都会顺利进行。我能同时做这些吗?如果是,我做错了什么;如果没有,为什么它以前能工作?

有人能告诉我问题出在哪里吗?

CRD定义示例:

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: ingressroutetcps.traefik.containo.us
spec:
  group: traefik.containo.us
  names:
    kind: IngressRouteTCP
    plural: ingressroutetcps
    singular: ingressroutetcp
  scope: Namespaced
  version: v1alpha1

共有3个答案

谯嘉木
2023-03-14

Kustomze还没有控制对象创建顺序的方法。如果你直接进入kubectl,那么你必须要么将CRD分离到它们自己的应用程序中,这样你就可以应用CRD,等待它们完成,然后应用依赖它们的资源。或者你运行两次应用程序。

当使用kustomize和GitOps工具时,他们倾向于使用自定义的方式来设置资源顺序创建。例如Argo-CD的同步波或Flux中依赖的kustomize。

景星华
2023-03-14

我遇到了同样的问题,我猜这是关于kubetcl如果试图首先在集群上安装crd时找不到资源,为了验证这一点,可以运行命令kubectl api resources,新的crd将不在列表中,但是如果首先应用crd,然后crd记录就会出现,然后kustomize构建kubectl apply-f-可以正常工作。但我真的不知道如何先添加资源。

百里默
2023-03-14

我在处理库伯内特斯的库斯托米兹问题时遇到了你的问题...我的问题是通过确保我的kustomization.yml文件中的命名空间是准确的来解决的。在我的情况下,我不得不改变它,以匹配我部署中其他yml文件中的内容。不确定你最终是否明白了,但我想我会做出回应,以防就是这样...

 类似资料:
  • 创建一个jest测试,如: 失败,原因是 但是,确实将 定义为节点 16,因此如下所示: 正确输出。 如何配置开玩笑以使此测试通过?显然,在开玩笑的测试运行器中发生了一些事情,无法在当前节点环境中执行,或者正在剥离特定的内置功能,只是我似乎找不到任何有关如何调试或调整的文档。 通过在“纯js”中手动编写编码或依赖于类似的东西,可以解决一些问题,但我特别感兴趣的是为什么jest执行结尾无法找到似乎存

  • 我试图从mysql数据库中获取数据,我使用从CrudRepository扩展而来的标签@repository接口,但当我尝试调用任何方法时,它会说nullPointerExctive,如Count()或findAll()。 此外,我还有一条警告:未找到引用bean“entityManagerFactory” 我已经试着删除了。m2文件夹,在我调用存储库接口的类上添加@Service标记。 我已经提

  • 我正在使用安装在本地主机上的wordpress构建一个站点。 出于某种原因,我的post.php页面没有显示帖子缩略图(特色图片)。我已经确定,这是一个问题,timthumb.php这是不正确的定位图像网址。我在网上搜索了几个小时,尝试了许多解决方案,但似乎没有任何效果。 基本问题是我在blog.php文件中的这一行: My functions.php脚本将get_image_url定义如下: 在

  • 我在Windows10上安装WSL2时遵循了以下说明:https://docs.microsoft.com/en-us/windows/wsl/install-win10,手动安装。 所有的命令为我工作,但是在最后,当我打开wsl终端并键入时,我有响应。 我安装了Ubuntu 20.04 LTS,当我打开Ubuntu终端时,kubectl在那里工作。 Powershell表示已正确安装: 如何使d

  • 问题内容: 我正在使用gradlew进行Java项目。我使用Ubuntu Linux作为操作系统。当我运行“ gradle”时,它将运行并提供信息。但是,当我运行“ gradlew”时,其输出为“未找到命令’gradlew’,您的意思是:软件包’gradle’(universe)gradlew中的命令’gradle’:未找到命令” 我做了研究,有了jdk,并且做了sudo apt-get inst