kubectl 如何等待 crd 创建?

Nea*_*alR 8 wait kubernetes azure-devops kubectl kubernetes-custom-resources

在运行脚本之前仅使用kubectl命令行检查自定义资源定义是否存在的最佳方法是什么?

我们有一个包含了NATS集群定义YAML文件ServiceAccountRoleClusterRoleBindingDeployment。中使用的映像Deployment创建crd,第二个脚本使用它crd来部署一组pods. 目前,我们的 CI 管道需要多次运行第二个脚本,只有crd在完全创建后才能成功完成。我尝试使用kubectl wait但无法弄清楚适用于完成crd.

下面是我最近的尝试,尽管完全错误,但这说明了我们想要的一般顺序。

kubectl wait --for=condition=complete kubectl apply -f 1.nats-cluster-operator.yaml kubectl apply -f 2.nats-cluster.yaml

api*_*sim 13

CRD 的条件是established

kubectl -n <namespace-here> wait --for condition=established --timeout=60s crd/<crd-name-here>
Run Code Online (Sandbox Code Playgroud)

您可能需要--timeout适当调整。

  • 我发现使用此命令偶尔仍然会收到“来自服务器的错误(未找到):customresourcedefinitions.apiextensions.k8s.io“environments.fission.io”未找到”,因此我认为仅等待“已建立”条件是不够的。任何人都知道有更好的方法可以通过 CRD 的创建来适应竞争吗? (4认同)
  • 这对我来说失败了 `kubectl wait --for condition=builted --timeout=60s crd/servicemonitors.monitoring.coreos.com` 并显示 `Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "servicemonitors.monitoring.coreos .com”未找到` (2认同)