Apaguei uma sub-rede portátil e agora os balanceadores de carga do meu cluster Classic estão apresentando falhas. Como posso me recuperar?

Clássico

Resolva problemas relacionados à recuperação de sub-redes na rede do seu cluster.

Seu cluster está apresentando erros de rede.

Uma sub-rede móvel foi excluída.

Conclua as etapas a seguir.

  1. Para o cluster que está tendo problemas, execute o comando a seguir e anote o ID do cluster..

    ibmcloud oc cluster ls
    
  2. Liste as sub-redes que o seu cluster está usando Na saída, anote as sub-redes que o seu cluster está usando.

    ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID
    
  3. Liste as sub-redes em sua conta Verifique se alguma sub-rede localizada na etapa 1 está ausente da lista de sub-redes em sua conta. Isso significa que o cluster está usando uma sub-rede que foi excluída, o que está causando a falha do balanceador de carga.

    ibmcloud sl subnet list
    
    ibmcloud sl subnet detail SUBNET-ID
    
  4. Para cada sub-rede excluída, recrie-a. Se você precisar de endereços IP públicos para seus ALBs ou LoadBalancers, especifique a ID da VLAN pública dos nós de trabalho; para IPs privados, especifique a ID da VLAN privada dos nós de trabalho.

    ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID
    
  5. Localize qualquer LoadBalancers que use endereços IP nas sub-redes móveis excluídas, salve-as e, em seguida, exclua-as. Não exclua os LoadBalancers no namespace openshift-ingress, pois eles serão excluídos posteriormente nessas etapas..

    1. Localize os detalhes do LoadBalancer e anote os endereços IP que eles usam
        kubectl get svc -A -o wide | grep LoadBalancer
        ```
    1. Para cada LoadBalancer não no namespace `openshift-ingress` que usa um endereço IP móvel, salve as configurações em um arquivo YAML.
      ```sh {: pre}
      kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml
    
    1. Exclua o LoadBalancer..
     ```sh {: pre}
     kubectl delete svc -n LB-NAMESPACE LB-NAME
     ```
    
  6. Conclua as etapas a seguir rapidamente, porque a sub-rede móvel deve ser removida antes que o pod openshift-ingress-operator seja reiniciado e recrie os LoadBalancers.

    1. Reduzir a escala do operador do Ingress.
        kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0
        ```
    1. Exclua o LoadBalancers no namespace `openshift-ingress`.
    ```sh {: pre}
        kubectl delete svc -n openshift-ingress LB-NAME
        ```
    1. Remova as sub-redes móveis de seu cluster.
    ```sh {: pre}
        ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID
        ```
    
    
  7. Aguarde alguns minutos para que o comando de remoção seja concluído e, em seguida, verifique se eles foram removidos revisando o ibm-cloud-provider-vlan-ip-config ConfigMap que armazena as sub-redes e os endereços IP.

    kubectl get cm -n kube-system ibm-cloud-provider-vlan-ip-config -o yaml
    

    Pode levar de 5 a 10 minutos para que a separação seja concluída. Enquanto espera, você pode garantir que as novas sub-redes portáteis que você criou para esse cluster também apareçam no site ConfigMap.

  8. Verifique se os LoadBalancers no namespace openshift-ingress foram recriados e, se sim, verifique se os endereços IP usados são das novas sub-redes. Se forem das sub-redes antigas, exclua-as novamente usando o comando kubectl delete svc -n openshift-ingress LOADBALANCER_NAME.

  9. Após os openshift-ingress LoadBalancers serem recriados com endereços IP das novas sub-redes, inclua os novos endereços IP no registro DNS.

    1. Listar as entradas de DNS
        ibmcloud oc nlb-dns ls -c CLUSTER-ID
        ```
    1. Na saída, localize as entradas `openshift-ingress` e inclua os novos endereços IP neles usando o comando a seguir.
    ```sh {: pre}
        ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    1. Remova os IPs antigos
    ```sh {: pre}
        ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    
  10. Recrie qualquer LoadBalancers que não esteja no namespace openshift-ingress e que você tenha excluído na etapa 3, utilizando o arquivo YAML que você salvou anteriormente.

    kubectl apply -f LB-NAMESPACE.LB-NAME.yaml