如何使用kubectl在kubernetes中列出已应用的自定义资源定义

c7rzv4ha  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(6)|浏览(212)

我最近应用了这个CRD文件

https://raw.githubusercontent.com/jetstack/cert-manager/release-0.11/deploy/manifests/00-crds.yaml

使用kubectl apply安装:https://hub.helm.sh/charts/jetstack/cert-manager
我想我已经成功地做到了:

xetra11@x11-work configuration]$ kubectl apply -f ./helm-charts/certificates/00-crds.yaml --validate=false
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created

但是现在我想“看看”我刚才在这里应用的东西。我不知道如何列出这些定义,或者如果我认为它们会以某种方式破坏我的集群,就删除它们。
我在这里找不到任何信息:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#preparing-to-install-a-custom-resource

jtoj6r0c

jtoj6r0c1#

kubectl get customresourcedefinitionskubectl get crd
然后,您可以使用kubectl describe crd <crd_name>获取CRD的描述。当然还有kubectl get crd <crd_name> -o yaml来获得CRD的完整定义。
要删除,可以使用kubectl delete crd <crd_name>

hs1ihplo

hs1ihplo2#

自定义资源就像任何其他原生Kubernetes资源一样。
所有基本的kubeclt CRUD操作都适用于CRD。因此,只需使用下面的任何命令。

kubectl get crd <name of crd>
kubectl describe crd <name of crd>
kubectl get crd <name of crd> -o yaml
kmpatx3s

kmpatx3s3#

首先,您可以使用kubectl get crd列出所有CRD,例如:

$ kubectl get crd
  NAME                                                        CREATED AT
  secretproviderclasses.secrets-store.csi.x-k8s.io            2022-07-06
  secretproviderclasspodstatuses.secrets-store.csi.x-k8s.io   2022-07-06

这是可用的CRD定义的列表,然后使用其中一个定义的名称并启动kubectl get <crd_name>,以从该CRD获取应用的资源的列表。例如:

$ kubectl get secretproviderclasses.secrets-store.csi.x-k8s.io
  NAME       AGE
  azure-kv   5d

注意:使用-A来定位所有名称空间或-n <namespace>

tnkciper

tnkciper4#

列出crd(没有命名空间,因为crd是集群范围的):

kubectl get crds

描述crd:

kubectl describe crd challenges.acme.cert-manager.io
kiz8lqtg

kiz8lqtg5#

您可能会对为什么在kubectl get api-resources中看到您的CRD感到困惑,例如。Istio Telemetry资源:

kubectl api-resources --api-group=telemetry.istio.io
NAME          SHORTNAMES   APIVERSION                    NAMESPACED   KIND
telemetries   telemetry    telemetry.istio.io/v1alpha1   true         Telemetry

但是尝试kubectl describe它们会产生类似这样的错误

kubectl describe crd Telemetry.telemetry.istio.io
Error from server (NotFound): customresourcedefinitions.apiextensions.k8s.io "Telemetry.telemetry.istio.io" not found

kubectl describe crd telemetry.istio.io/v1alpha1
error: there is no need to specify a resource type as a separate argument when passing arguments in resource/name form (e.g. 'kubectl get resource/<resource_name>' instead of 'kubectl get resource resource/<resource_name>'

这是因为必须使用CRD全名的复数形式。名称见kubectl get crd,例如:

$ kubectl get crd |grep -i telemetry
telemetries.telemetry.istio.io                                     2022-03-21T08:49:29Z

因此kc describe crd telemetries.telemetry.istio.io将适用于此CRD。

deikduxw

deikduxw6#

由于CRD没有命名空间(但在集群范围内),因此您可能希望列出在特定命名空间中创建的所有自定义资源:

kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n 1 kubectl get --show-kind --ignore-not-found -n <namespace>

你可以在这里阅读更多https://github.com/kubernetes/kubectl/issues/151

相关问题