26.2. OpenShift SDN 네트워크 플러그인으로 마이그레이션


클러스터 관리자는 OVN-Kubernetes 네트워크 플러그인에서 OpenShift SDN 네트워크 플러그인으로 마이그레이션할 수 있습니다.

OpenShift SDN에 대한 자세한 내용은 OpenShift SDN 네트워크 플러그인 정보를 참조하십시오.

26.2.1. 마이그레이션 프로세스의 작동 방식

다음 표는 프로세스의 사용자 시작 단계와 마이그레이션이 수행하는 작업 간에 분할하여 마이그레이션 프로세스를 요약합니다.

표 26.2. OVN-Kubernetes에서 OpenShift SDN으로 마이그레이션
사용자 시작 단계마이그레이션 활동

cluster 라는 Network.operator.openshift.io CR(사용자 정의 리소스)의 migration 필드를 OpenShiftSDN 으로 설정합니다. 값으로 설정하기 전에 migration 필드가 null인지 확인합니다.

CNO(Cluster Network Operator)
cluster라는 Network.config.openshift.io CR의 상태를 적절하게 업데이트합니다.
Machine Config Operator (MCO)
OpenShift SDN에 필요한 systemd 구성에 대한 업데이트를 롤아웃합니다. MCO는 기본적으로 풀당 단일 머신을 업데이트하여 기본적으로 클러스터 크기에 따라 마이그레이션에 걸리는 총 시간을 생성합니다.

Network.config.openshift.io CR의 networkType 필드를 업데이트합니다.

CNO

다음과 같은 작업을 수행합니다.

  • OVN-Kubernetes 컨트롤 플레인 Pod를 제거합니다.
  • OpenShift SDN 컨트롤 플레인 포드를 배포합니다.
  • 새 네트워크 플러그인을 반영하도록 Multus 오브젝트를 업데이트합니다.

클러스터의 각 노드를 재부팅합니다.

Cluster
노드가 재부팅되면 클러스터는 OpenShift SDN 클러스터 네트워크의 포드에 IP 주소를 할당합니다.

26.2.2. OpenShift SDN 네트워크 플러그인으로 마이그레이션

클러스터 관리자는 오프라인 마이그레이션 방법을 사용하여 OpenShift SDN CNI(Container Network Interface) 네트워크 플러그인으로 롤백할 수 있습니다. 마이그레이션 중에 클러스터의 모든 노드를 수동으로 재부팅해야 합니다. 오프라인 마이그레이션 방법을 사용하면 클러스터에 연결할 수 없는 몇 가지 다운타임이 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OVN-Kubernetes 네트워크 플러그인으로 구성된 인프라에 설치된 클러스터입니다.
  • etcd 데이터베이스의 최근 백업을 사용할 수 있습니다.
  • 각 노드에 대해 재부팅을 수동으로 트리거할 수 있습니다.
  • 클러스터가 오류 없이 알려진 정상 상태입니다.

