이동식 서브넷을 삭제했더니, 이제 Classic 클러스터의 로드 밸런서가 오류가 발생하고 있습니다. 어떻게 복구합니까?

클래식

클러스터 네트워크에서 서브넷을 복구할 때 발생하는 문제를 해결합니다.

클러스터에 네트워크 오류가 발생하고 있습니다.

포터블 서브넷이 삭제되었습니다.

다음 단계를 완료하십시오.

  1. 문제가 발생한 클러스터의 경우 다음 명령을 실행하고 클러스터 ID를 기록해 두십시오.

    ibmcloud oc cluster ls
    
  2. 클러스터가 사용 중인 서브넷을 나열하십시오. 출력에서 클러스터가 사용 중인 서브넷을 기록해 두십시오.

    ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID
    
  3. 계정의 서브넷을 나열하십시오. 1단계에서찾은 서브넷이 계정의 서브넷 목록에서 누락되었는지 확인하십시오. 이는 클러스터가 삭제된 서브넷을 사용 중이며 이로 인해 로드 밸런서가 실패함을 의미합니다.

    ibmcloud sl subnet list
    
    ibmcloud sl subnet detail SUBNET-ID
    
  4. 삭제된 각 서브넷에 대해 다시 작성하십시오. ALB 또는 LoadBalancers, 공용 IP 주소가 필요한 경우 워커 노드의 공용 VLAN ID를 지정하고, 사설 IP의 경우 워커 노드의 사설 VLAN ID를 지정합니다.

    ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID
    
  5. 삭제된 포터블 서브넷에서 IP 주소를 사용하는 LoadBalancers 를 찾아 저장한 후 삭제하십시오. openshift-ingress 네임스페이스에서 LoadBalancers 는 나중에 이 단계에서 삭제되므로 삭제하지 마십시오.

    1. LoadBalancer 세부사항을 찾아 사용하는 IP 주소를 기록해 두십시오.
        kubectl get svc -A -o wide | grep LoadBalancer
        ```
    1. 포터블 IP 주소를 사용하는 `openshift-ingress` 네임스페이스에 없는 각 LoadBalancer 에 대해 YAML 파일에 설정을 저장하십시오.
      ```sh {: pre}
      kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml
    
    1. LoadBalancer를 삭제하십시오.
     ```sh {: pre}
     kubectl delete svc -n LB-NAMESPACE LB-NAME
     ```
    
  6. openshift-ingress-operator 팟 (Pod) 이 다시 시작되고 LoadBalancers를 다시 작성하기 전에 포터블 서브넷을 분리해야 하므로 다음 단계를 빠르게 완료하십시오.

    1. 잉그레스 오퍼레이터의 규모를 축소하십시오.
        kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0
        ```
    1. `openshift-ingress` 네임스페이스에서 LoadBalancers 를 삭제하십시오.
    ```sh {: pre}
        kubectl delete svc -n openshift-ingress LB-NAME
        ```
    1. 클러스터에서 포터블 서브넷을 분리하십시오.
    ```sh {: pre}
        ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID
        ```
    
    
  7. 분리 명령이 완료될 때까지 몇 분 동안 기다린 후 서브넷 및 IP 주소를 저장하는 ibm-cloud-provider-vlan-ip-config ConfigMap 을 검토하여 분리되었는지 확인하십시오.

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

    분리를 완료하는 데 5-10분이 소요될 수 있습니다. 기다리는 동안 이 클러스터에 대해 생성한 새 휴대용 서브넷이 ConfigMap 에도 표시되는지 확인할 수 있습니다.

  8. openshift-ingress 네임스페이스의 LoadBalancers 가 다시 작성되었는지 확인하고 다시 작성되었으면 사용된 IP 주소가 새 서브넷의 IP 주소인지 확인하십시오. 이전 서브넷의 서브넷인 경우 kubectl delete svc -n openshift-ingress LOADBALANCER_NAME 명령을 사용하여 다시 삭제하십시오.

  9. openshift-ingress LoadBalancers 가 새 서브넷의 IP 주소를 사용하여 다시 작성한 후 새 IP 주소를 DNS 레코드에 추가하십시오.

    1. DNS 항목을 나열하십시오.
        ibmcloud oc nlb-dns ls -c CLUSTER-ID
        ```
    1. 출력에서 `openshift-ingress` 항목을 찾고 다음 명령을 사용하여 새 IP 주소를 추가하십시오.
    ```sh {: pre}
        ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    1. 이전 IP를 제거하십시오.
    ```sh {: pre}
        ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME
        ```
    
  10. 3단계에서 삭제한, ‘ openshift-ingress ’ 네임스페이스에 속하지 않는 모든 ‘ LoadBalancers ’을 앞서 저장해 둔 YAML 파일을 사용하여 다시 생성하십시오.

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