클러스터, 작업자 노드 및 클러스터 컴포넌트 업데이트

마스터 노드, 워커 노드 및 클러스터 구성 요소를 올바른 순서대로 업데이트하여 클러스터의 보안과 지원을 유지하십시오. 순서를 따르지 않고 업데이트하면 버전 불일치로 인한 오류나 예기치 않은 가동 중단이 발생할 수 있습니다.

다음 순서대로 업데이트를 완료하십시오:

  1. 클러스터 마스터를 업데이트하십시오.
  2. 인프라 유형에 따라 클래식, VPC 또는 Satellite — 인프라 유형에 따라 선택하십시오. 어떤 유형인지 잘 모르시겠나요? IBM Cloud 콘솔에서 클러스터를 클릭하고 ‘개요’ 탭의 ‘인프라’ 필드를 확인하세요. 여기에는 ‘클래식’, ‘VPC’ 또는 Satellite.
  3. 클러스터 구성 요소 업데이트 Fluentd, Ingress ALB 등과 같이 수동으로 관리하는 경우.
  4. 관리형 애드온을 업데이트합니다.

마스터 업데이트

마스터를 언제 업데이트해야 하는지 어떻게 알 수 있나요?
업데이트가 사용 가능하면 콘솔, 공지사항 및 CLI에서 알림을 받습니다. 또한 지원되는 버전 페이지 를 주기적으로 확인할 수 있습니다.
마스터 브랜치는 최신 버전보다 몇 버전 뒤처져 있을 수 있나요?
API 서버는 현재 버전보다 한 단계 앞선 버전으로만 업데이트할 수 있습니다(n+1).
작업자 노드에서 마스터보다 최신 버전을 실행할 수 있나요?
작업자 노드는 마스터보다 최신 major.minor Kubernetes 버전을 실행할 수 없습니다. 또한, 워커 노드는 마스터 버전보다 소버전만 한 단계 뒤처져 있어야 합니다(n-1). 먼저, 마스터 업데이트 를 통해 최신 Kubernetes 버전으로 업데이트하십시오. 그리고 클러스터의 작업자 노드를 업데이트하십시오.

작업자 노드는 마스터보다 이후 패치 버전을 실행할 수 있습니다(예: 보안 업데이트를 위한 작업자 노드 전용 패치 버전).

패치 업데이트는 어떻게 적용되나요?
기본적으로 마스터에 대한 패치 업데이트는 며칠에 걸쳐 자동으로 적용되므로, 마스터에 적용되기 전에는 마스터 패치 버전이 사용 가능으로 표시되지 않을 수 있습니다. 업데이트 자동화는 비정상 상태이거나 현재 오퍼레이션이 진행 중인 클러스터 또한 건너뜁니다. 마스터를 한 부 버전에서 다른 부 버전으로 업데이트하는 경우에만 필요한 패치와 같은 특정 마스터 수정팩에 대해서는 IBM에서 자동 업데이트를 사용 안함으로 설정할 수 있습니다. 이러한 경우라면, Red Hat OpenShift on IBM Cloud 에서 버전 정보를 확인하여 잠재적인 영향 여부를 파악한 후, 업데이트 자동화 기능이 적용될 때까지 기다리지 않고 직접 ibmcloud oc cluster master update 명령을 안전하게 실행할 수 있습니다.

마스터와는 달리, 작업자 노드는 각 패치 버전에 대해 업데이트해야 합니다.

마스터 업데이트 중에는 어떤 일이 일어나나요?
세 개의 복제본 팟(Pod)에서 마스터가 높은 가용성을 보입니다. 한 번에 한 개의 팟(Pod)을 사용할 수 없는 경우에만 마스터 팟(Pod)에서 롤링 업데이트가 수행됩니다. 업데이트 중 사용자가 클러스터에 액세스하여 클러스터를 변경할 수 있도록 두 인스턴스는 시작되어 실행 중입니다. 작업자 노드, 앱 및 리소스는 계속 실행됩니다.
업데이트를 이전 버전으로 되돌릴 수 있나요?
아니오. 업데이트 프로세스가 발생된 후에는 클러스터를 이전 버전으로 롤백할 수 없습니다. 프로덕션 마스터를 업데이트하기 전에는 반드시 테스트 클러스터를 사용하고 지시사항에 따라 잠재적인 문제를 처리하십시오.
마스터를 업데이트하려면 어떤 절차를 따라야 하나요?
다음 다이어그램은 마스터 업데이트 시 수행 가능한 프로세스를 보여줍니다.

마스터 업데이트 프로세스 다이어그램
Kubernetes 마스터 프로세스 다이어그램 업데이트

클러스터 마스터 업데이트 단계

시작하기 전에, ‘운영자’ 또는 ‘관리자’ IAM 플랫폼 액세스 역할을 보유하고 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.

인증 기관(CA) 인증서 교체 작업이 진행 중인 경우, 교체 작업이 완료될 때까지 마스터 업데이트가 차단됩니다. 시작하기 전에 진행 중인 로테이션의 상태를 확인하십시오.

