J'ai supprimé un sous-réseau portable et, depuis, les équilibreurs de charge de mon cluster Classic ne fonctionnent plus. Comment puis-je récupérer?

Classique

Dépannage des problèmes liés à la restauration des sous-réseaux dans le réseau de votre cluster.

Votre cluster rencontre des erreurs de réseau.

Un sous-réseau portable a été supprimé.

Procédez comme suit.

  1. Pour le cluster qui rencontre des problèmes, exécutez la commande suivante et notez l'ID du cluster.

    ibmcloud oc cluster ls
    
  2. Répertoriez les sous-réseaux utilisés par votre cluster. Dans la sortie, notez les sous-réseaux utilisés par votre cluster.

    ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID
    
  3. Répertoriez les sous-réseaux de votre compte. Vérifiez si des sous-réseaux que vous avez trouvés à l'étape 1 sont manquants dans la liste des sous-réseaux de votre compte. Cela signifie que votre cluster utilise un sous-réseau qui a été supprimé, ce qui entraîne l'échec de votre équilibreur de charge.

    ibmcloud sl subnet list
    
    ibmcloud sl subnet detail SUBNET-ID
    
  4. Pour chaque sous-réseau qui a été supprimé, recréez-le. Si vous avez besoin d'adresses IP publiques pour vos ALB ou LoadBalancers, indiquez l'ID VLAN public de vos nœuds de travail ; pour les IP privées, indiquez l'ID VLAN privé de vos nœuds de travail.

    ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID
    
  5. Recherchez les LoadBalancers qui utilisent des adresses IP dans les sous-réseaux portables supprimés, sauvegardez-les, puis supprimez-les. Ne supprimez pas les LoadBalancers dans l'espace de nom openshift-ingress, car ils sont supprimés ultérieurement dans ces étapes.

    1. Recherchez les détails de votre LoadBalancer et notez les adresses IP qu'ils utilisent.
        kubectl get svc -A -o wide | grep LoadBalancer
        ```
    1. Pour chaque LoadBalancer qui ne se trouve pas dans l'espace de nom `openshift-ingress` qui utilise une adresse IP portable, sauvegardez les paramètres dans un fichier YAML.
      ```sh {: pre}
      kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml
    
    1. Supprimez l' LoadBalancer.
     ```sh {: pre}
     kubectl delete svc -n LB-NAMESPACE LB-NAME
     ```
    
  6. Effectuez les étapes suivantes rapidement, car le sous-réseau portable doit être déconnecté avant que le pod openshift-ingress-operator ne redémarre et ne recrée les LoadBalancers.

    1. Réduire l'opérateur Ingress.
        kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0
        ```
    1. Supprimez les LoadBalancers dans l'espace de nom `openshift-ingress`.
    ```sh {: pre}
        kubectl delete svc -n openshift-ingress LB-NAME
        ```
    1. Déconnectez les sous-réseaux portables de votre cluster.
    ```sh {: pre}
        ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID
        ```
    
    
  7. Attendez quelques minutes que la commande de déconnexion se termine, puis vérifiez qu'elle a été déconnectée en consultant la ibm-cloud-provider-vlan-ip-config mappe de configuration ConfigMap qui stocke les sous-réseaux et les adresses IP.

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

    Le processus de détachement peut prendre entre 5 et 10 minutes. En attendant, vous pouvez vous assurer que les nouveaux sous-réseaux portables que vous avez créés pour ce cluster apparaissent également sur le site ConfigMap.

  8. Vérifiez si les LoadBalancers de l'espace de nom openshift-ingress ont été recréés et, si tel est le cas, vérifiez si les adresses IP utilisées proviennent des nouveaux sous-réseaux. S'ils proviennent des anciens sous-réseaux, supprimez-les à nouveau à l'aide de la commande kubectl delete svc -n openshift-ingress LOADBALANCER_NAME.

  9. Après avoir recréé les openshift-ingress LoadBalancers avec les adresses IP des nouveaux sous-réseaux, ajoutez les nouvelles adresses IP à l'enregistrement DNS.

    1. Répertoriez les entrées DNS.
        ibmcloud oc nlb-dns ls -c CLUSTER-ID
        ```
    1. Dans la sortie, recherchez les entrées `openshift-ingress` et ajoutez-leur les nouvelles adresses IP à l'aide de la commande suivante.
    ```sh {: pre}
        ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    1. Supprimez les anciennes adresses IP.
    ```sh {: pre}
        ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    
  10. Recréez toutes les instances « LoadBalancers » ne figurant pas dans l'espace de noms « openshift-ingress » que vous avez supprimées à l'étape 3, à l'aide du fichier YAML que vous avez enregistré précédemment.

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