Resolver problemas de ServiceInstances do Kf

Siga estas etapas para solucionar vários problemas que podem ocorrer ao usar ServiceInstances do Kf.

Não é possível excluir o objeto

Execute o comando abaixo para conferir as informações dos recursos. Depois, verifique as causas listadas aqui:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

A CLI do kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possível causa:Solução
O carimbo de data/hora da exclusão está no futuro.

Com o desvio do clock, o metadata.deletionTimestamp ainda pode estar no futuro. Aguarde alguns minutos para conferir se o objeto foi excluído.

Há finalizadores no objeto.

Há finalizadores presentes no objeto. Eles precisam ser removidos pelo controlador que os definiu antes da exclusão do objeto.

Para forçar uma exclusão sem esperar os finalizadores, edite o objeto para removê-los da matriz metadata.finalizers.

Aviso: remover os finalizadores sem permitir que os controladores sejam concluídos pode causar erros, problemas de segurança, perda de dados ou recursos órfãos.

Pode haver objetos dependentes.

O objeto pode estar aguardando que os dependentes sejam excluídos antes da própria exclusão. Consulte o guia de coleta de lixo do Kubernetes para saber mais. Peça a um administrador para verificar todos os objetos no namespace e no cluster e conferir se algum deles está bloqueando a exclusão.

Se for preciso remover o objeto sem esperar as dependências, use kubectl delete com a flag de cascata definida como --cascade=orphan.

Inconsistência no estado de geração do objeto

Execute o comando abaixo para conferir as informações dos recursos. Depois, verifique as causas listadas aqui:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

A CLI do kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possível causa:Solução
Há uma inconsistência na versão de geração do objeto.

Em geral, ocorre quando o controlador do Kf não lê a versão mais recente do objeto. Esse erro costuma ter uma recuperação automática quando as réplicas do Kubernetes alcançam a consistência posterior, e isso normalmente não requer ação dos usuários.

Falha na reconciliação do objeto

Execute o comando abaixo para conferir as informações dos recursos. Depois, verifique as causas listadas aqui:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

A CLI do kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possível causa:Solução
O objeto tem um TemplateError.

Em geral, esse erro ocorre quando o usuário insere uma propriedade inválida na especificação de recurso personalizado ou a configuração no espaço/cluster é inválida.

Para entender a causa raiz, o usuário pode ler a mensagem de erro mais longa no status.conditions do objeto usando o comando kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por exemplo, kubectl describe serviceinstance my-service -n my-space.

O objeto tem um erro ChildNotOwned (conflitos de nome).

Em geral, esse erro significa que os objetos que o controlador está tentando criar já existem. Isso acontece quando o usuário cria um recurso do Kubernetes com o mesmo nome daquele que o controlador está tentando criar. Com mais frequência, isso acontece quando o usuário exclui um recurso e, em seguida, o controlador do Kf tenta recriá-lo. Se ainda houver um recurso filho, o proprietário dele será o recurso antigo que não existe mais.

Para corrigir esse erro, recomendamos que o usuário exclua o recurso afetado e o recrie. Para excluir o objeto, use um comando de exclusão do Kf ou kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE. Por exemplo, kf delete-space my-space ou kubectl delete space my-space.

Para recriar um recurso, use um comando do Kf. Por exemplo, kf create-space my-space.

O objeto tem um ReconciliationError.

Em geral, esse erro significa que algo deu errado com a chamada HTTP feita pelo controlador do Kf para o servidor da API Kubernetes para criar/atualizar o recurso.

Para entender a causa raiz, o usuário pode ler a mensagem de erro mais longa no status.conditions do objeto usando o comando kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por exemplo, kubectl describe serviceinstance my-service -n my-space.

Falha ao reconciliar recursos de backup

Execute o comando abaixo para conferir as informações dos recursos. Depois, verifique as causas listadas aqui:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

A CLI do kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possível causa:Solução
Erro DeprovisionFailed de recurso de backup.

Esse erro geralmente ocorre quando recursos de backup (banco de dados MySQL hospedado em um servidor OSB externo) não são desprovisionados. O Kf não pode determinar com segurança se o recurso dependente foi desprovisionado.

Para solucionar o problema, recomendamos que o usuário leia a mensagem de erro detalhada no status.conditions do objeto usando o comando: kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por exemplo, kubectl describe servipropogatesceinstance my-service -n my-space.

Quando a mensagem de erro for confirmada, peça para um administrador conferir o recurso de backup e limpá-lo manualmente. Depois que o recurso de backup for liberado com segurança, o recurso Kf afetado pode ser reconciliado com a remoção manual do Finalizer da especificação do objeto, use o comando kubectl edit serviceinstance my-service -n my-space.