Red Hat OpenShift 마스터 주 또는 부 버전을 업데이트하려면 다음 작업을 수행하십시오.

  1. Red Hat OpenShift on IBM Cloud 버전 정보 를 검토하고 _마스터 이전에 업데이트_로 표시된 업데이트를 작성하십시오.

  2. Kubernetes 유용한 경고 사항(예: 사용 중단 공지 등)을 모두 검토하십시오.

  3. 클러스터에 설치한 각 추가 기능 및 플러그인에 대해 클러스터 버전 업데이트로 인해 발생할 수 있는 영향을 확인하십시오.

    • 추가 기능 확인

      1. 클러스터 내의 추가 기능을 나열하십시오.
        ibmcloud oc cluster addon ls --cluster CLUSTER
        
      2. 설치된 각 추가 기능에 대해 지원되는 Red Hat OpenShift버전을 확인하십시오.
        ibmcloud oc addon-versions
        
      3. 클러스터를 업데이트하려는 Red Hat OpenShift 버전에서 실행되도록 추가 기능을 업데이트해야 하는 경우 추가 기능을 업데이트하십시오.
    • 플러그인 확인

      1. Helm 카탈로그에서 클러스터에 설치한 플러그인을 찾으십시오.
      2. 사이드 메뉴에서 소스 및 TAR 파일 섹션을 펼치십시오.
      3. 소스 코드를 다운로드하고 여십시오.
      4. 지원되는 버전에 대해서는 README.md 또는 RELEASENOTES.md 파일을 확인하십시오.
      5. 클러스터를 업데이트하려는 Red Hat OpenShift 버전에서 실행되도록 플러그인을 업데이트해야 하는 경우 플러그인 지침에 따라 플러그인을 업데이트하십시오.
  4. IBM Cloud 콘솔을 사용하거나 CLI ibmcloud oc cluster master update 명령을 사용하여 API 서버 및 이와 연관된 마스터 컴포넌트를 업데이트하십시오.

  5. 잠시 기다린 후에 업데이트가 완료되었는지 확인하십시오. IBM Cloud 클러스터 대시보드에서 API 서버 버전을 검토하거나 ibmcloud oc cluster ls를 실행하십시오.

  6. 마스터에서 실행되는 API 서버 버전과 일치하는 oc cli의 버전을 설치하십시오. Kubernetes 서버 버전과 2개 이상의 버전 차이가 나는(n ± 2) oc 클라이언트 버전은 지원되지 않습니다. 로컬 구성을 새로 고치려면 ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID을 실행한 다음, ` `oc version --client을 통해 확인하십시오.

마스터 업데이트가 완료되면 워커 노드를 업데이트하십시오. 이 방법은 사용 중인 인프라 유형에 따라 달라집니다:

  1. 기존 워커 노드 업데이트 — ConfigMap 및 worker update 명령어로 제어되는 롤링 업데이트 방식을 사용합니다.
  2. VPC 워커 노드 업데이트 — VPC 베어 메탈 워커는 worker reload 를 사용하여 현장에서 업데이트되며, VPC VSI 워커는 worker replace --update 를 사용해야 합니다. ConfigMap 의 롤링 업데이트 절차는 아직 VPC 워커 노드에서 지원되지 않습니다.

클래식 작업자 노드 업데이트

기존 인프라 작업자 노드는 해당 위치에서 점진적 업데이트를 수행합니다. 업데이트는 한 번에 사용 불가능한 노드의 수를 정의하는 Kubernetes ConfigMap 에 의해 제어됩니다. ibmcloud oc worker update 명령어는 클래식 워커 노드에서만 지원됩니다.

다음 두 가지 유형의 업데이트를 수행할 수 있습니다:

  • 패치: 보안 수정 사항이 적용되고 최신 패치 버전으로 업데이트됩니다. ibmcloud oc worker reload 또는 ibmcloud oc worker update 을(를) 사용하십시오. 두 명령어 모두 노드를 최신 패치 버전으로 업데이트합니다. update 명령어는 동시에 사용 가능한 모든 major.minor 버전 업데이트를 적용하여 마스터와 일치시킵니다.
  • Major.minor: 워커 노드의 Kubernetes 버전을 마스터와 일치하도록 업데이트합니다. 워커 노드는 마스터보다 최대 한 버전 뒤처져 있을 수 있습니다(n-1). ibmcloud oc worker update 명령어를 사용하십시오.

자세한 정보는 업데이트 유형을 참조하십시오.

인증서 로테이션의 가장 긴 단계에는 작업자 노드를 다시 로드하거나 교체하는 것이 포함되므로 작업자 노드를 업데이트할 때마다 CA 인증서를 로테이션하는 것이 좋습니다.

업데이트 중에는 내 앱이 어떻게 되나요?
업데이트된 워커 노드에서 실행 중인 앱은 클러스터 내의 다른 워커 노드(다른 워커 풀에 속한 노드나 독립형 워커 노드 포함)로 다시 스케줄링됩니다. 가동 중단을 방지하려면, 업데이트를 시작하기 전에 클러스터에 워크로드를 처리할 수 있는 충분한 용량이 확보되어 있는지 확인하십시오.
업데이트나 재로딩 중에 한 번에 몇 개의 워커 노드가 중단되도록 제어하려면 어떻게 해야 하나요?
Kubernetes ConfigMap 를 사용하여 한 번에 사용 불가능한 상태로 있을 수 있는 워커 노드의 최대 개수를 설정하십시오. 작업자 노드는 라벨을 통해 식별됩니다. IBM 에서 제공하는 레이블이나 사용자 정의 레이블을 사용할 수 있습니다. 모든 워커 노드가 계속 가용 상태를 유지해야 하는 경우, 업데이트 전에 워커 풀의 규모를 조정하거나 독립형 워커 노드를 추가하여 일시적인 용량을 확보하는 방안을 고려해 보십시오.

ConfigMap 는 업데이트 동작만 제어합니다. 이는 요청 시 즉시 발생하는 워커 노드의 재로드에는 영향을 미치지 않습니다.

만약 구성 맵을 정의하지 않기로 한다면 어떻게 될까요?
기본적으로 업데이트 중에는 각 클러스터의 전체 워커 노드 중 최대 20%까지 사용 불가능한 상태가 될 수 있습니다. ConfigMap에 defaultcheck.json 항목을 정의하여 이 값을 재정의할 수 있습니다.

전제조건

기존 인프라 워커 노드를 업데이트하기 전에 다음 필수 전제 조건을 완료하십시오.

