Удаление всех экземпляров типа ресурса во всех/множестве пространств имен Kubernetes.
Я пытаюсь удалить и переустановить диспетчер сертификатов в наших кластерах Kubernetes. В их документах по удалению упоминается:
Прежде чем продолжить, убедитесь, что все ресурсы диспетчера сертификатов, созданные пользователями, удалены. Вы можете проверить наличие существующих ресурсов с помощью следующей команды:
$ kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces
Команда выводит сотни ресурсов, разбросанных по двум дюжинам пространств имен.
Как я могу эффективно удалить их все, не удаляя ничего больше в пространствах имен?
The kubectl delete
Команда требует указания пространства имен при удалении всего определенного типа, например:kubectl delete certificates -n example-ns
, так что здесь ничего хорошего.
Удаление каждого по имени в цикле при указании-A
тоже не работает, так как мне нужно указать пространство имен:
$ kubectl delete -A order.certmanager.k8s.io/fcfa95477bc0149dbc16c99c54faa82e-cert-1862418815
error: a resource cannot be retrieved by name across all namespaces
Какая здесь правильная магия cli?
1 ответ
Вам следует удалить весьcrd
(Пользовательское определение ресурса), сначала перечислите свои CRD с помощью
kubectl get crd
а затем удалите CRD, например (используяIssuer
как пример)
kubectl delete crd issuer.<something>.<something>
Когда CRD удаляется, все экземпляры этого CRD (например, все ресурсыkind: Issuer
) удаляется.