Resolva problemas com os espaços Kf

Use estes passos para resolver vários problemas que podem ocorrer quando usa o Kf Spaces.

O objeto está bloqueado durante a eliminação.

Execute o seguinte comando para obter as informações do recurso e, em seguida, verifique as causas indicadas abaixo:

kubectl get spaces.kf.dev SPACE_NAME -o yaml

A kf CLI pode ajudar a verificar alguns dos problemas:

kf doctor space/SPACE_NAME
Causa possívelSolução
A data/hora de eliminação ocorre no futuro.

Com a variação de tempo, o metadata.deletionTimestamp pode ainda estar no futuro. Aguarde alguns minutos para ver se o objeto é eliminado.

Os finalizadores existem no objeto.

Os finalizadores estão presentes no objeto e têm de ser removidos pelo controlador que os definiu antes de o objeto ser eliminado.

Se quiser forçar uma eliminação sem esperar pelos finalizadores, edite o objeto para os remover da matriz metadata.finalizers.

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

Podem existir objetos dependentes.

O objeto pode estar a aguardar que os dependentes sejam eliminados antes de ser eliminado. Consulte o guia de recolha de lixo do Kubernetes para saber mais. Peça a um administrador para verificar todos os objetos no espaço de nomes e no cluster para ver se um deles está a bloquear a eliminação.

Se precisar de remover o objeto sem esperar por dependentes, use kubectl delete com a flag de cascata definida como: --cascade=orphan.

Desvio do estado de geração de objetos.

Execute o seguinte comando para obter as informações do recurso e, em seguida, verifique as causas indicadas abaixo:

kubectl get spaces.kf.dev SPACE_NAME -o yaml

A kf CLI pode ajudar a verificar alguns dos problemas:

kf doctor space/SPACE_NAME
Causa possívelSolução
O objeto tem uma variação da versão de geração.

Normalmente, este erro ocorre quando o controlador Kf não lê a versão mais recente do objeto. Este erro é normalmente recuperado automaticamente assim que as réplicas do Kubernetes atingirem a consistência final e, normalmente, não requer ação por parte dos utilizadores.

Falha na conciliação de objetos.

Execute o seguinte comando para obter as informações do recurso e, em seguida, verifique as causas indicadas abaixo:

kubectl get spaces.kf.dev SPACE_NAME -o yaml

A kf CLI pode ajudar a verificar alguns dos problemas:

kf doctor space/SPACE_NAME
Causa possívelSolução
O objeto tem TemplateError

Normalmente, este erro ocorre se o utilizador tiver introduzido uma propriedade inválida na especificação do recurso personalizado ou se a configuração no espaço/cluster for incorreta.

Para compreender a causa principal, o utilizador pode ler a mensagem de erro mais longa no objeto status.conditions 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 nomes)

Normalmente, este erro significa que os objetos que o controlador está a tentar criar já existem. Isto acontece se o utilizador tiver criado um recurso do K8s com o mesmo nome que o controlador está a tentar criar; no entanto, acontece com mais frequência se o utilizador eliminar um recurso e, em seguida, o controlador do Kf tentar recriá-lo. Se um recurso filho ainda estiver disponível, o respetivo proprietário é o recurso antigo que já não existe.

Para recuperar do erro, recomendamos que o utilizador elimine o recurso afetado e, em seguida, o recrie. Para eliminar o objeto, use um comando de eliminação Kf ou o comando 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

Normalmente, este erro significa que ocorreu um problema com a chamada HTTP feita (pelo controlador Kf) ao servidor da API Kubernetes para criar/atualizar o recurso.

Para compreender a causa principal, o utilizador pode ler a mensagem de erro mais longa no objeto status.conditions usando o comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Por exemplo: kubectl describe serviceinstance my-service -n my-space.