워커 노드로 지정된 호스트 업데이트

Satellite 가 활성화된 IBM Cloud 서비스(예: 클러스터)에 워커 노드로 할당된 호스트에 대해 최신 OpenShift Container Platform, 운영 체제 및 보안 패치를 적용하려면 다음 단계를 확인하십시오.

모든 IBM Cloud 서비스의 기반이 되는 서비스 클러스터는 Code Engine 또는 IBM Cloud Object Storage 와 같은 서비스를 통해 생성되며, IBM 에서 관리됩니다.

업데이트 중에는 내 앱이 어떻게 되나요?
업데이트 중인 작업자 노드에서 배치의 일부로서 앱을 실행하는 경우, 해당 앱은 클러스터의 기타 작업자 노드로 다시 스케줄됩니다. 이러한 워커 노드는 다른 워커 풀에 속해 있을 수도 있으며, 독립형 워커 노드가 있는 경우 앱을 독립형 워커 노드에 스케줄링할 수 있습니다. 앱의 작동 중단 시간을 방지하려면 워크로드를 감당할 만한 충분한 용량이 클러스터에 있는지 확인해야 합니다.
업데이트나 재로드 중에 한 번에 몇 개의 워커 노드가 중단되도록 제어하려면 어떻게 해야 하나요?
모든 작업자 노드가 작동되어 실행 중이어야 하는 경우 연결추가 호스트를 서비스에 지정 하는 것을 고려하십시오. 임시로 추가 호스트를 위치에 추가한 후 업데이트가 완료되면 호스트를 제거할 수 있습니다.
또한, 업데이트 중과 같이 한 번에 사용 불가능한 상태가 될 수 있는 워커 노드의 최대 수를 지정하는 ‘ Kubernetes ’ ConfigMap 를 생성할 수 있습니다. 작업자 노드는 작업자 노드 레이블로 식별됩니다. IBM 제공 레이블을 사용하거나 사용자가 작업자 노드에 추가한 사용자 정의 레이블을 사용할 수 있습니다.

작업자 노드 호스트에 버전 업데이트를 사용할 수 있는지 확인

IBM Cloud CLI 또는 IBM Cloud 콘솔을 사용하여 Satellite 사용 IBM Cloud 서비스에 작업자 노드로 지정된 호스트에 대한 버전 업데이트가 사용 가능한지 확인할 수 있습니다.

각 버전 업데이트에 포함된 변경사항을 검토하려면 Red Hat OpenShift on IBM Cloud의 버전 변경 로그를 참조하십시오.

IBM Cloud CLI를 사용하여 버전 업데이트를 사용할 수 있는지 확인

  1. IBM Cloud에 로그인하십시오. 연합 계정이 있는 경우 --sso 옵션을 포함합니다.
    ibmcloud login [--sso]
    
  2. 계정의 Satellite 클러스터를 나열합니다.
    ibmcloud ks cluster ls --provider satellite
    
  3. 버전을 업데이트할 클러스터의 작업자 노드를 나열합니다. 출력에서 버전 업데이트를 사용할 수 있음을 표시하는 메시지와 함께 별표 *가 있는지 확인하십시오.
    ibmcloud ks worker ls -c CLUSTER_NAME_OR_ID
    
    출력 예
    ID                Primary IP       Flavor   State    Status   Zone     Version   
    sat-worker-<ID>   <IP_address>     upi      normal   Ready    zone-1   4.5.35_1534_openshift*   
    * To update to 4.5.37_1537_openshift version, run 'ibmcloud ks worker replace'. Review and make any required version changes before you update: 'https://ibm.biz/upworker'
    

IBM Cloud 콘솔에서 버전 업데이트를 사용할 수 있는지 확인

  1. Satellite 콘솔에 로그인하십시오.
  2. 업데이트할 호스트가 있는 위치를 클릭하십시오.
  3. 호스트 탭을 클릭하십시오.
  4. 호스트 목록에서 업데이트할 호스트의 클러스터 링크를 클릭하십시오. Red Hat OpenShift on IBM Cloud 클러스터 세부사항에 대한 새 탭이 열립니다.
  5. 작업자 노드 탭을 클릭하십시오.
  6. ‘버전’ 열에서, 아이콘을 클릭했을 때 ‘ Update available ’라고 표시되는 정보 아이콘이 있는지 확인하세요. 업데이트가 사용 가능하지 않은 경우 아이콘이 표시되지 않습니다.
  7. 버전 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 판별하십시오.

작업자 노드 호스트 식별

