6

我正在使用 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 部分中定义的resources,它们显示在我正在传输到 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
4

4 回答 4

1

我在处理尝试在 Kubernetes 上使用 Kustomize 启动 Traefik 的问题时遇到了您的问题……我的问题通过确保命名空间在我的 kustomization.yml 文件中准确而得到解决。就我而言,我必须更改它以匹配我部署中其他 yml 文件中的内容。不知道你最终是否明白了,但我想我会回应,以防万一......

于 2020-12-11T00:56:20.960 回答
0

我遇到了同样的问题,我想这是关于kubetcl如果尝试先在集群上安装找不到资源crd,为了验证这一点,可以运行命令kubectl api-resources,新crd的不会在列表中,但如果你applycrd第一个,那么crd记录将在那里,然后可以kustomize build . | kubectl apply -f -正常工作。但我真的不知道如何首先添加资源。

于 2021-03-22T05:48:13.283 回答
0

使用时,Skaffold我通过将我的所有内容移动CRDs到新目录中,然后requires在我的skaffold.yaml.

于 2022-02-08T18:53:43.300 回答
0

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

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

于 2022-01-24T12:35:36.773 回答