Не удалось полностью удалить Kubernetes CustomResource - PullRequest
0 голосов
/ 24 августа 2018

У меня проблемы с удалением определения пользовательского ресурса. Я пытаюсь обновить kubeless с v1.0.0-alpha.7 до v1.0.0-alpha.8 .

Я попытался удалить все созданные пользовательские ресурсы, выполнив

kubectl delete -f kubeless-v1.0.0-alpha.7.yaml

И я вижу следующий вывод

deployment "kubeless-controller-manager" deleted
serviceaccount "controller-acct" deleted
clusterrole "kubeless-controller-deployer" deleted
clusterrolebinding "kubeless-controller-deployer" deleted
customresourcedefinition "functions.kubeless.io" deleted
customresourcedefinition "httptriggers.kubeless.io" deleted
customresourcedefinition "cronjobtriggers.kubeless.io" deleted
configmap "kubeless-config" deleted

Но когда я пытаюсь

kubectl get customresourcedefinition
NAME                    AGE
functions.kubeless.io   21d

И из-за этого, когда я в следующий раз пытаюсь обновить, выполнив

kubectl create -f kubeless-v1.0.0-alpha.8.yaml

Понятно,

Error from server (AlreadyExists): error when creating "kubeless-v1.0.0-alpha.8.yaml": object is being deleted: customresourcedefinitions.apiextensions.k8s.io "functions.kubeless.io" already exists

Я думаю, что из-за этого несоответствия в определении функции пример Привет мира потерпел неудачу.

kubeless function deploy hellopy --runtime python2.7 --from-file test.py --handler test.hello INFO[0000] Deploying function... FATA[0000] Failed to deploy hellopy. Received: the server does not allow this method on the requested resource (post functions.kubeless.io)

Наконец, вот вывод kubectl describe customresourcedefinitions.apiextensions.k8s.io

Name: functions.kubeless.io Namespace: Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apiextensions.k8s.io/v1beta1","description":"Kubernetes Native Serverless Framework","kind":"CustomResourceDefinition","metadata":{"anno... API Version: apiextensions.k8s.io/v1beta1 Kind: CustomResourceDefinition Metadata: Creation Timestamp: 2018-08-02T17:22:07Z Deletion Grace Period Seconds: 0 Deletion Timestamp: 2018-08-24T17:15:39Z Finalizers: customresourcecleanup.apiextensions.k8s.io Generation: 1 Resource Version: 99792247 Self Link: /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/functions.kubeless.io UID: 951713a6-9678-11e8-bd68-0a34b6111990 Spec: Group: kubeless.io Names: Kind: Function List Kind: FunctionList Plural: functions Singular: function Scope: Namespaced Version: v1beta1 Status: Accepted Names: Kind: Function List Kind: FunctionList Plural: functions Singular: function Conditions: Last Transition Time: 2018-08-02T17:22:07Z Message: no conflicts found Reason: NoConflicts Status: True Type: NamesAccepted Last Transition Time: 2018-08-02T17:22:07Z Message: the initial names have been accepted Reason: InitialNamesAccepted Status: True Type: Established Last Transition Time: 2018-08-23T13:29:45Z Message: CustomResource deletion is in progress Reason: InstanceDeletionInProgress Status: True Type: Terminating Events: <none>

Ответы [ 2 ]

0 голосов
/ 28 января 2019

В моем случае проблема заключалась в том, что я удалил пользовательский объект ресурса, но не пользовательское определение ресурса (CRD).

Я исправил это с помощью: kubectl delete -f resourcedefinition.yaml.В этом файле я определил свои CRD.

Так что я думаю, что лучше не удалять пользовательские объекты вручную, а удалять файл, в котором вы определяете как объект, так и CRD. Ссылки .

0 голосов
/ 25 августа 2018

Получается, что основной причиной было то, что пользовательские ресурсы с финализаторами могут "тупиковыми". CustomResource "functions.kubeless.io" имел

Finalizers: customresourcecleanup.apiextensions.k8s.io

и это может оставить его в плохом состоянии при удалении.

https://github.com/kubernetes/kubernetes/issues/60538

Я выполнил шаги, упомянутые в этом обходном пути , и теперь он удаляется. Надеюсь, что это помогает всем, кто сталкивается с этим.

...