절차

  1. MCO(Machine Config Operator)에서 관리하는 모든 머신 구성 풀을 중지합니다.

    • CLI에 다음 명령을 입력하여 마스터 구성 풀을 중지합니다.

      $ oc patch MachineConfigPool master --type='merge' --patch \
        '{ "spec": { "paused": true } }'
    • CLI에 다음 명령을 입력하여 작업자 머신 구성 풀을 중지합니다.

      $ oc patch MachineConfigPool worker --type='merge' --patch \
        '{ "spec":{ "paused": true } }'
  2. 마이그레이션을 준비하려면 CLI에 다음 명령을 입력하여 migration 필드를 null 로 설정합니다.

    $ oc patch Network.operator.openshift.io cluster --type='merge' \
      --patch '{ "spec": { "migration": null } }'
  3. CLI에 다음 명령을 입력하여 마이그레이션 상태가 Network.config.openshift.io 오브젝트에 비어 있는지 확인합니다. 빈 명령 출력은 오브젝트가 마이그레이션 작업에 없음을 나타냅니다.

    $ oc get Network.config cluster -o jsonpath='{.status.migration}'
  4. CLI에 다음 명령을 입력하여 네트워크 플러그인을 OpenShift SDN으로 설정하려면 Network.operator.openshift.io 오브젝트에 패치를 적용합니다.

    $ oc patch Network.operator.openshift.io cluster --type='merge' \
      --patch '{ "spec": { "migration": { "networkType": "OpenShiftSDN" } } }'
    중요

    패치 작업이 Network.operator.openshift.io 오브젝트에서 종료되기 전에 Network.config.openshift.io 오브젝트에 패치를 적용한 경우 CNO(Cluster Network Operator)가 성능 저하 상태로 전환되어 CNO가 degraded 상태에서 복구될 때까지 약간의 지연이 발생합니다.

  5. CLI에 다음 명령을 입력하여 Network.config.openshift.io 클러스터 오브젝트의 네트워크 플러그인의 마이그레이션 상태가 OpenShiftSDN 인지 확인합니다.

    $ oc get Network.config cluster -o jsonpath='{.status.migration.networkType}'
  6. CLI에 다음 명령을 입력하여 네트워크 플러그인을 OpenShift SDN으로 설정하려면 Network.config.openshift.io 오브젝트에 패치를 적용합니다.

    $ oc patch Network.config.openshift.io cluster --type='merge' \
      --patch '{ "spec": { "networkType": "OpenShiftSDN" } }'
  7. 선택 사항: 동일한 OpenShift SDN으로 여러 OVN-Kubernetes 기능의 자동 마이그레이션을 비활성화합니다.

    • 송신 IP
    • 송신 방화벽
    • 멀티 캐스트

    이전에 명시된 OpenShift SDN 기능에 대한 구성 자동 마이그레이션을 비활성화하려면 다음 키를 지정합니다.

    $ oc patch Network.operator.openshift.io cluster --type='merge' \
      --patch '{
        "spec": {
          "migration": {
            "networkType": "OpenShiftSDN",
            "features": {
              "egressIP": <bool>,
              "egressFirewall": <bool>,
              "multicast": <bool>
            }
          }
        }
      }'

    다음과 같습니다.

    bool: 기능의 마이그레이션을 활성화할지 여부를 지정합니다. 기본값은 true입니다.

  8. 선택 사항: OpenShift SDN에 대해 네트워크 인프라 요구 사항을 충족하도록 다음 설정을 사용자 정의할 수 있습니다.

    • 최대 전송 단위(MTU)
    • VXLAN 포트

    이전에 명시된 설정 중 하나 또는 둘 다를 사용자 지정하려면 CLI에 다음 명령을 사용자 지정하고 입력합니다. 기본값을 변경할 필요가 없는 경우 패치에서 키를 생략합니다.

    $ oc patch Network.operator.openshift.io cluster --type=merge \
      --patch '{
        "spec":{
          "defaultNetwork":{
            "openshiftSDNConfig":{
              "mtu":<mtu>,
              "vxlanPort":<port>
        }}}}'
    mtu
    VXLAN 오버레이 네트워크의 MTU입니다. MTU 값은 일반적으로 자동으로 지정되지만 클러스터의 모든 노드가 동일한 MTU를 사용하지 않을 때는 최소 노드 MTU 값에서 50을 뺀 값으로 명시적으로 설정해야 합니다.
    port
    VXLAN 오버레이 네트워크용 UDP 포트입니다. 값을 지정하지 않으면 기본값은 4789입니다. 이 포트는 OVN-Kubernetes에서 사용하는 Geneve 포트와 같을 수 없습니다. Geneve 포트의 기본값은 6081입니다.

    패치 명령 예

    $ oc patch Network.operator.openshift.io cluster --type=merge \
      --patch '{
        "spec":{
          "defaultNetwork":{
            "openshiftSDNConfig":{
              "mtu":1200
        }}}}'

  9. 클러스터의 각 노드를 재부팅합니다. 다음 방법 중 하나를 사용하여 클러스터의 노드를 재부팅할 수 있습니다.

    • oc rsh 명령을 사용하면 다음과 유사한 bash 스크립트를 사용할 수 있습니다.

      #!/bin/bash
      readarray -t POD_NODES <<< "$(oc get pod -n openshift-machine-config-operator -o wide| grep daemon|awk '{print $1" "$7}')"
      
      for i in "${POD_NODES[@]}"
      do
        read -r POD NODE <<< "$i"
        until oc rsh -n openshift-machine-config-operator "$POD" chroot /rootfs shutdown -r +1
          do
            echo "cannot reboot node $NODE, retry" && sleep 3
          done
      done
    • ssh 명령을 사용하면 다음과 유사한 bash 스크립트를 사용할 수 있습니다. 이 스크립트는 sudo가 암호를 입력하라는 메시지를 표시하지 않도록 구성했다고 가정합니다.

      #!/bin/bash
      
      for ip in $(oc get nodes  -o jsonpath='{.items[*].status.addresses[?(@.type=="InternalIP")].address}')
      do
         echo "reboot node $ip"
         ssh -o StrictHostKeyChecking=no core@$ip sudo shutdown -r -t 3
      done
  10. Multus 데몬 세트 롤아웃이 완료될 때까지 기다립니다. 다음 명령을 실행하여 롤아웃 상태를 확인합니다.

    $ oc -n openshift-multus rollout status daemonset/multus

    Multus pod의 이름은 multus-<xxxxx> 형식이며 여기서 <xxxxx>는 임의 문자 순서입니다. 포드를 다시 시작하는 데 시간이 다소 걸릴 수 있습니다.

    출력 예

    Waiting for daemon set "multus" rollout to finish: 1 out of 6 new pods have been updated...
    ...
    Waiting for daemon set "multus" rollout to finish: 5 of 6 updated pods are available...
    daemon set "multus" successfully rolled out

  11. 클러스터의 노드가 재부팅되고 multus Pod가 롤아웃되면 다음 명령을 실행하여 모든 머신 구성 풀을 시작합니다.

    • 마스터 구성 풀을 시작합니다.

      $ oc patch MachineConfigPool master --type='merge' --patch \
        '{ "spec": { "paused": false } }'
    • 작업자 구성 풀을 시작합니다.

      $ oc patch MachineConfigPool worker --type='merge' --patch \
        '{ "spec": { "paused": false } }'

    MCO는 각 구성 풀에서 머신을 업데이트하므로 각 노드를 재부팅합니다.

    기본적으로 MCO는 한 번에 풀당 단일 머신을 업데이트하므로 마이그레이션이 완료하는 데 필요한 시간은 클러스터 크기와 함께 증가합니다.

  12. 호스트의 새 머신 구성 상태를 확인합니다.

    1. 머신 구성 상태 및 적용된 머신 구성 이름을 나열하려면 CLI에 다음 명령을 입력합니다.

      $ oc describe node | egrep "hostname|machineconfig"

      출력 예

      kubernetes.io/hostname=master-0
      machineconfiguration.openshift.io/currentConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b
      machineconfiguration.openshift.io/desiredConfig: rendered-master-c53e221d9d24e1c8bb6ee89dd3d8ad7b
      machineconfiguration.openshift.io/reason:
      machineconfiguration.openshift.io/state: Done

      다음 구문이 올바른지 확인합니다.

      • machineconfiguration.openshift.io/state 필드의 값은 Done입니다.
      • machineconfiguration.openshift.io/currentConfig 필드의 값은 machineconfiguration.openshift.io/desiredConfig 필드의 값과 동일합니다.
    2. 머신 구성이 올바른지 확인하려면 CLI에 다음 명령을 입력합니다.

      $ oc get machineconfig <config_name> -o yaml

      여기서 <config_name>machineconfiguration.openshift.io/currentConfig 필드에서 머신 구성의 이름입니다.

  13. 마이그레이션이 성공했는지 확인합니다.

    1. 네트워크 플러그인이 OpenShift SDN인지 확인하려면 CLI에 다음 명령을 입력합니다. status.networkType 값은 OpenShiftSDN이어야 합니다.

      $ oc get Network.config/cluster -o jsonpath='{.status.networkType}{"\n"}'
    2. 클러스터 노드가 Ready 상태인지 확인하려면 CLI에 다음 명령을 입력합니다.

      $ oc get nodes
    3. 노드가 NotReady 상태에 있는 경우 머신 구성 데몬 포드 로그를 조사하고 오류를 해결합니다.

      1. Pod를 나열하려면 CLI에 다음 명령을 입력합니다.

        $ oc get pod -n openshift-machine-config-operator

        출력 예

        NAME                                         READY   STATUS    RESTARTS   AGE
        machine-config-controller-75f756f89d-sjp8b   1/1     Running   0          37m
        machine-config-daemon-5cf4b                  2/2     Running   0          43h
        machine-config-daemon-7wzcd                  2/2     Running   0          43h
        machine-config-daemon-fc946                  2/2     Running   0          43h
        machine-config-daemon-g2v28                  2/2     Running   0          43h
        machine-config-daemon-gcl4f                  2/2     Running   0          43h
        machine-config-daemon-l5tnv                  2/2     Running   0          43h
        machine-config-operator-79d9c55d5-hth92      1/1     Running   0          37m
        machine-config-server-bsc8h                  1/1     Running   0          43h
        machine-config-server-hklrm                  1/1     Running   0          43h
        machine-config-server-k9rtx                  1/1     Running   0          43h

        구성 데몬 포드의 이름은 다음 형식입니다. machine-config-daemon-<seq>. <seq> 값은 임의 5자 영숫자 순서입니다.

      2. 이전 출력에 표시된 각 머신 구성 데몬 포드에 대한 Pod 로그를 표시하려면 CLI에 다음 명령을 입력합니다.

        $ oc logs <pod> -n openshift-machine-config-operator

        여기서 pod는 머신 구성 데몬 포드의 이름입니다.

      3. 이전 명령의 출력에 표시된 로그의 오류를 해결합니다.
    4. Pod가 오류 상태가 아닌지 확인하려면 CLI에 다음 명령을 입력합니다.

      $ oc get pods --all-namespaces -o wide --sort-by='{.spec.nodeName}'

      노드의 Pod가 오류 상태인 경우 해당 노드를 재부팅합니다.

  14. 마이그레이션이 성공하고 클러스터가 양호한 상태인 경우에만 다음 단계를 완료합니다.

    1. Cluster Network Operator 구성 오브젝트에서 마이그레이션 구성을 제거하려면 CLI에 다음 명령을 입력합니다.

      $ oc patch Network.operator.openshift.io cluster --type='merge' \
        --patch '{ "spec": { "migration": null } }'
    2. OVN-Kubernetes 구성을 제거하려면 CLI에 다음 명령을 입력합니다.

      $ oc patch Network.operator.openshift.io cluster --type='merge' \
        --patch '{ "spec": { "defaultNetwork": { "ovnKubernetesConfig":null } } }'
    3. OVN-Kubernetes 네트워크 공급자 네임스페이스를 제거하려면 CLI에 다음 명령을 입력합니다.

      $ oc delete namespace openshift-ovn-kubernetes

26.2.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.