워커 노드 업데이트 과정에서 워커 노드 시스템에 대한 이미지 재설치가 수행되며, 영구 저장소에 저장되지 않은 모든 데이터는 영구적으로 삭제됩니다. 시작하기 전에, 보존해야 할 데이터가 모두 워커 노드 외부에 저장되어 있는지 확인하십시오.

클러스터에 Portworx 이 설치되어 있는 경우, 워커 노드를 업데이트하기 전에 Portworx 구성을 업데이트해야 합니다.

업데이트 전 수행 사항 (순서대로 완료하세요)

  1. 최신 보안 패치 및 필수 변경 사항에 대해서는 ‘ Red Hat OpenShift on IBM Cloud ’ 버전 정보를 확인하십시오.
  2. Red Hat OpenShift 버전 준비 가이드에서 ‘마스터 적용 전 업데이트’ 또는 ‘마스터 적용 후 업데이트 ’로 표시된 변경 사항을 모두 적용하십시오.
  3. 워커 노드를 업데이트하기 전에 마스터를 먼저 업데이트하십시오. 워커 노드의 버전은 마스터에서 실행되는 API 서버의 버전보다 높을 수 없습니다.
  4. Red Hat OpenShift 클러스터에 액세스하십시오.
  5. 업데이트 기간 동안 워크로드 재일정을 위한 추가 용량을 확보하기 위해 클러스터에 워커 노드를 추가하는 것을 고려해 보십시오. 업데이트가 완료된 후에는 불필요한 노드를 제거할 수 있습니다.

필요한 권한

운영자 또는 관리자 IAM 플랫폼 액세스 역할 가 설치되어 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.

configmap을 사용하여 CLI에서 클래식 작업자 노드 업데이트

ConfigMap 를 사용하여 기존 워커 노드에 대한 롤링 업데이트를 수행하십시오. ConfigMap 를 사용하면 구역(zone) 또는 리전(region)별로 한 번에 사용 불가능한 노드의 수를 제어할 수 있습니다. 클러스터에 기본값인 20% 가용성 제한 규칙이 적합하다면, 3단계와 4단계( ConfigMap 생성)를 건너뛰고 5단계로 바로 넘어가 기본 동작을 사용하여 업데이트를 적용할 수 있습니다.

  1. 전제조건 단계를 완료하십시오.

  2. 사용 가능한 작업자 노드를 나열하고 사설 IP 주소를 기록해 두십시오.

    ibmcloud oc worker ls --cluster CLUSTER
    
  3. 작업자 노드의 레이블을 보십시오. CLI 출력의 Labels 섹션에서 작업자 노드 레이블을 찾을 수 있습니다. 모든 레이블은 NodeSelectorKey 및 NodeSelectorValue로 구성되어 있습니다.

    oc describe node PRIVATE-WORKER-IP
    

    출력 예

    NAME:               10.184.58.3
    Roles:              <none>
    Labels:             arch=amd64
                    beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    failure-domain.beta.kubernetes.io/region=us-south
                    failure-domain.beta.kubernetes.io/zone=dal12
                    ibm-cloud.kubernetes.io/encrypted-docker-data=true
                    ibm-cloud.kubernetes.io/iaas-provider=softlayer
                    ibm-cloud.kubernetes.io/machine-type=u3c.2x4.encrypted
                    kubernetes.io/hostname=10.123.45.3
                    privateVLAN=2299001
                    publicVLAN=2299012
    Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
    CreationTimestamp:  Tue, 03 Apr 2022 15:26:17 -0400
    Taints:             <none>
    Unschedulable:      false
    
  4. 구성 맵을 작성하고 작업자 노드에 대한 비가용성 규칙을 정의하십시오. ConfigMap 는 최대 15개의 명명된 검사를 지원합니다. 각 검사는 레이블을 기준으로 일련의 워커 노드를 대상으로 하며, 해당 노드 중 한 번에 사용 불가능한 상태일 수 있는 최대 비율을 설정합니다. 다음 예제에서는 영역 검사(zonecheck.json), 영역 검사(regioncheck.json), 기본 대체 검사(defaultcheck.json) 및 사용자 정의 검사를 위한 템플릿을 보여줍니다. 각 확인 단계마다, 이전 단계에서 가져온 워커 노드 레이블 중 하나를 선택하여 대상 노드를 지정하십시오.

    검사할 때마다 NodeSelectorKey 및 NodeSelectorValue에 대해 하나의 값만 설정할 수 있습니다. 둘 이상의 지역, 구역 또는 기타 작업자 노드 레이블에 대해 규칙을 설정하려면 새 검사를 작성하십시오. 구성 맵에서 최대 15개의 확인 항목을 정의할 수 있습니다. 검사를 더 추가하면 요청된 모든 작업자가 업데이트될 때까지 한 번에 하나의 작업자 노드만 다시 로드됩니다.

    예

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ibm-cluster-update-configuration
      namespace: kube-system
    data:
      drain_timeout_seconds: "120"
      zonecheck.json: |
        {
          "MaxUnavailablePercentage": 30,
          "NodeSelectorKey": "failure-domain.beta.kubernetes.io/zone",
          "NodeSelectorValue": "dal13"
        }
      regioncheck.json: |
        {
          "MaxUnavailablePercentage": 20,
          "NodeSelectorKey": "failure-domain.beta.kubernetes.io/region",
          "NodeSelectorValue": "us-south"
        }
      defaultcheck.json: |
        {
          "MaxUnavailablePercentage": 20
        }
      <check_name>: |
        {
          "MaxUnavailablePercentage": <value_in_percentage>,
          "NodeSelectorKey": "<node_selector_key>",
          "NodeSelectorValue": "<node_selector_value>"
        }
    
    drain_timeout_seconds
    선택 사항: 드레인 작업이 완료될 때까지 기다릴 시간(초). 안전하게 작업자 노드의 드레인을 수행하면 작업자 노드에서 모든 기존 팟(Pod)이 제거되며 클러스터의 기타 작업자 노드로 팟(Pod)이 다시 스케줄됩니다. 허용되는 값은 1 - 180 범위의 정수입니다. 기본값은 30입니다.
    zonecheck.json 및 regioncheck.json
    지정된 NodeSelectorKey 및 NodeSelectorValue로 식별할 수 있는 작업자 노드 세트에 대한 규칙을 정의하는 두 개의 검사입니다. zonecheck.json은 해당 구역 레이블을 기반으로 작업자 노드를 식별하며, regioncheck.json은 프로비저닝 중에 모든 작업자 노드에 추가된 구역 레이블을 사용합니다. 이 예제에서는 자체 구역 레이블이 dal13인 모든 작업자 노드 중 30% 와 us-south의 모든 작업자 노드 중 20% 가 업데이트 중에 사용 불가능할 수 있습니다.
    defaultcheck.json
    구성 맵을 작성하지 않았거나 맵이 잘못 구성된 경우에는 Kubernetes 기본값이 적용됩니다. 기본적으로, 클러스터의 작업자 노드는 한 번에 20%만 사용 불가능 상태가 될 수 있습니다. 구성 맵에 기본 검사를 추가하여 기본값을 대체할 수 있습니다. 이 예제에서는 구역 및 지역 검사(dal13 또는 us-south)에서 지정되지 않은 모든 작업자 노드가 업데이트 중에 사용 불가능할 수 있습니다.
    MaxUnavailablePercentage
    지정된 레이블 키 및 값에 대해 사용 불가능 상태가 될 수 있는 노드의 최대 수이며 이는 백분율로 지정됩니다. 배치, 다시 로드 또는 프로비저닝 프로세스 중에는 작업자 노드를 사용할 수 없습니다. 정의된 최대 사용 불가능 백분율을 초과하면 큐에 지정된 작업자 노드가 업데이트로부터 차단됩니다.
    NodeSelectorKey
    해당 규칙을 설정하고자 하는 작업자 노드의 레이블 키입니다. 사용자는 IBM에서 제공한 기본 레이블과 자신이 작성한 작업자 노드 레이블에 대한 규칙을 설정할 수 있습니다. 하나의 작업자 풀에 속하는 작업자 노드에 대한 규칙을 추가하려는 경우에는 ibm-cloud.kubernetes.io/machine-type 레이블을 사용할 수 있습니다.
    NodeSelectorValue
    사용자가 정의한 규칙에 대해 고려되기 위해 작업자 노드가 보유해야 하는 레이블 값입니다.
  5. 클러스터에서 구성 맵을 작성하십시오.

    oc apply -f <filepath/configmap.yaml>
    
  6. 구성 맵이 작성되었는지 확인하십시오.

    oc get configmap --namespace kube-system
    
  7. 작업자 노드를 업데이트하십시오.

    ibmcloud oc worker update --cluster CLUSTER --worker WORKER-NODE-1-ID --worker WORKER-NODE-2-ID
    
  8. 선택사항: 발생하는 유효성 검증 오류 및 구성 맵에 의해 트리거되는 이벤트를 확인하십시오. 이벤트는 CLI 출력의 Events 섹션에서 검토가 가능합니다.

    oc describe -n kube-system cm ibm-cluster-update-configuration
    
  9. 작업자 노드의 Kubernetes 버전을 검토하여 업데이트가 완료되었는지 확인하십시오.

    oc get nodes
    
  10. 중복된 작업자 노드가 없는지 확인하십시오. 때로는 오래된 클러스터에서 업데이트 후에도 NotReady 상태가 표시된 중복된 워커 노드가 나열되기도 합니다. 중복 항목을 제거하려면 문제점 해결을 참조하십시오.

