Resolver problemas do Kf

Siga estas etapas para resolver vários problemas que podem ocorrer ao executar o Kf.

Erros ao instalar o Kf

Erro do servidor (solicitação inválida): caractere inválido

Se esse erro aparecer quando você definir padrões de configuração, é provável que o valor da variável de ambiente ${DOMAIN} usada no comando inclua um "$" de escape. Use aspas simples para definir um domínio com um nome de Space ou outra substituição:

Error from server (BadRequest): invalid character '$' in string escape code

Erros em objetos do Kf Kubernetes

Siga estas instruções para resolver problemas em objetos do Kubernetes Kf.

  1. Para encontrar nome do tipo de recurso do Kubernetes que você quer solucionar, liste todos os recursos do Kubernetes:

    kubectl api-resources --api-group=kf.dev

    Exemplo de saída:

    NAME                      SHORTNAMES   APIGROUP   NAMESPACED   KIND
    apps                                   kf.dev     true         App
    builds                                 kf.dev     true         Build
    clusterservicebrokers                  kf.dev     false        ClusterServiceBroker
    routes                                 kf.dev     true         Route
    servicebrokers                         kf.dev     true         ServiceBroker
    serviceinstancebindings                kf.dev     true         ServiceInstanceBinding
    serviceinstances                       kf.dev     true         ServiceInstance
    spaces                                 kf.dev     false        Space
    
  2. Receba a instância do recurso que você quer solucionar usando kubectl. Se o objeto não estiver em um namespace, omita a flag -n:

    kubectl get api-resource-name.kf.dev object-name -n space-name -o yaml

    Exemplo:

    kubectl get apps.kf.dev my-app -n my-space -o yaml
    
  3. Escolha seu problema nas guias abaixo:

    O objeto não está fazendo reconciliação

    1. Verifique o valor de metadata.generation. Esse número é incrementado sempre que o objeto é atualizado. Quando esse número é muito alto, é provável que dois controladores do Kubernetes estejam competindo pelo objeto. Confira o cluster para ver se alguma política está aplicada ao objeto, o que pode mudar o estado pretendido.
    2. Verifique se o namespace do objeto está sendo excluído. Se estiver, talvez o objeto não seja reconciliado.
    3. Verifique se o campo status.observedGeneration existe. Caso contrário, talvez o controlador ainda não tenha sido executado no objeto. Confira se o cluster e os controladores estão íntegros usando kf doctor.
    4. Verifique se o campo metadata.generation corresponde ao campo status.observedGeneration. Caso contrário, confirme se o cluster e os controladores estão íntegros usando kf doctor.
    5. Para ver se há falhas na lista de status.conditions, consulte esta lista de motivos comuns de erro:
    • NotOwned: já existe outro recurso no mesmo cluster ou namespace que o objeto está tentando criar. Leia a mensagem para encontrar o nome duplicado e renomear o recurso conflitante ou o objeto do Kf.
    • TemplateError: há uma configuração incorreta na especificação do recurso do Kf ou na configuração do Kf que faz o recurso filho ser reconciliado incorretamente. Valide as configurações do objeto e do Space do Kf.
    • CacheOutdated: o controlador do Kf não está recebendo atualizações do Kubernetes rápido o suficiente. Verifique a integridade do cluster do Kubernetes.
    • ReconciliationError: o controlador do Kf não pode criar o recurso filho necessário. Verifique se o cluster é íntegro, se o Kf está em execução e se não há políticas aplicadas que impeçam o Kf de criar o objeto referenciado na mensagem.

    O objeto não está sendo excluído

    1. Veja se o metadata.deletionTimestamp do objeto foi definido. Em caso negativo, a exclusão solicitada não funcionou.
    2. Verifique se o metadata.deletionTimestamp do objeto está no passado. Se estiver no futuro, talvez o objeto não seja excluído.
    3. Confira se existe uma lista metadata.finalizers no objeto. Se houver finalizadores, o objeto terá aguardar a remoção deles antes de ser excluído. Se você quiser forçar uma exclusão sem esperar os finalizadores, edite o objeto para removê-los.
    4. É possível que haja objetos filhos impedindo a exclusão do projeto. Peça a um admin para verificar todos os objetos no namespace e no cluster e ver se um deles precisa ser excluído manualmente primeiro.