클래식 NLB를 에지 작업자 노드로 격리

클래식

다음 단계에서는 클러스터 내의 각 공용 또는 사설 VLAN에 있는 워커 노드에 ‘ dedicated=edge ’ 레이블을 추가합니다. 이 레이블은 해당 작업자 노드에만 네트워크 로드 밸런서(NLB)를 배치하는 데 사용됩니다. 공용 및 사설 NLB 모두 에지 워커 노드에 배포할 수 있습니다.

기존 워커 풀을 사용할 계획이라면, 해당 풀은 클러스터의 모든 존에 걸쳐 있어야 하며, 존당 최소 두 개의 워커 노드를 포함해야 합니다. ibmcloud oc worker-pool label set 명령어를 사용하여 워커 풀에 ‘ dedicated=edge ’라는 레이블을 지정할 수 있습니다.

시작하기 전에

  1. 라벨이 있는 작업자 풀 만들기 dedicated=edge 또는 기존 작업자 풀 중 하나에 레이블을 추가하세요.

    • 작업자 풀을 생성하려면 다음을 사용할 수 있습니다.worker-pool create classic 명령.
        ibmcloud oc worker-pool create classic --name POOL_NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone WORKERS_PER_ZONE --hardware ISOLATION --label dedicated=edge
        ```
    * 기존 작업자 풀에 레이블을 지정하려면 다음을 사용할 수 있습니다.`worker-pool label set` [명령](/docs/openshift?topic=openshift-kubernetes-service-cli#worker-pool-label-set-cli).
    ```sh {: pre}
        ibmcloud oc worker-pool label set --cluster CLUSTER --worker-pool POOL --label dedicated=edge
        ```
    
  2. 작업자 풀 및 작업자 노드에 dedicated=edge 레이블이 있는지 확인하십시오.

    • 작업자 풀을 확인하려면 다음을 실행하세요.get 명령.
        ibmcloud oc worker-pool get --cluster CLUSTER_NAME_OR_ID --worker-pool WORKER_POOL_NAME_OR_ID
        ```
    * 개별 작업자 노드를 확인하려면 다음 명령의 출력에서 **Labels** 필드를 검토하십시오.
    ```sh {: pre}
        oc describe node <worker_node_private_IP>
        ```
    
    
    
    
  3. 클러스터의 모든 기존 NLB를 검색하십시오. 출력 결과에서 각 로드 밸런서의 네임스페이스와 이름을 확인하십시오.

    oc get services --all-namespaces | grep LoadBalancer
    

    출력 예:

    PORT(S)                      AGE
    router-default
    80:31228/TCP,443:31655/TCP   4h54m
    LoadBalancer   172.21.71.79    169.46.17.2
    
  4. 이전 단계의 출력을 사용하여 각 NLB에 대해 다음 명령을 실행하십시오. 이 명령은 NLB를 에지 작업자 노드에 재배치합니다.

    oc get service -n <namespace> <name> -o yaml | oc apply -f -
    

    출력 예:

    service "router-default" configured
    
  5. 네트워킹 워크로드가 에지 노드에만 제한되어 있는지 확인하려면, 로드 밸런서가 에지 노드에 스케줄링되어 있고 비에지 노드에는 스케줄링되어 있지 않은지 확인하십시오.

    • NLB 팟(pod)
      1. NLB 팟(Pod)이 에지 노드에 배치되었는지 확인하십시오. 이전 단계의 출력 결과에 나열된 로드 밸런서 서비스의 외부 IP 주소를 검색하십시오. 마침표(. ) 하이픈 포함(- ). 다음 예에서는 crc81nk5l10gfhdql4i3qg, NLB의 외부 IP 주소는 다음과 같습니다.169.46.17.2.
        oc describe nodes -l dedicated=edge | grep "169-46-17-2"
        
        출력 예:
        ibm-system                 ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg                 5m (0%)       0 (0%)      10Mi (0%)        0 (0%)
        ibm-system                 ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r                 5m (0%)       0 (0%)      10Mi (0%)        0 (0%)
        
      2. Confirm that no NLB pods are deployed to non-edge nodes. 외부 IP 주소가 169.46.17.2 인 ‘ public-crc81nk5l10gfhdql4i3qg-nlb1 ’ NLB의 예시:
        oc describe nodes -l dedicated!=edge | grep "169-46-17-2"
        
        • If the NLB pods are correctly deployed to edge nodes, no NLB pods are returned. Your NLBs are successfully rescheduled onto only edge worker nodes.
        • If NLB pods are returned, continue to the next step.
  6. NLB 팟(pod)이 여전히 비-에지 노드에 배치되어 있는 경우, 에지 노드에 재배치될 수 있도록 해당 팟(pod)을 삭제할 수 있습니다.

    한 번에 하나의 파드만 삭제하고, 다른 파드를 삭제하기 전에 해당 파드가 에지 노드로 재스케줄링되었는지 확인하십시오.

    1. 팟(Pod)을 삭제하십시오. 예를 들어, public-crc81nk5l10gfhdql4i3qg-alb1 의 NLB 포드 중 하나가 에지 노드에 스케줄링되지 않은 경우:
        oc delete pod ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg -n ibm-system
        ```
    2. 해당 팟(Pod)이 에지 작업자 노드에 다시 스케줄되었는지 확인하십시오. 재스케줄링은 자동이지만 몇 분 정도 소요될 수 있습니다. 외부 IP 주소가 `169.46.17.2` 인 ‘ `public-crc81nk5l10gfhdql4i3qg-alb1` ’ NLB의 예시:
    ```sh {: pre}
        oc describe nodes -l dedicated=edge | grep "169-46-17-2"
        ```
        출력 예:
    
        ```sh {: screen}
        ibm-system                 ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-wz6dg                 5m (0%)       0 (0%)      10Mi (0%)        0 (0%)
        ibm-system                 ibm-cloud-provider-ip-169-46-17-2-76fcb4965d-2z64r                 5m (0%)       0 (0%)      10Mi (0%)        0 (0%)
        ```
    
    
    

dedicated=edge 를 사용하여 워커 풀 내의 워커 노드에 레이블을 지정하고, 기존 NLB를 모두 에지 노드에 다시 배포했습니다. 클러스터에 추가되는 이후의 모든 NLB도 에지 워커 풀의 에지 노드에 배포됩니다. 다음으로 다른 워크로드가 에지 작업자 노드에서 실행되지 않도록 하고 작업자 노드에서 NodePort에 대한 인바운드 트래픽을 차단하십시오.