다음 단계

  1. 기타 작업자 풀에서 업데이트 프로세스를 반복하십시오.

  2. 클러스터에서 근무하는 모든 개발자에게 oc CLI를 업데이트합니다 로 알림을 보내, Kubernetes 의 마스터 버전과 일치하도록 하십시오. 서버 버전과 2개 이상의 버전이 다른 oc 클라이언트를 실행하는 것은 지원되지 않으며, 예기치 않은 오류가 발생할 수 있습니다.

  3. Kubernetes 대시보드가 사용량 그래프를 표시하지 않는 경우에는 kube-dashboard 팟(Pod)을 삭제하십시오.

콘솔에서 클래식 작업자 노드 업데이트

ConfigMap 을 처음 설정한 후에는 IBM Cloud 콘솔을 사용하여 워커 노드를 업데이트할 수 있습니다. 콘솔은 ConfigMap 에서 정의한 사용 불가 규칙을 준수합니다.

  1. 필수 전제 단계를 완료하고, 워커 노드의 업데이트 방식을 제어하기 위해 ConfigMap 를 설정하십시오.
  2. IBM Cloud 콘솔 메뉴 메뉴 아이콘 클릭하고 컨테이너 > 클러스터를 클릭합니다.
  3. 클러스터 페이지에서 클러스터를 클릭하십시오.
  4. 작업자 노드 탭에서 업데이트하려는 각 작업자 노드의 선택란을 선택하십시오. 표 헤더 행 위에 조치 표시줄이 표시됩니다.
  5. 조치 표시줄에서 업데이트를 클릭하십시오.

클러스터에 Portworx 이 설치되어 있는 경우, 업데이트된 워커 노드에서 Portworx 포드를 다시 시작해야 합니다. 자세한 정보는 Portworx 제한사항을 참조하십시오.

VPC 작업자 노드 업데이트