호스트가 제어 플레인의 일부인지, 관리 서비스에 지정되었는지 또는 위치에 연결되었는지 여부를 판별하십시오.

  1. 위치 호스트 목록을 작성하고 각 호스트의 ID를 기록해 두세요. 작업자 노드 호스트에는 출력의 Cluster 열에 나열된 infrastructure 가 없습니다.

    ibmcloud sat host ls --location <location>
    

    출력 예를 검토하십시오.

    Name           ID                     State      Status   Zone     Cluster          Worker ID                                              Worker IP   
    satdemo-cp1    0bc3b92f55968a230985   assigned   Ready    zone-1   infrastructure   sat-satdemocp1-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.178   
    satdemo-cp2    999cd38c39ddffe4b672   assigned   Ready    zone-2   infrastructure   sat-satdemocp2-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.183   
    satdemo-cp5    6ca4fd8fcad1fa622aa4   assigned   Ready    zone-3   infrastructure   sat-satdemocp5-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.181   
    satdemo-cp4    1ac2b92f55968a333335   assigned   Ready    zone-1   satdemo-cluster  sat-satdemocp4-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.180   
    satdemo-cp6    234cd56c78ddffe4b672   assigned   Ready    zone-2   satdemo-cluster  sat-satdemocp6-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.179   
    satdemo-cp3    8fg4ff8faaa1fa622bb5   assigned   Ready    zone-3   satdemo-cluster  sat-satdemocp3-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.182  
    
  2. Satellite 사용 IBM Cloud 서비스에 작업자 노드로 지정된 현재 호스트를 나열하고 해당 ID를 기록해 두십시오.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    출력 예를 검토하십시오.

    ID                                                        Primary IP     Flavor   State    Status   Zone        Version   
    sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7   10.241.0.4     upi      normal   Ready    us-east-2   4.7.55_1575_openshift   
    sat-satellitei-854beae4556401b5761e34ed849ba64c4b0a674c   10.241.128.4   upi      normal   Ready    us-east-1   4.7.55_1575_openshift   
    sat-satellitei-bf1fc9b135011d5c0d9d500855db6e489d15610b   10.241.64.4    upi      normal   Ready    us-east-3   4.7.55_1575_openshift    
    

버전 업데이트를 분리하지 않고 작업자 노드 호스트에 적용

작업자 노드 호스트를 위치에서 분리하지 않고 업데이트할 수 있습니다. ConfigMap 를 사용하여 워커 노드 호스트에 대해 롤링 업데이트를 수행할 수도 있습니다.

시작하기 전에

  • 모든 작업자 노드가 정상 상태인지 확인하십시오.
  • 지속적 블록 스토리지 볼륨을 사용하는 경우 업데이트를 시작하기 전에 노드에서 이러한 볼륨을 분리해야 합니다. 지속적 볼륨을 업데이트가 필요하지 않은 다른 작업자 노드로 이동하십시오. 그런 다음, kubectl drain NODENAME 명령으로 업데이트하기 위해 작업자 노드에서 워크로드를 제거하고 비우십시오. 블록 스토리지 볼륨을 이동할 수 없는 경우 호스트를 대체하여 작업자 노드에 버전 업데이트 적용 을 사용하십시오.

워커 노드에 업데이트를 적용하면 앱과 서비스에 다운타임이 발생할 수 있습니다. 업데이트 프로세스가 실행 중인 동안 호스트에서 조치를 수행하지 마십시오. 업데이트 과정 중에는 전체 워커 노드 중 최대 20%까지 사용 불가능한 상태가 될 수 있습니다.

한 번에 하나씩 작업자 노드 호스트에 버전 업데이트 적용

  1. 선택사항: 기존 호스트가 업데이트되는 동안 계산 용량을 처리하려면 를 연결하고 추가 호스트를 서비스 클러스터에 지정하십시오.

  2. 작업자 노드 호스트를 식별하십시오. 작업자 노드 호스트에는 출력의 Cluster 열에 나열된 infrastructure 가 없지만 대신 클러스터의 이름을 갖습니다.

  3. ibmcloud ks worker update 명령을 실행하여 작업자 노드를 개별적으로 업데이트하십시오.

    ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID
    
  4. 작업자 노드의 Kubernetes 버전을 검토하여 업데이트가 완료되었는지 확인하십시오.

    kubectl get nodes
    

    업데이트에 실패하면 호스트를 대체하여 버전 업데이트를 적용 해야 합니다.

ConfigMap 을 사용하여 작업자 노드 호스트에 버전 업데이트 적용

