Resolver problemas de versões do Kf

Use estas etapas para solucionar diversos problemas que podem ocorrer ao usar as versões do Kf.

Não é possível excluir o objeto.

Execute o comando a seguir para ver as informações dos recursos. Depois, verifique as causas listadas abaixo:

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

A CLI kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME build/BUILD_NAME
Possível causaSolução
O carimbo de data/hora da exclusão está no futuro.

Com o desvio do relógio, o metadata.deletionTimestamp ainda pode estar no futuro. Aguarde alguns minutos para ver se o objeto foi excluído.

Os finalizadores existem no objeto.

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

Se você quiser 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 ser que existam objetos dependentes.

O objeto pode estar aguardando que os objetos sejam excluídos antes de exclui-los. 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 ver se um deles está bloqueando a exclusão.

Se você precisar remover o objeto sem esperar dependências, use kubectl delete com a sinalização de cascata definida como: --cascade=orphan.

Deslocamento do estado de geração de objetos.

Execute o comando a seguir para ver as informações dos recursos. Depois, verifique as causas listadas abaixo:

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

A CLI kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME build/BUILD_NAME
Possível causaSolução
O objeto tem deslocamentos da versão de geração.

Esse erro geralmente ocorre no controlador Kf sem a leitura da versão mais recente do objeto. Geralmente, esse erro é recuperado automaticamente quando as réplicas do Kubernetes alcançam a consistência posterior, e isso normalmente não requer uma ação dos usuários.

Falha na reconciliação de objetos.

Execute o comando a seguir para ver as informações dos recursos. Depois, verifique as causas listadas abaixo:

kubectl get builds.kf.dev -n SPACE_NAME BUILD_NAME -o yaml

A CLI kf pode ajudar a verificar alguns dos problemas:

kf doctor --space SPACE_NAME build/BUILD_NAME
Possível causaSolução
O objeto tem TemplateError

Esse erro geralmente ocorre se o usuário inseriu uma propriedade inválida na especificação de recurso personalizada ou se a configuração no espaço/cluster for 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 ChildNotOwner (conflitos de nome)

Esse erro geralmente significa que os objetos que o controlador está tentando criar já existem. Isso acontece quando o usuário cria um recurso K8s com o mesmo nome do que o controlador está tentando criar. Com mais frequência, isso acontece quando o usuário exclui um recurso e, em seguida, o controlador Kf tentará recriá-lo. Se um recurso filho ainda estiver por aí, o proprietário dele será o recurso antigo que não existe mais.

Para corrigir o 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 Kf. Por exemplo: kf create-space my-space.

O objeto tem ReconciliationError

Esse erro geralmente significa que algo deu errado com a chamada HTTP feita (pelo controlador Kf) para o serviço 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.