VPC 워커 노드는 유형과 클러스터 플랫폼에 따라 서로 다른 방식으로 업데이트됩니다. ibmcloud oc worker update 명령어는 어떤 VPC 워커 노드에서도 지원되지 않습니다. 어떤 경우든 클러스터 마스터를 먼저 업데이트해야 합니다.

  • VPC 베어 메탈 작업자: ibmcloud oc worker reload 를 사용하여 현장에서 업데이트되었습니다. 해당 노드는 IP 주소를 유지합니다.
  • VPC 가상 서버 인스턴스(VSI) 워커: ibmcloud oc worker replace --update (마스터 버전과 일치하도록) 또는 ibmcloud oc worker replace (패치 갱신 전용)으로 대체되었습니다. 기존 노드가 삭제되고 새로운 노드가 프로비저닝됩니다.

다음 두 가지 유형의 업데이트를 수행할 수 있습니다:

  • 패치: 현재 BOM 버전의 최신 패치에 포함된 보안 수정 사항 및 업데이트를 적용합니다. VPC 베어 메탈 작업자의 경우, ibmcloud oc worker reload 을 이용하십시오. VPC VSI 근로자의 경우, ibmcloud oc worker replace 를 이용하십시오.
  • Major.minor: 워커 노드의 Kubernetes 버전을 마스터와 일치하도록 업데이트합니다. 워커 노드의 버전은 마스터보다 최대 한 버전 뒤처져 있을 수 있습니다(n-1). VPC 베어메탈 워커의 경우 ibmcloud oc worker reload 를 사용하십시오. VPC VSI 근로자의 경우, ibmcloud oc worker replace --update 를 이용하십시오.

인증서 로테이션의 가장 긴 단계에는 작업자 노드를 다시 로드하거나 교체하는 것이 포함되므로 작업자 노드를 업데이트할 때마다 CA 인증서를 로테이션하는 것이 좋습니다.

클러스터에 Data OpenShift Foundation이 배포된 경우, Data OpenShift Foundation으로 VPC 워커 노드를 업데이트하는 단계를 따르십시오.

업데이트 중에는 내 앱이 어떻게 되나요?
업데이트된 워커 노드에서 실행되던 애플리케이션은 클러스터 내의 다른 워커 노드로 재스케줄링됩니다. 이러한 작업자 노드는 다른 작업자 풀에 있을 수 있습니다. 가동 중단을 방지하려면, 업데이트를 시작하기 전에 클러스터에 워크로드를 처리할 수 있는 충분한 용량이 확보되어 있는지 확인하십시오. 자세한 정보는 클래식 클러스터에 작업자 노드 추가 또는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.
업데이트가 진행되는 동안 내 워커 노드에는 어떤 일이 발생하나요?
VPC 베어 메탈 워커의 경우, worker reload 를 사용하여 워커 노드를 해당 위치에서 재로드합니다. 노드는 IP 주소를 유지하며, 로컬 디스크에 저장된 데이터는 삭제되므로 워커 노드 외부에 저장해야 합니다. VPC 가상 서버 인스턴스(VSI) 워커의 경우, 기존 워커 노드를 제거하고 업데이트된 패치 또는 major.minor 버전에서 실행되는 새로운 워커 노드를 프로비저닝함으로써 워커 노드를 교체합니다. 대체 작업자 노드는 동일 구역, 동일 작업자 풀에서 삭제된 작업자 노드와 동일한 특성으로 작성됩니다. 그러나 대체 작업자 노드에는 새 사설 IP 주소가 지정되며 이전 작업자 노드에 적용한 사용자 정의 레이블 또는 오염(작업자 풀 레이블 또는 오염은 대체 작업자 노드에 계속 적용됨)을 잃게 됩니다.
여러 워커 노드를 동시에 교체하면 어떻게 되나요?
여러 작업자 노드를 동시에 교체하는 경우 하나씩 삭제되는 것이 아니라 동시에 삭제되고 교체됩니다. 작업자 노드를 교체하기 전에 워크로드를 다시 스케줄링할 수 있는 충분한 용량이 클러스터에 있는지 확인하십시오.
대체 워커 노드가 생성되지 않으면 어떻게 되나요?
작업자 풀에서 자동 리밸런싱이 사용으로 설정되지 않으면 대체 작업자 노드가 작성되지 않습니다.

전제조건

VPC 인프라 워커 노드를 업데이트하기 전에 다음 필수 사전 단계를 완료하십시오.

VPC VSI 워커의 경우, 워커 노드가 삭제되고 새로운 노드로 대체됩니다. VPC 베어 메탈 작업자의 경우, 노드가 해당 위치에서 다시 로드됩니다. 두 경우 모두, 영구 저장소에 저장되지 않은 데이터는 영구적으로 삭제됩니다. 시작하기 전에, 보존해야 할 데이터가 모두 워커 노드 외부에 저장되어 있는지 확인하십시오.

클러스터에 Portworx 가 배포되어 있는 경우, 이 페이지에 설명된 단계 대신 다음 단계를 따라 VPC 워커 노드를 Portworx 볼륨으로 업데이트하십시오.

업데이트 전 수행 사항 (순서대로 완료하세요)

  1. 최신 보안 패치 및 필수 변경 사항에 대해서는 ‘ Red Hat OpenShift on IBM Cloud ’ 버전 정보를 확인하십시오.
  2. Red Hat OpenShift 버전 준비 가이드에서 ‘마스터 적용 전 업데이트’ 또는 ‘마스터 적용 후 업데이트 ’로 표시된 변경 사항을 모두 적용하십시오.
  3. 워커 노드를 업데이트하기 전에 마스터를 먼저 업데이트하십시오. 워커 노드의 버전은 마스터에서 실행되는 API 서버의 버전보다 높을 수 없습니다.
  4. Red Hat OpenShift 클러스터에 액세스하십시오.

필요한 권한

운영자 또는 관리자 IAM 플랫폼 액세스 역할 가 설치되어 있는지 확인하십시오. 자신의 액세스 역할이 확실하지 않다면, IBM Cloud 콘솔에서 [ 관리] → [액세스(IAM)] → [사용자 ]로 이동하거나 계정 관리자에게 문의하세요.

CLI에서 VPC 작업자 노드 업데이트