ConfigMap을 사용하여 모든 작업자 노드 호스트에 대한 업데이트를 롤아웃할 수 있습니다. 레이블을 사용하여 업데이트할 노드를 지정하십시오. 또한

  1. 선택사항: 기존 호스트가 업데이트되는 동안 계산 용량을 처리하려면 를 연결하고 추가 호스트를 서비스 클러스터에 지정하십시오.

  2. 작업자 노드 호스트를 식별하십시오. 작업자 노드 호스트가 Infrastructure 로 나열되지 않습니다.

  3. 작업자 노드의 레이블을 보십시오. CLI 출력의 Labels 섹션에서 작업자 노드 레이블을 찾을 수 있습니다. 모든 레이블은 NodeSelectorKeyNodeSelectorValue로 구성되어 있습니다. 레이블을 사용하여 업데이트할 작업자 노드를 지정할 수 있습니다.

    kubectl get nodes -o yaml
    

    출력 예

    labels:
      arch: amd64
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/instance-type: upi
      beta.kubernetes.io/os: linux
      failure-domain.beta.kubernetes.io/region: us-east
      failure-domain.beta.kubernetes.io/zone: us-east-2
      ibm-cloud.kubernetes.io/iaas-provider: upi
      ibm-cloud.kubernetes.io/internal-ip: 10.241.0.4
      ibm-cloud.kubernetes.io/machine-type: upi
      ibm-cloud.kubernetes.io/os: REDHAT_8_64
      ibm-cloud.kubernetes.io/region: us-east
      ibm-cloud.kubernetes.io/worker-id: sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7
      ibm-cloud.kubernetes.io/worker-pool-id: cbtljodw089nltg8k210-9a3f763
      ibm-cloud.kubernetes.io/worker-pool-name: default
      ibm-cloud.kubernetes.io/worker-version: 4.7.59_1583_openshift
      ibm-cloud.kubernetes.io/zone: us-east-2
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: satellite-ibm-host-3
      kubernetes.io/os: linux
      node-role.kubernetes.io/master: ""
      node-role.kubernetes.io/worker: ""
      node.kubernetes.io/instance-type: upi
      node.openshift.io/os_id: rhel
      privateVLAN: "1"
      topology.kubernetes.io/region: us-east
      topology.kubernetes.io/zone: us-east-2
    
  4. ConfigMap 를 생성하고 워커 노드에 대한 가용성 제한 규칙을 정의하십시오. 다음 예시에는 ‘ defaultcheck.json ’과 수표 서식 두 가지가 나와 있습니다. 이 예제 검사를 사용하여 ConfigMap (defaultcheck.json) 에서 정의한 검사와 일치하지 않는 모든 작업자 노드에 대한 규칙을 정의할 수 있습니다. 검사 템플리트를 사용하여 사용자 고유의 검사를 작성하십시오. 모든 검사에 대해, 작업자 노드를 식별하려면 이전 단계에서 검색한 작업자 노드 레이블 중 하나를 선택해야 합니다.

    검사할 때마다 NodeSelectorKeyNodeSelectorValue에 대해 하나의 값만 설정할 수 있습니다. ConfigMap 에서 최대 10개의 검사를 정의할 수 있습니다. 검사를 더 추가하는 경우에 이는 무시됩니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ibm-cluster-update-configuration
      namespace: kube-system
    data:
      drain_timeout_seconds: "120"
      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입니다.
    defaultcheck.json
    Satellite 호스트에서 작업자 노드를 업데이트할 때 클러스터에 있는 작업자 노드의 20%만 한 번에 사용 불가능할 수 있습니다.
    MaxUnavailablePercentage
    지정된 레이블 키 및 값에 대해 사용 불가능 상태가 될 수 있는 노드의 최대 수이며 이는 백분율로 지정됩니다. 배치, 다시 로드 또는 프로비저닝 프로세스 중에는 작업자 노드를 사용할 수 없습니다. 정의된 최대 사용 불가능 백분율을 초과하면 큐에 지정된 작업자 노드가 업데이트로부터 차단됩니다.
    NodeSelectorKey
    해당 규칙을 설정하고자 하는 작업자 노드의 레이블 키입니다. 사용자는 IBM에서 제공한 기본 레이블과 자신이 작성한 작업자 노드 레이블에 대한 규칙을 설정할 수 있습니다.
    NodeSelectorValue
    사용자가 정의한 규칙에 대해 고려되기 위해 작업자 노드가 보유해야 하는 레이블 값입니다.
  5. 클러스터에서 configmap을 작성하십시오.

    kubectl apply -f <filepath/configmap.yaml>
    
  6. ConfigMap 가 생성되었는지 확인하십시오.

    kubectl get configmap --namespace kube-system
    
  7. 작업자 노드를 ID별로 나열하여 업데이트하십시오.

    ibmcloud ks worker update --cluster <cluster_name_or_ID> --worker <worker_node1_ID> --worker <worker_node2_ID>
    
  8. 선택 사항: ConfigMap 에 의해 트리거되는 이벤트와 발생하는 유효성 검사 오류를 확인합니다. 이벤트는 CLI 출력의 Events 섹션에서 검토가 가능합니다.

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

    kubectl get nodes
    

    업데이트에 실패하면 호스트를 대체하여 버전 업데이트를 적용 해야 합니다.

  10. 중복된 작업자 노드가 없는지 확인하십시오. 일부 경우에 업데이트 후 이전 클러스터가 NotReady 상태의 중복된 작업자 노드를 나열할 수 있습니다. 중복 항목을 제거하려면 문제점 해결을 참조하십시오.

