Resolva problemas do Kf

Use estes passos para resolver vários problemas que podem ocorrer ao executar o Kf.

Falhas ao instalar o Kf

Erro do servidor (pedido incorreto): carater inválido

Se vir este erro ao definir as predefinições de configuração, é provável que o valor da variável de ambiente ${DOMAIN} usada no comando inclua um "$" com carateres 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 Kubernetes do Kf

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

  1. Encontre o nome do tipo de recurso do Kubernetes que quer resolver problemas ao listar todos os recursos do Kf:

    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. Obtenha a instância do recurso para o qual quer resolver problemas através de kubectl. Se o objeto não estiver num espaço de nomes, omita a flag -n:

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

    Por exemplo:

    kubectl get apps.kf.dev my-app -n my-space -o yaml
    
  3. Selecione o seu problema nos separadores abaixo:

    O objeto não está a ser reconciliado

    1. Verifique o valor de metadata.generation. Este número é incrementado sempre que o objeto é atualizado. Se o número for extremamente elevado, é provável que dois controladores do Kubernetes estejam a competir pelo objeto. Verifique o cluster para ver se estão a ser aplicadas políticas ao objeto que podem estar a alterá-lo em relação ao estado pretendido.
    2. Verifique se o espaço de nomes ao qual o objeto pertence está a ser eliminado. Se for o caso, o objeto pode não ser reconciliado.
    3. Verifique se o campo status.observedGeneration existe. Se não o fizer, o controlador pode ainda não ter sido executado no objeto. Valide se o cluster e os controladores estão em bom estado com o comando kf doctor.
    4. Verifique se o campo metadata.generation corresponde ao campo status.observedGeneration. Se não for o caso, valide se o cluster e os controladores estão em bom estado com o comando kf doctor.
    5. Verifique se existem falhas na lista status.conditions em comparação com esta lista de motivos de erro comuns:

      • NotOwned: existe outro recurso no cluster ou no espaço de nomes que este objeto está a tentar criar. Leia a mensagem para encontrar o nome duplicado e mude o nome do recurso em conflito ou do objeto Kf.
      • TemplateError: existe uma configuração incorreta na especificação do recurso Kf ou na configuração do Kf que faz com que o recurso secundário seja reconciliado incorretamente. Valide as definições do objeto Kf e do espaço Kf.
      • CacheOutdated: O controlador do Kf não está a receber atualizações do Kubernetes com a rapidez suficiente. Verifique o estado do cluster do Kubernetes.
      • ReconciliationError: O controlador Kf não consegue criar o recurso secundário necessário. Verifique se o cluster está em bom estado, se o Kf está em execução e se não existem políticas a serem aplicadas que impeçam o Kf de criar o objeto referenciado na mensagem.

    O objeto não está a ser eliminado

    1. Verifique se o metadata.deletionTimestamp do objeto foi definido. Se não tiver sido definido, a eliminação pedida não funcionou.
    2. Verifique se o metadata.deletionTimestamp do objeto é anterior. Se for no futuro, o objeto pode não ser eliminado.
    3. Verifique se existe uma lista metadata.finalizers no objeto. Se existirem finalizadores, o objeto tem de aguardar que sejam removidos antes de ser eliminado. Se quiser forçar uma eliminação sem esperar pelos finalizadores, edite o objeto para os remover.
    4. Podem existir objetos subordinados que impedem a eliminação do objeto. Peça a um administrador para verificar todos os objetos no espaço de nomes e no cluster para ver se um deles tem de ser eliminado manualmente primeiro.