Resolver problemas no Kf

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

Falhas ao instalar o Kf

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

Se você vir esse erro ao 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 espaço ou outra substituição:

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

Erros com objetos do Kubernetes Kf.

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

  1. Encontre o nome do tipo de recurso que você quer solucionar listando 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. Selecione 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 é extremamente alto, é provável que dois controladores do Kubernetes estejam lutando pelo objeto. Verifique o cluster para conferir se alguma política está sendo aplicada ao objeto, o que pode alterar o estado pretendido.
    2. Verifique se o namespace do objeto está sendo excluído. Se estiver, o objeto poderá não ser reconciliado.
    3. Verifique se o campo status.observedGeneration existe. Caso contrário, o controlador pode não ter sido executado no objeto ainda. 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. Verifique se há falhas na lista status.conditions com base nestes motivos comuns de erro:

      • NotOwned: há outro recurso no cluster ou no namespace semelhante ao que esse objeto está tentando criar. Leia a mensagem para encontrar o nome duplicado e renomear o recurso conflitante ou o objeto Kf.
      • TemplateError: há uma configuração errada na especificação do recurso Kf ou na configuração do Kf que faz com que o recurso filho seja reconciliado incorretamente. Valide as configurações do objeto Kf e do espaço Kf.
      • CacheOutdated: o controlador Kf não está recebendo atualizações do Kubernetes rápido o suficiente. Verifique a integridade do cluster do Kubernetes.
      • ReconciliationError: o controlador Kf não pode criar o recurso filho necessário. Verifique se o cluster está íntegro, se o Kf está em execução e se políticas aplicadas estão impedindo o Kf de criar o objeto referenciado na mensagem.

    O objeto não está excluindo

    1. Verifique se o metadata.deletionTimestamp do objeto foi definido. Se não foi definido, a exclusão solicitada não funcionou.
    2. Verifique se o metadata.deletionTimestamp do objeto está no passado. Se ele está no futuro, o objeto poderá não ser excluído.
    3. Verifique se existe uma lista metadata.finalizers no objeto. Se houver finalizadores, eles precisam ser removidos antes de o objeto ser excluído. Para forçar uma exclusão sem esperar os finalizadores, edite o objeto para removê-los.
    4. É possível que objetos filhos estejam impedindo que o objeto seja excluído. Peça a um administrador para verificar todos os objetos do namespace e do cluster e conferir se um deles precisa ser excluído manualmente primeiro.