CLI를 사용하여 워커 노드를 업데이트하려면 다음 단계를 따르십시오.

  1. 전제조건 단계를 완료하십시오.
  2. 선택 사항: 워커 풀의 크기를 조정하여 클러스터의 용량을 늘리세요. 작업자 노드의 팟(Pod)은 다시 스케줄될 수 있으며 업데이트 중에 추가된 작업자 노드에서 계속 실행될 수 있습니다. 자세한 정보는 클래식 클러스터에 작업자 노드 추가 또는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.
  3. 클러스터의 작업자 노드를 나열하고 업데이트할 작업자 노드의 ID 및 기본 IP를 기록해 두십시오.
    ibmcloud oc worker ls --cluster CLUSTER
    
  4. 워커 노드를 업데이트하십시오. 사용할 명령어는 워커 노드 유형에 따라 다릅니다.

VPC 베어 메탈 작업자: worker reload 을 사용하여 노드를 제자리에서 재이미징하십시오. 노드는 기존 IP 주소를 유지하며 최신 패치 버전으로 업데이트됩니다.

```sh {: pre}
ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID
```
**VPC 가상 서버 인스턴스(VSI) 워커** : ` `worker replace` ` 명령을 사용하여 마스터 버전과 일치하는 패치 버전 또는 `major.minor` 버전을 업데이트하십시오.

*  워커 노드를 마스터와 동일한 `major.minor` 버전으로 업데이트하려면 `--update` 옵션을 포함하십시오.
```sh {: pre}
    ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID --update
    ```
*  `major.minor` 버전이 동일한 상태에서 워커 노드를 최신 패치 버전으로 업데이트하려면, `--update` 옵션을 포함하지 마십시오.
```sh {: pre}
    ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID
    ```
  1. 업데이트해야 하는 각 작업자 노드에 대해 이러한 단계를 반복하십시오.
  2. 선택 사항: 교체된 워커 노드가 ‘Ready’ 상태가 되면, 원하는 클러스터 용량에 맞게 워커 풀의 크기를 조정하십시오. 자세한 정보는 VPC 클러스터에 작업자 노드 추가 를 참조하십시오.

VPC 클러스터에서 Portworx를 실행 중인 경우 새 작업자 노드에 수동으로Block Storage for VPC 볼륨을 연결해야 합니다.

VPC 베어 메탈 워커 재시작 중 펌웨어 업데이트

VPC 베어메탈 워커 노드를 재시작하면, ‘ IBM Cloud ’ 인프라가 해당 서버에 적용해야 할 펌웨어 업데이트가 있는지 자동으로 확인하고, 재시작 과정의 일환으로 이를 적용합니다. 펌웨어 업데이트를 시작하기 위해 별도의 조치가 필요하지 않습니다.

VPC 베어 메탈 워커 노드를 재부팅할 때는 다음 사항을 유의하십시오:

재장전 시간 연장
재장전 중에 펌웨어 업데이트가 적용될 경우, 전체 재장전 시간이 일반적인 재장전 소요 시간보다 30분 이상 크게 늘어날 수 있습니다. 이에 따라 유지보수 기간을 계획하십시오.
예정된 업데이트에 대한 사전 확인 기능 없음
reload 명령을 실행하기 전에는 워커 노드에 펌웨어 업데이트가 대기 중인지 여부를 확인할 수 없습니다.
데이터 손실 위험
모든 VPC 베어 메탈 워커 재로딩과 마찬가지로, 펌웨어 업데이트가 적용되든 안 되든 상관없이 재로딩 과정에서 로컬 디스크의 데이터는 삭제됩니다. 다시 로드하기 전에 영구 저장소에 저장되지 않은 모든 데이터를 백업하십시오.
펌웨어 업데이트로 인한 재시작 실패
경우에 따라 펌웨어 업데이트가 실패할 수 있으며, 이로 인해 워커 노드가 ‘ reload_failed ’ 상태(Failed to reload worker)로 전환되고, 상태 세부 정보는 The infrastructure firmware update has failed. (P4056) 로 표시됩니다. 메모리가 부족할 경우
  1. 몇 분 정도 기다린 후, ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID 을 다시 실행하여 재로드를 시도해 보세요.
  2. 2~3회 시도해도 오류가 계속 발생하면 IBM Cloud 에서 지원 요청을 제출하십시오.

콘솔에서 VPC 작업자 노드 업데이트

콘솔에서 VPC 작업자 노드를 업데이트할 수 있습니다. 시작하기 전에, 애플리케이션의 가동 중단 시간을 방지하기 위해 클러스터에 워커 노드를 추가하는 것을 고려해 보세요.

'업데이트' 작업의 동작은 워커 노드 유형과 클러스터 플랫폼에 따라 달라집니다:

  • VPC 베어 메탈 작업자: 노드가 해당 위치에서 다시 로드됩니다. 대체 노드가 프로비저닝되지 않았습니다.
  • VPC 가상 서버 인스턴스(VSI) 워커: 워커 노드가 업데이트된 버전의 새 노드로 교체됩니다.
  1. 전제조건 단계를 완료하십시오.
  2. IBM Cloud 콘솔 메뉴 메뉴 아이콘 클릭하고 컨테이너 > 클러스터를 클릭합니다.
  3. 클러스터 페이지에서 클러스터를 클릭하십시오.
  4. 작업자 노드 탭에서 업데이트하려는 각 작업자 노드의 선택란을 선택하십시오. 표 헤더 행 위에 조치 표시줄이 표시됩니다.
  5. 조치 표시줄에서 업데이트를 클릭하십시오.

특성 업데이트(머신 유형)

