He eliminado una subred portátil y ahora los equilibradores de carga de mi clúster Classic están fallando. ¿Cómo puedo recuperar?

Clásico

Soluciona los problemas que surjan al recuperar subredes en la red de tu clúster.

Su cluster está experimentando errores de red.

Se ha suprimido una subred portátil.

Realice los siguientes pasos.

  1. Para el clúster que está experimentando problemas, ejecute el mandato siguiente y anote el ID de clúster.

    ibmcloud oc cluster ls
    
  2. Liste las subredes que utiliza el clúster. En la salida, anote las subredes que utiliza el clúster.

    ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID
    
  3. Liste las subredes de su cuenta. Compruebe si faltan las subredes que ha encontrado en el paso 1 en la lista de subredes de su cuenta. Esto significa que el clúster está utilizando una subred que se ha suprimido, lo que hace que el equilibrador de carga falle.

    ibmcloud sl subnet list
    
    ibmcloud sl subnet detail SUBNET-ID
    
  4. Para cada subred que se ha suprimido, vuelva a crearla. Si necesita direcciones IP públicas para sus ALBs o LoadBalancers, especifique el ID de la VLAN pública de sus nodos trabajadores; para IPs privadas especifique el ID de la VLAN privada de sus nodos trabajadores.

    ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID
    
  5. Busque cualquier LoadBalancers que utilice direcciones IP en las subredes portátiles suprimidas, guárdelas y, a continuación, suprímalas. No suprima los LoadBalancers en el espacio de nombres openshift-ingress, ya que se suprimen más adelante en estos pasos.

    1. Busque los detalles de LoadBalancer y anote las direcciones IP que utilizan.
        kubectl get svc -A -o wide | grep LoadBalancer
        ```
    1. Para cada LoadBalancer que no esté en el espacio de nombres de `openshift-ingress` que utilice una dirección IP portátil, guarde los valores en un archivo YAML.
      ```sh {: pre}
      kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml
    
    1. Suprima LoadBalancer.
     ```sh {: pre}
     kubectl delete svc -n LB-NAMESPACE LB-NAME
     ```
    
  6. Complete los pasos siguientes rápidamente, porque la subred portátil debe desconectarse antes de que se reinicie el pod de openshift-ingress-operator y vuelva a crear los LoadBalancers.

    1. Reducir la escala del operador de Ingress.
        kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0
        ```
    1. Suprima los LoadBalancers en el espacio de nombres `openshift-ingress`.
    ```sh {: pre}
        kubectl delete svc -n openshift-ingress LB-NAME
        ```
    1. Desconecte las subredes portátiles del clúster.
    ```sh {: pre}
        ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID
        ```
    
    
  7. Espere unos minutos a que finalice el mandato detach y, a continuación, compruebe que se han desconectado revisando el ibm-cloud-provider-vlan-ip-config ConfigMap que almacena las subredes y las direcciones IP.

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

    La desconexión puede tardar entre 5 y 10 minutos en completarse. Mientras espera, puede asegurarse de que las nuevas subredes portátiles que ha creado para este clúster también aparecen en ConfigMap.

  8. Compruebe si los LoadBalancers del espacio de nombres openshift-ingress se han vuelto a crear y, si es así, compruebe si las direcciones IP utilizadas proceden de las nuevas subredes. Si son de las subredes antiguas, vuélvalo a suprimir utilizando el mandato kubectl delete svc -n openshift-ingress LOADBALANCER_NAME.

  9. Después de que los openshift-ingress LoadBalancers vuelvan a crear con direcciones IP de las nuevas subredes, añada las nuevas direcciones IP al registro DNS.

    1. Liste las entradas DNS.
        ibmcloud oc nlb-dns ls -c CLUSTER-ID
        ```
    1. En la salida, busque las entradas `openshift-ingress` y añada las nuevas direcciones IP a las mismas utilizando el mandato siguiente.
    ```sh {: pre}
        ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    1. Elimine las IP antiguas.
    ```sh {: pre}
        ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    
  10. Vuelve a crear cualquier objeto « LoadBalancers » que no pertenezca al espacio de nombres « openshift-ingress » y que hayas eliminado en el paso 3, utilizando el archivo YAML que guardaste anteriormente.

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