Ho eliminato una sottorete portatile e ora i bilanciatori di carico del mio cluster Classic non funzionano più. Come posso recuperare?

Classico

Risolvi i problemi relativi al recupero delle sottoreti nella rete del cluster.

Il cluster sta riscontrando errori di rete.

È stata eliminata una sottorete portatile.

Completare la seguente procedura.

  1. Per il cluster che sta riscontrando dei problemi, esegui questo comando e prendi nota dell'ID cluster.

    ibmcloud oc cluster ls
    
  2. Elenca le sottoreti utilizzate dal cluster. Nell'output, prendi nota delle sottoreti che il tuo cluster utilizza.

    ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID
    
  3. Elenca le sottoreti nel tuo account. Controlla se le sottoreti che hai trovato nel passo 1 mancano dall'elenco di sottoreti nel tuo account. Ciò significa che il tuo cluster sta utilizzando una sottorete che è stata eliminata, che sta causando il malfunzionamento del tuo programma di bilanciamento del carico.

    ibmcloud sl subnet list
    
    ibmcloud sl subnet detail SUBNET-ID
    
  4. Per ogni sottorete che è stata eliminata, ricrearla. Se avete bisogno di indirizzi IP pubblici per i vostri ALB o LoadBalancers, specificate l'ID VLAN pubblico dei vostri nodi worker; per gli IP privati, specificate l'ID VLAN privato dei vostri nodi worker.

    ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID
    
  5. Trova tutti i LoadBalancers che utilizzano gli indirizzi IP nelle sottoreti portatili eliminate, salvali e quindi eliminali. Non eliminare i LoadBalancers nello spazio dei nomi openshift-ingress, poiché vengono eliminati più avanti in questa procedura.

    1. Trova i tuoi dettagli LoadBalancer e prendi nota degli indirizzi IP che utilizzano.
        kubectl get svc -A -o wide | grep LoadBalancer
        ```
    1. Per ogni LoadBalancer non presente nello spazio dei nomi `openshift-ingress` che utilizza un indirizzo IP portatile, salva le impostazioni in un file YAML.
      ```sh {: pre}
      kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml
    
    1. Elimina LoadBalancer.
     ```sh {: pre}
     kubectl delete svc -n LB-NAMESPACE LB-NAME
     ```
    
  6. Completa rapidamente i seguenti passi, perché la sottorete portatile deve essere scollegata prima che il pod openshift-ingress-operator riavvii e ricrea i LoadBalancers.

    1. Ridimensionare l'operatore Ingress.
        kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0
        ```
    1. Elimina i LoadBalancers nello spazio dei nomi `openshift-ingress`.
    ```sh {: pre}
        kubectl delete svc -n openshift-ingress LB-NAME
        ```
    1. Scollega le sottoreti portatili dal tuo cluster.
    ```sh {: pre}
        ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID
        ```
    
    
  7. Attendere alcuni minuti per il completamento del comando di scollegamento, quindi verificare che siano stati scollegati riesaminando la ibm-cloud-provider-vlan-ip-config ConfigMap che memorizza le sottoreti e gli indirizzi IP.

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

    Il processo di distacco potrebbe richiedere dai 5 ai 10 minuti. Nell'attesa, ci si può assicurare che le nuove sottoreti portatili create per questo cluster appaiano anche nel sito ConfigMap.

  8. Controlla se i LoadBalancers nello spazio dei nomi openshift-ingress sono stati ricreati e, in caso affermativo, controlla se gli indirizzi IP utilizzati provengono dalle nuove sottoreti. Se provengono dalle vecchie sottoreti, eliminarle di nuovo utilizzando il comando kubectl delete svc -n openshift-ingress LOADBALANCER_NAME.

  9. Dopo che i openshift-ingress LoadBalancers hanno ricreato con gli indirizzi IP dalle nuove sottoreti, aggiungi i nuovi indirizzi IP al record DNS.

    1. Elencare le voci DNS.
        ibmcloud oc nlb-dns ls -c CLUSTER-ID
        ```
    1. Nell'output, trova le voci `openshift-ingress` e aggiungi i nuovi indirizzi IP utilizzando il seguente comando.
    ```sh {: pre}
        ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    1. Rimuovere i vecchi IP.
    ```sh {: pre}
        ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    
  10. Ricrea qualsiasi file LoadBalancers non appartenente allo spazio dei nomi openshift-ingress che hai eliminato al punto 3, utilizzando il file YAML che hai salvato in precedenza.

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