더 많은 메모리, 추가 CPU, 또는 GPU 지원 머신 등 다른 컴퓨팅 리소스가 필요할 때는 워커 노드의 플레버(머신 유형)를 업데이트하십시오. 플레버를 업데이트하면 새로운 플레버를 가진 새로운 워커 풀이 생성된 후, 기존 워커 풀이 제거됩니다. 이 프로세스는 노드를 교체하기 때문에, 영구 저장소에 저장되지 않은 워커 노드의 모든 데이터는 영구적으로 삭제됩니다.

시작하기 전에

맛을 업데이트하려면

  1. 사용 가능한 작업자 노드를 나열하고 사설 IP 주소를 기록해 두십시오.

    1. 클러스터에서 사용 가능한 작업자 풀을 나열하십시오.
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    2. 작업자 풀의 작업자 노드를 나열하십시오. **ID** 및 **사설 IP**를 기록해 두십시오.
    ```sh {: pre}
        ibmcloud oc worker ls --cluster CLUSTER --worker-pool WORKER-POOL
        ```
    3. 작업자 노드에 대한 세부사항을 가져오십시오. 출력에서 구역 및 클래식 클러스터의 사설 및 공용 VLAN ID 또는 VPC 클러스터의 서브넷 ID를 기록하십시오.
    ```sh {: pre}
        ibmcloud oc worker get --cluster CLUSTER --worker WORKER-ID
        ```
    
  2. 구역에서 사용 가능한 특성을 나열하십시오.

    ibmcloud oc flavors --zone <zone>
    
  3. 새 머신 유형으로 작업자 노드를 작성하십시오.

    1. 대체할 작업자 노드의 수로 작업자 풀을 작성하십시오.
      • 클래식 클러스터:
        ibmcloud oc worker-pool create classic --name WORKER-POOL --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE
        
      • VPC 2세대 클러스터:
        ibmcloud oc worker-pool create vpc-gen2 --name NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE --label LABEL
        
    2. 작업자 풀이 작성되었는지 확인하십시오.
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    3. 이전에 검색한 작업자 풀에 구역을 추가하십시오. 구역을 추가하면 작업자 풀에서 정의된 작업자 노드가 구역에서 프로비저닝되며 향후 워크로드 스케줄을 위해 고려됩니다. 다중 구역에 작업자 노드를 분산시키려면 [클래식](/docs/openshift?topic=openshift-regions-and-zones#zones-mz) 또는 [VPC](/docs/openshift?topic=openshift-regions-and-zones#zones-vpc) 다중 구역 위치를 선택하십시오.
        * 클래식 클러스터:
            ```sh {: pre}
            ibmcloud oc zone add classic --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --private-vlan PRIVATE-VLAN-ID --public-vlan PUBLIC-VLAN-ID
            ```
        * VPC 클러스터:
            ```sh {: pre}
            ibmcloud oc zone add vpc-gen2 --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --subnet-id VPC-SUBNET-ID
            ```
    
  4. 작업자 노드가 배치될 때까지 대기하십시오. 작업자 노드 상태가 **정상(Normal)**으로 변경되면 배치가 완료된 것입니다.

    ibmcloud oc worker ls --cluster CLUSTER
    
  5. 기존 워커 풀을 제거하십시오. (월별 청구되는) Classic 베어 메탈 플레어를 해지하는 경우, 월 중순에 해지하더라도 해당 월의 요금이 전액 청구됩니다. 베어 메탈을 포함한 VPC 작업에 대해서는 시간당 요금이 청구됩니다.

    1. 이전 머신 유형의 작업자 풀을 제거하십시오. 작업자 풀을 제거하면 모든 구역의 풀에서 모든 작업자 노드가 제거됩니다. 이 프로세스는 완료하는 데 몇 분 정도 소요될 수 있습니다.
        ibmcloud oc worker-pool rm --worker-pool WORKER-POOL --cluster CLUSTER
        ```
    2. 작업자 풀이 제거되었는지 확인하십시오.
    ```sh {: pre}
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    
  6. 작업자 노드가 클러스터에서 제거되었는지 확인하십시오.

    ibmcloud oc worker ls --cluster CLUSTER
    
  7. 이러한 단계를 반복하여 기타 작업자 풀 또는 독립형 작업자 노드를 다른 특성으로 업데이트하십시오.

작업자 풀은 어떻게 축소됩니까?

이 섹션에서는 워커 노드 업데이트 후나 ibmcloud oc worker-pool resize 를 실행할 때와 같이, 워커 노드가 제거될 때 적용되는 자동 우선순위 지정 로직에 대해 이 동작을 별도로 설정할 필요는 없습니다. 자동으로 처리됩니다.

워커 풀 내의 워커 노드 수가 줄어들면, 상태, 정상성, 버전 등 여러 속성을 기준으로 워커 노드의 삭제 우선순위가 결정됩니다.

이 우선순위 로직은 오토스케일러 추가 기능과 관련이 없습니다.

다음 표는 작업자 노드가 삭제를 위해 우선순위가 지정되는 순서를 표시합니다.

ibmcloud oc worker ls 명령을 실행하여 표에 나열된 모든 작업자 노드 특성을 볼 수 있습니다.

작업자 풀 축소 중에 삭제된 작업자 노드의 우선순위입니다.
우선순위 특성 설명
1 작업자 노드 상태 작동하지 않는 상태 또는 작동하지 않는 상태의 작업자 노드는 제거를 위해 우선순위가 지정됩니다. 이 목록은 provision_failed, deploy_failed, deleting, provision_pending, provisioning, deploying, provisioned, reloading_failed, reloading, deployed 의 가장 높은 우선순위에서 가장 낮은 우선순위로 정렬된 상태를 표시합니다.
2 작업자 노드 상태 상태가 양호하지 않은 작업자 노드는 상태가 양호한 작업자 노드보다 우선순위가 높습니다. 이 목록은 가장 높은 우선순위에서 가장 낮은 우선순위로 정렬된 상태 ( critical, warning, pending, unsupported, normal) 를 표시합니다.
3 작업자 노드 버전 이전 버전에서 실행되는 작업자 노드는 삭제 우선순위가 높습니다.
4 선택한 배치 설정 전용 호스트에서 실행 중인 작업자 전용입니다. DesiredPlacementDisabled 옵션이 true 로 설정된 전용 호스트에서 실행 중인 작업자 노드는 삭제 우선순위가 더 높습니다.
5 알파벳순 작업자 노드가 위에 나열된 요인을 기반으로 우선순위가 지정된 후에는 알파벳순으로 삭제됩니다. 작업자 노드 ID 규칙에 따라 클래식 및 VPC 클러스터에 있는 작업자의 ID가 나이와 상관되므로 이전 작업자 노드가 먼저 제거됩니다.

클러스터 컴포넌트 업데이트

Red Hat OpenShift on IBM Cloud 클러스터는 클러스터를 프로비저닝할 때 자동으로 설치되는 컴포넌트(예: Ingress)와 함께 제공됩니다. 기본적으로 이러한 컴포넌트는 IBM에 의해 자동으로 업데이트됩니다. 그러나 사용자는 일부 컴포넌트에 대해 자동 업데이트를 사용 안함으로 설정하고 마스터 및 작업자 노드와 별도로 수동으로 업데이트할 수 있습니다.

클러스터와 별도로 업데이트할 수 있는 기본 구성 요소는 무엇입니까?
사용자는 선택적으로 다음 컴포넌트에 대해 자동 업데이트를 사용 안함으로 설정할 수 있습니다.
클러스터와 별도로 업데이트할 수 없는 구성 요소가 있나요?
예. 클러스터는 변경 불가능한 다음 관리 컴포넌트 및 연관된 리소스와 함께 배치됩니다. 특정 성능 이점을 얻기 위해 팟(Pod)을 스케일링하고 ConfigMap을 편집하는 경우는 예외입니다. 이러한 배치 컴포넌트 중 하나를 변경하려고 시도하면 클러스터 마스터로 업데이트될 때 일정 간격마다 해당 원본 설정이 복원됩니다. 그러나 Calico 배치 컴포넌트에 의해 구현되도록 작성하는 Calico 네트워크 정책과 같은 이러한 컴포넌트와 연관된 리소스는 업데이트되지 않습니다.
  • calico 컴포넌트
  • coredns 컴포넌트
  • ibm-cloud-provider-ip
  • ibm-file-plugin
  • ibm-keepalived-watcher
  • ibm-master-proxy
  • ibm-storage-watcher
  • kubernetes-dashboard 컴포넌트
  • metrics-server
  • olm-operator 및 catalog 컴포넌트(1.16 이상)
  • vpn
기본 구성 요소 외에 다른 플러그인이나 애드온을 설치할 수 있나요?
네. Red Hat OpenShift on IBM Cloud 에서는 클러스터에 기능을 추가하기 위해 선택할 수 있는 다양한 플러그인과 애드온을 제공합니다. 예를 들어, 클러스터에서 IBM 에서 관리하는 애드온을 활성화할 수 있습니다. 관리형 애드온 업데이트 단계에 따라 이러한 애드온을 별도로 업데이트해야 합니다.

Fluentd에 대한 자동 업데이트 관리

외부 서버로 전달하기 위해 클러스터에 있는 소스의 로깅 구성을 작성하는 경우 Fluentd 컴포넌트가 클러스터에 작성됩니다. 로깅 또는 필터 구성을 변경하려면 Fluentd 컴포넌트가 최신 버전이어야 합니다. 기본적으로 이 컴포넌트에 대한 자동 업데이트는 사용으로 설정됩니다.

다음 명령을 실행하려면 클러스터에 대한 ‘Administrator IBM Cloud ’ IAM 플랫폼 액세스 역할이 있어야 합니다.

Fluentd 컴포넌트의 자동 업데이트는 다음 방법으로 관리할 수 있습니다.

  • ibmcloud oc logging autoupdate get --cluster CLUSTER 명령을 실행하여 자동 업데이트가 사용으로 설정되었는지 확인하십시오.
  • ibmcloud oc logging autoupdate disable 명령을 실행하여 자동 업데이트를 사용 안함으로 설정하십시오.
  • 자동 업데이트가 사용 안함으로 설정되어 있지만 구성을 변경해야 하는 경우에는 두 가지 옵션이 있습니다.
    • Fluentd 팟(Pod)에 대해 자동 업데이트를 켭니다.
        ibmcloud oc logging autoupdate enable --cluster CLUSTER
        ```
    * `--force-update` 옵션이 포함된 로깅 명령을 사용할 때 일회성 업데이트를 강제 실행합니다. 포드는 ‘ Fluentd ’ 컴포넌트의 최신 버전으로 업데이트되지만, 향후 ‘ Fluentd ’은 자동으로 업데이트되지 않습니다.
            명령 예
    
    ```sh {: pre}
        ibmcloud oc logging config update --cluster CLUSTER --id LOG-CONFIG-ID --type LOG-TYPE --force-update
        ```
    

Ingress ALB에 대한 자동 업데이트 관리

Ingress 애플리케이션 로드 밸런서(ALB) 컴포넌트가 업데이트되는 시점을 제어하십시오. ALB를 최신 상태로 유지하는 방법에 대한 정보는 Ingress ALB 라이프사이클 관리를 참조하십시오.

관리 추가 기능 업데이트

관리형 IBM Cloud Kubernetes Service 클러스터 애드온을 사용하면 Istio 와 같은 오픈소스 기능을 통해 클러스터를 손쉽게 강화할 수 있습니다. 클러스터에 추가하는 오픈 소스 도구의 버전은 IBM에서 테스트하고 IBM Cloud Kubernetes Service에서 사용하도록 승인됩니다. 클러스터에서 사용으로 설정한 관리 추가 기능을 최신 버전으로 업데이트하려면 관리 추가 기능 업데이트를 참조하십시오.