호스트를 대체하여 작업자 노드에 버전 업데이트 적용

위치에 연결된 호스트는 자동으로 업데이트되지 않습니다. 버전 업데이트를 적용하려면, 먼저 ‘ Satellite ’ 기능이 활성화된 ‘ IBM Cloud ’ 서비스 에 새 호스트를 연결하고 할당한 다음, 기존 호스트를 제거하면 됩니다. 부 버전 및 패치 버전 업데이트를 제자리에 적용할 수도 있습니다.

  1. 현재 호스트를 나열하고 해당 ID를 기록해 두십시오. 이는 업데이트된 호스트를 연결한 후 제거할 호스트입니다.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    출력 예를 검토하십시오.

    ID                                                        Primary IP      Flavor   State    Status   Zone     Version   
    sat-satliberty-5b4c7f3a7bfc14cf58cbb14ad5c08429475274fe   208.43.36.202   upi      normal   Ready    zone-1   4.7.19_1525_openshift*   
    
  2. 새 호스트를 Satellite 위치에 연결하십시오. 연결하는 호스트 수는 업데이트할 호스트 수와 일치해야 합니다.

  3. 새로 연결된 호스트를 Satellite 리소스에 지정하십시오. 이러한 호스트는 지정 시 자동으로 업데이트를 수신합니다.

  4. 새 호스트가 Satellite 리소스에 지정된 후 이전에 언급한 이전 호스트를 제거 및 삭제하십시오.

Red Hat OpenShift on IBM Cloud 콘솔에서 작업자 노드 호스트 업데이트

Red Hat OpenShift on IBM Cloud 콘솔을 사용하여 작업자 노드 호스트를 업데이트할 수 있습니다.

  1. IBM Cloud 콘솔에 로그인하고 OpenShift > 클러스터를 클릭하십시오.
  2. 업데이트하려는 호스트가 지정된 클러스터를 클릭하고 작업자 노드 페이지로 이동하십시오.
  3. 업데이트할 각 호스트를 선택하십시오. 호스트를 선택하면 업데이트 옵션이 표시됩니다.
  4. 업데이트 를 클릭하십시오. 표시되는 대화 상자에서 업데이트를 다시 클릭하십시오. 업데이트가 시작되었음을 나타내는 메시지가 표시됩니다.
  5. 호스트가 업데이트되는 동안 기다리십시오. 호스트의 상태정상으로 돌아가고 새 버전이 버전 열에 나열되면 각 호스트에 대한 업데이트 프로세스가 완료된 것입니다.

작업자 노드 버전 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 판별

작업자 노드를 업데이트하는 프로세스는 모든 유형의 업데이트에 대해 동일합니다. 그러나 업데이트가 주 업데이트, 부 업데이트 또는 패치 업데이트인지 여부에 대한 정보를 찾을 수 있습니다.

사용 가능한 업데이트 유형을 판별하려면 현재 작업자 노드 버전을 Red Hat OpenShift 버전 변경 로그의 최신 worker node fix pack 버전과 비교하십시오. 주 업데이트는 버전 레이블의 첫 번째 숫자(4.x.x)로 표시되고 부 업데이트는 두 번째 숫자(x.7.x)로 표시되며 패치 업데이트는 후행 숫자(x.x.23_1528_openshift)로 표시됩니다. 버전 업데이트에 대한 자세한 정보는 버전 정보 및 업데이트 조치를 참조하십시오.