클러스터 업데이트


OpenShift Container Platform 4.19

OpenShift Container Platform 클러스터 업데이트

Red Hat OpenShift Documentation Team

초록

이 문서는 OpenShift Container Platform 클러스터 업데이트 또는 업그레이드에 대한 정보를 제공합니다. 클러스터 업데이트는 클러스터를 오프라인으로 전환할 필요없이 간단한 프로세스로 실행할 수 있습니다.

1장. OpenShift 업데이트 이해

1.1. OpenShift 업데이트 소개

OpenShift Container Platform 4를 사용하면 웹 콘솔이나 OpenShift CLI( oc )를 사용하여 단일 작업으로 OpenShift Container Platform 클러스터를 업데이트할 수 있습니다. 플랫폼 관리자는 웹 콘솔에서 관리클러스터 설정 으로 이동하거나 oc adm upgrade 명령의 출력을 확인하여 새로운 업데이트 옵션을 볼 수 있습니다.

Red Hat은 공식 레지스트리에 있는 OpenShift Container Platform 릴리스 이미지를 기반으로 업데이트 가능성 그래프를 제공하는 공개 OpenShift 업데이트 서비스(OSUS)를 호스팅합니다. 그래프에는 공개 OCP 릴리스에 대한 업데이트 정보가 포함되어 있습니다. OpenShift Container Platform 클러스터는 기본적으로 OSUS에 연결되도록 구성되며, OSUS는 알려진 업데이트 대상에 대한 정보를 사용하여 클러스터에 응답합니다.

업데이트는 클러스터 관리자나 자동 업데이트 컨트롤러가 클러스터 버전 운영자(CVO)의 사용자 지정 리소스(CR)를 새 버전으로 편집할 때 시작됩니다. 클러스터를 새로 지정된 버전으로 조정하기 위해 CVO는 이미지 레지스트리에서 대상 릴리스 이미지를 검색하고 클러스터에 변경 사항을 적용하기 시작합니다.

참고

이전에 Operator Lifecycle Manager(OLM)를 통해 설치한 운영자는 다른 업데이트 프로세스를 따릅니다. 자세한 내용은 설치된 운영자 업데이트를 참조하세요.

대상 릴리스 이미지에는 특정 OCP 버전을 구성하는 모든 클러스터 구성 요소에 대한 매니페스트 파일이 포함되어 있습니다. 클러스터를 새 버전으로 업데이트할 때 CVO는 실행 수준이라는 별도의 단계에 매니페스트를 적용합니다. 대부분의 매니페스트는 클러스터 운영자 중 하나를 지원하지만, 전부는 아닙니다. CVO가 클러스터 운영자에 매니페스트를 적용하면 운영자는 새로 지정된 버전에 맞게 조정하기 위해 업데이트 작업을 수행할 수 있습니다.

CVO는 적용된 각 리소스의 상태와 모든 클러스터 운영자가 보고한 상태를 모니터링합니다. CVO는 활성 실행 레벨의 모든 매니페스트와 클러스터 운영자가 안정적인 상태에 도달할 때만 업데이트를 진행합니다. CVO가 이 프로세스를 통해 전체 제어 평면을 업데이트한 후, MCO(Machine Config Operator)는 클러스터의 모든 노드의 운영 체제와 구성을 업데이트합니다.

1.1.1. 업데이트 가용성에 대한 일반적인 질문

OpenShift Container Platform 클러스터에 업데이트가 제공되는지 여부와 시기에 영향을 미치는 여러 요소가 있습니다. 다음 목록은 업데이트 가능 여부와 관련된 일반적인 질문을 제공합니다.

각 업데이트 채널의 차이점은 무엇인가요?

  • 새로운 릴리스는 처음에 후보 채널에 추가됩니다.
  • 성공적인 최종 테스트가 끝나면 후보 채널의 릴리스가 빠른 채널로 승격되고, 정정 사항이 게시되며, 이제 릴리스가 완벽하게 지원됩니다.
  • 지연 후, 빠른 채널에서 릴리스된 것이 마침내 안정 채널로 승격됩니다. 이 지연은 fast 채널과 stable 채널의 유일한 차이점입니다.

    참고

    최신 z-stream 릴리스의 경우 이 지연은 일반적으로 1주 또는 2주가 될 수 있습니다. 그러나 최신 마이너 버전으로의 최초 업데이트가 지연되는 데는 일반적으로 45~90일이 걸릴 수 있습니다.

  • 안정 채널로 승격된 릴리스는 동시에 eus 채널로 승격됩니다. eus 채널의 주요 목적은 제어 평면 전용 업데이트를 수행하는 클러스터의 편의성을 제공하는 것입니다.

안정적인 채널에 출시하는 것이 빠른 채널에 출시하는 것보다 더 안전하거나 더 많은 지원을 받을 수 있나요?

  • 빠른 채널의 릴리스에서 회귀가 확인되면 안정적인 채널의 릴리스에서 해당 회귀가 확인된 것과 동일한 수준으로 해결되고 관리됩니다.
  • 빠른 채널과 안정적인 채널에서 릴리스되는 것의 유일한 차이점은 릴리스가 빠른 채널에서 일정 기간 동안 유지된 후에야 안정적인 채널에 나타난다는 점입니다. 이를 통해 새로운 업데이트 위험을 발견할 수 있는 시간이 더 많아집니다.
  • 빠른 채널에서 제공되는 릴리스는 이 지연 시간 이후에는 항상 안정적인 채널에서 제공되게 됩니다.

업데이트에 알려진 문제가 있다는 것은 무엇을 의미합니까?

  • Red Hat은 여러 소스의 데이터를 지속적으로 평가하여 한 버전에서 다른 버전으로의 업데이트에 선언된 문제가 있는지 확인합니다. 발견된 문제는 일반적으로 해당 버전의 릴리스 노트에 기록됩니다. 업데이트 경로에 알려진 문제가 있는 경우에도 고객은 업데이트를 수행하면 계속 지원을 받을 수 있습니다.
  • Red Hat은 사용자가 특정 버전으로 업데이트하는 것을 차단하지 않습니다. Red Hat은 특정 클러스터에 적용될 수도 있고 그렇지 않을 수도 있는 조건부 업데이트 위험을 선언할 수 있습니다.

    • 선언된 위험은 클러스터 관리자에게 지원되는 업데이트에 대한 더 많은 정보를 제공합니다. 클러스터 관리자는 여전히 위험을 감수하고 해당 대상 버전으로 업데이트할 수 있습니다.

특정 릴리스에 대한 업데이트가 더 이상 권장되지 않는 경우 어떻게 해야 하나요?

  • Red Hat이 회귀로 인해 지원되는 모든 릴리스에서 업데이트 권장 사항을 제거하는 경우, 회귀를 수정하는 대체 업데이트 권장 사항이 향후 버전에 제공됩니다. 결함을 수정하고 테스트하여 선택한 채널에 홍보하는 동안 지연이 발생할 수 있습니다.

다음 z-stream 릴리스가 빠르고 안정적인 채널에서 제공되기까지 얼마나 걸리나요?

  • 구체적인 주기는 여러 요인에 따라 다를 수 있지만, 최신 마이너 버전에 대한 새로운 z-stream 릴리스는 일반적으로 매주 제공됩니다. 시간이 지나면서 안정성이 높아진 이전의 마이너 버전은 새로운 z-stream 릴리스가 출시되기까지 훨씬 더 오랜 시간이 걸릴 수 있습니다.

    중요

    이는 과거 z-stream 릴리스에 대한 데이터를 기반으로 한 추정치일 뿐입니다. Red Hat은 필요에 따라 출시 빈도를 변경할 권리가 있습니다. 여러 가지 문제로 인해 이 릴리스 주기에 불규칙성과 지연이 발생할 수 있습니다.

  • Z-stream 릴리스가 게시되면 해당 마이너 버전의 빠른 채널에도 나타납니다. 일정 시간 지연 후, z-stream 릴리스가 해당 마이너 버전의 안정 채널에 나타날 수 있습니다.

1.1.2. OpenShift 업데이트 서비스 정보

OpenShift 업데이트 서비스(OSUS)는 Red Hat Enterprise Linux CoreOS(RHCOS)를 포함한 OpenShift Container Platform에 대한 업데이트 권장 사항을 제공합니다. 구성 요소 Operator의 정점과 이를 연결하는 에지를 포함하는 그래프 또는 다이어그램을 제공합니다. 그래프의 에지에는 안전하게 업데이트할 수 있는 버전이 표시됩니다. 정점은 관리형 클러스터 구성 요소의 상태를 지정하는 업데이트 페이로드입니다.

클러스터의 CVO (Cluster Version Operator)는 OpenShift Update Service를 확인하여 현재 구성 요소 버전 및 그래프의 정보를 기반으로 유효한 업데이트 및 업데이트 경로를 확인합니다. 업데이트를 요청하면 CVO는 해당 릴리스 이미지를 사용하여 클러스터를 업데이트합니다. 릴리스 아티팩트는 Quay에서 컨테이너 이미지로 호스팅됩니다.

OpenShift Update Service가 호환 가능한 업데이트만 제공할 수 있도록 자동화를 지원하는 버전 확인 파이프 라인이 제공됩니다. 각 릴리스 아티팩트는 지원되는 클라우드 플랫폼 및 시스템 아키텍처 및 기타 구성 요소 패키지와의 호환성 여부를 확인합니다. 파이프 라인에서 적용 가능한 버전이 있음을 확인한 후 OpenShift Update Service는 해당 버전 업데이트를 사용할 수 있음을 알려줍니다.

OpenShift 업데이트 서비스(OSUS)는 단일 스트림 릴리스 모델을 지원합니다. 즉, 항상 하나의 릴리스 버전만 활성화되고 지원됩니다. 새로운 릴리스가 배포되면 이전 릴리스가 완전히 대체됩니다.

업데이트된 릴리스에서는 4.8부터 최신 릴리스 버전까지의 모든 OpenShift Container Platform 버전에서 업그레이드를 지원합니다.

중요

OpenShift Update Service는 현재 클러스터에 권장되는 모든 업데이트를 표시합니다. OpenShift 업데이트 서비스에서 업데이트 경로를 권장하지 않는 경우, 비호환성이나 가용성 등 업데이트 경로와 관련된 알려진 문제가 원인일 수 있습니다.

연속 업데이트 모드에서는 두 개의 컨트롤러가 실행됩니다. 하나의 컨트롤러는 페이로드 매니페스트를 지속적으로 업데이트하여 매니페스트를 클러스터에 적용한 다음 Operator의 제어된 롤아웃 상태를 출력하여 사용 가능한지, 업그레이드했는지 또는 실패했는지의 여부를 나타냅니다. 두 번째 컨트롤러는 OpenShift Update Service를 폴링하여 업데이트를 사용할 수 있는지 확인합니다.

중요

최신 버전으로만 업데이트할 수 있습니다. 클러스터를 이전 버전으로 되돌리거나 롤백을 수행하는 것은 지원되지 않습니다. 업데이트에 실패하면 Red Hat 지원에 문의하십시오.

업데이트 프로세스 중에 MCO(Machine Config Operator)는 새 설정을 클러스터 머신에 적용합니다. MCO는 머신 구성 풀의 maxUnavailable 필드에 지정된 노드 수를 제한하고 사용할 수 없음을 표시합니다. 기본적으로 이 값은 1로 설정됩니다. MCO는 topology.kubernetes.io/zone 레이블을 기반으로 영역별로 영향을 받는 노드를 업데이트합니다. 영역에 둘 이상의 노드가 있으면 가장 오래된 노드가 먼저 업데이트됩니다. 베어 메탈 배포에서와 같이 영역을 사용하지 않는 노드의 경우 노드가 수명에 따라 업데이트되며 가장 오래된 노드가 먼저 업데이트됩니다. MCO는 머신 구성 풀의 maxUnavailable 필드에 지정된 노드 수를 한 번에 업데이트합니다. MCO는 새 설정을 적용하여 컴퓨터를 다시 시작합니다.

주의

OpenShift Container Platform의 모든 머신 구성 풀에 대한 maxUnavailable 의 기본 설정은 1 입니다. 이 값은 변경하지 말고 한 번에 하나의 제어 평면 노드만 업데이트하는 것이 좋습니다. 제어 평면 풀의 경우 이 값을 3 으로 변경하지 마세요.

Red Hat Enterprise Linux(RHEL) 머신을 작업자로 사용하는 경우 MCO는 kubelet을 업데이트하지 않습니다. 먼저 머신에서 OpenShift API를 업데이트해야 하기 때문입니다.

새 버전의 사양이 이전 kubelet에 적용되므로 RHEL 머신을 Ready 상태로 되돌릴 수 없습니다. 컴퓨터를 사용할 수 있을 때까지 업데이트를 완료할 수 없습니다. 그러나 사용 불가능한 최대 노드 수를 설정하면 사용할 수 없는 머신의 수가 이 값을 초과하지 않는 경우에도 정상적인 클러스터 작업을 계속할 수 있습니다.

OpenShift Update Service는 Operator 및 하나 이상의 애플리케이션 인스턴스로 구성됩니다.

1.1.3. 클러스터 연산자 조건 유형 이해

클러스터 운영자의 상태에는 운영자의 현재 상태를 알려주는 상태 유형이 포함됩니다. 다음 정의는 몇 가지 일반적인 ClusterOperator 조건 유형 목록을 다룹니다. 추가 조건 유형이 있고 연산자별 언어를 사용하는 연산자는 생략되었습니다.

클러스터 버전 운영자(CVO)는 클러스터 관리자가 OpenShift Container Platform 클러스터의 상태를 더 잘 이해할 수 있도록 클러스터 운영자로부터 상태 조건을 수집하는 역할을 합니다.

  • 사용 가능: 사용 가능 조건 유형은 연산자가 클러스터에서 작동하고 사용 가능함을 나타냅니다. 상태가 False 인 경우 피연산자의 일부 이상이 작동하지 않으며 조건에 따라 관리자가 개입해야 합니다.
  • 진행 중: 진행 중이 라는 조건 유형은 운영자가 적극적으로 새로운 코드를 출시하고, 구성 변경 사항을 전파하고 있거나, 다른 방식으로 하나의 안정된 상태에서 다른 안정된 상태로 이동하고 있음을 나타냅니다.

    연산자는 이전에 알려진 상태를 조정할 때 진행 조건 유형을 으로 보고하지 않습니다. 관찰된 클러스터 상태가 변경되었고 운영자가 이에 반응하는 경우, 하나의 정상 상태에서 다른 정상 상태로 이동하고 있으므로 상태가 True 로 보고됩니다.

  • 저하됨: 저하된 조건 유형은 운영자의 현재 상태가 일정 기간 동안 필요한 상태와 일치하지 않음을 나타냅니다. 기간은 구성 요소에 따라 다를 수 있지만, 저하된 상태는 운영자의 상태를 지속적으로 관찰하는 것을 나타냅니다. 결과적으로, 운영자는 저하된 상태로 변동하지 않습니다.

    한 상태에서 다른 상태로의 전환이 저하됨을 보고할 만큼 오랫동안 지속되지 않으면 다른 조건 유형이 있을 수 있습니다. 운영자가 정상적인 업데이트 과정에서 성능 저하를 보고하지 않습니다. 운영자는 관리자의 개입이 필요한 지속적인 인프라 장애에 대한 대응으로 저하를 보고할 수 있습니다.

    참고

    이 조건 유형은 조사 및 조정이 필요할 수 있음을 나타내는 지표일 뿐입니다. 운영자가 사용 가능한 한, 성능 저하 조건은 사용자 작업 장애나 애플리케이션 가동 중지를 유발하지 않습니다.

  • 업그레이드 가능: 업그레이드 가능 조건 유형은 현재 클러스터 상태를 기준으로 운영자가 업데이트하기에 안전한지 여부를 나타냅니다. 메시지 필드에는 클러스터를 성공적으로 업데이트하기 위해 관리자가 수행해야 하는 작업에 대한 사람이 읽을 수 있는 설명이 포함되어 있습니다. CVO는 이 조건이 True , Unknown 또는 missing인 경우 업데이트를 허용합니다.

    업그레이드 가능 상태가 False 인 경우, 사소한 업데이트만 영향을 받으며, CVO는 강제로 수행하지 않는 한 클러스터가 영향을 받는 업데이트를 수행하지 못하도록 합니다.

1.1.4. 클러스터 버전 조건 유형 이해

클러스터 버전 운영자(CVO)는 클러스터 운영자와 기타 구성 요소를 모니터링하고 클러스터 버전과 운영자의 상태를 수집하는 역할을 합니다. 이 상태에는 OpenShift Container Platform 클러스터의 상태와 현재 상태를 알려주는 조건 유형이 포함됩니다.

Available , Progressing , Upgradeable 외에도 클러스터 버전과 Operators에 영향을 미치는 조건 유형이 있습니다.

  • 실패: 클러스터 버전 조건 유형 ' 실패' 는 클러스터가 원하는 상태에 도달할 수 없고, 상태가 좋지 않으며, 관리자의 개입이 필요하다는 것을 나타냅니다.
  • 유효하지 않음: 클러스터 버전 조건 유형이 유효하지 않음은 클러스터 버전에 오류가 있어 서버가 조치를 취할 수 없음을 나타냅니다. CVO는 이 조건이 설정되어 있는 동안만 현재 상태를 조정합니다.
  • RetrievedUpdates: 클러스터 버전 조건 유형 RetrievedUpdates는 사용 가능한 업데이트가 업스트림 업데이트 서버에서 검색되었는지 여부를 나타냅니다. 검색 전에는 알 수 없음 조건이고, 업데이트가 최근에 실패했거나 검색할 수 없는 경우 False 조건 이고, availableUpdates 필드가 최신이고 정확한 경우 True 조건이 됩니다.
  • ReleaseAccepted: True 상태를 갖는 클러스터 버전 조건 유형 ReleaseAccepted는 요청된 릴리스 페이로드가 이미지 검증 및 사전 조건 검사 중에 오류 없이 성공적으로 로드되었음을 나타냅니다.
  • ImplicitlyEnabledCapabilities: True 상태를 갖는 클러스터 버전 조건 유형 ImplicitlyEnabledCapabilities 는 사용자가 현재 spec.capabilities를 통해 요청하지 않는 활성화된 기능이 있음을 나타냅니다. CVO는 연관된 리소스가 이전에 CVO에 의해 관리된 경우 기능 비활성화를 지원하지 않습니다.

1.1.5. 일반 용어

컨트롤 플레인
컨트롤 플레인 시스템으로 구성된 컨트롤 플레인은 OpenShift Container Platform 클러스터를 관리합니다. 컨트롤 플레인 머신에서는 작업자 머신이라고도 하는 컴퓨팅 머신의 워크로드를 관리합니다.
Cluster Version Operator
클러스터 버전 운영자 (CVO)는 클러스터에 대한 업데이트 프로세스를 시작합니다. 현재 클러스터 버전을 기준으로 OSUS에 확인하고 사용 가능하거나 가능한 업데이트 경로가 포함된 그래프를 검색합니다.
Machine Config Operator
MCO( Machine Config Operator )는 운영 체제와 머신 구성을 관리하는 클러스터 수준 운영자입니다. MCO를 통해 플랫폼 관리자는 작업자 노드에서 systemd, CRI-O 및 Kubelet, 커널, NetworkManager 및 기타 시스템 기능을 구성하고 업데이트할 수 있습니다.
OpenShift 업데이트 서비스
OpenShift 업데이트 서비스 (OSUS)는 Red Hat Enterprise Linux CoreOS(RHCOS)를 포함하여 OpenShift Container Platform에 대한 무선 업데이트를 제공합니다. 이는 구성 연산자의 정점과 정점을 연결하는 간선을 포함하는 그래프 또는 다이어그램을 제공합니다.
채널
채널은 OpenShift Container Platform의 하위 버전에 연결된 업데이트 전략을 선언합니다. OSUS는 이 구성된 전략을 사용하여 해당 전략과 일치하는 에지를 업데이트할 것을 권장합니다.
권장 업데이트 에지
권장되는 업데이트 에지는 OpenShift Container Platform 릴리스 간에 권장되는 업데이트입니다. 해당 업데이트가 권장되는지 여부는 클러스터의 구성된 채널, 현재 버전, 알려진 버그 및 기타 정보에 따라 달라질 수 있습니다. OSUS는 모든 클러스터에서 실행되는 CVO에 권장되는 에지를 전달합니다.

1.2. 클러스터 업데이트 작동 방식

다음 섹션에서는 OpenShift Container Platform(OCP) 업데이트 프로세스의 각 주요 측면을 자세히 설명합니다. 업데이트가 작동하는 방법에 대한 일반적인 개요는 OpenShift 업데이트 소개를 참조하십시오.

1.2.1. 클러스터 버전 연산자

클러스터 버전 운영자(CVO)는 OpenShift 컨테이너 플랫폼 업데이트 프로세스를 조율하고 원활하게 하는 주요 구성 요소입니다. 설치 및 표준 클러스터 운영 중에 CVO는 관리되는 클러스터 운영자의 매니페스트를 클러스터 내 리소스와 지속적으로 비교하고, 불일치 사항을 조정하여 이러한 리소스의 실제 상태가 원하는 상태와 일치하는지 확인합니다.

1.2.1.1. ClusterVersion 오브젝트

CVO(Cluster Version Operator)가 모니터링하는 리소스 중 하나는 ClusterVersion 리소스입니다.

관리자와 OpenShift 구성 요소는 ClusterVersion 객체를 통해 CVO와 통신하거나 상호 작용할 수 있습니다. 원하는 CVO 상태는 ClusterVersion 객체를 통해 선언되고 현재 CVO 상태는 객체의 상태에 반영됩니다.

참고

ClusterVersion 객체를 직접 수정하지 마세요. 대신 oc CLI나 웹 콘솔과 같은 인터페이스를 사용하여 업데이트 대상을 선언하세요.

CVO는 ClusterVersion 리소스의 spec 속성에 선언된 대상 상태와 클러스터를 지속적으로 조정합니다. 원하는 릴리스가 실제 릴리스와 다른 경우 해당 조정을 통해 클러스터가 업데이트됩니다.

1.2.1.1.1. 가용성 데이터 업데이트

ClusterVersion 리소스에는 클러스터에서 사용할 수 있는 업데이트에 대한 정보도 포함되어 있습니다. 여기에는 클러스터에 적용되는 알려진 위험으로 인해 사용 가능하지만 권장되지 않는 업데이트가 포함됩니다. 이러한 업데이트는 조건부 업데이트라고 합니다. CVO가 ClusterVersion 리소스에서 사용 가능한 업데이트에 대한 정보를 어떻게 유지 관리하는지 알아보려면 "업데이트 가용성 평가" 섹션을 참조하세요.

  • 다음 명령을 사용하면 사용 가능한 모든 업데이트를 검사할 수 있습니다.

    $ oc adm upgrade --include-not-recommended
    Copy to Clipboard Toggle word wrap
    참고

    추가 --include-not-recommended 매개변수에는 클러스터에 적용되는 알려진 문제가 있는 업데이트가 포함됩니다.

    출력 예

    Cluster version is 4.13.40
    
    Upstream is unset, so the cluster will use an appropriate default.
    Channel: stable-4.14 (available channels: candidate-4.13, candidate-4.14, eus-4.14, fast-4.13, fast-4.14, stable-4.13, stable-4.14)
    
    Recommended updates:
    
      VERSION     IMAGE
      4.14.27     quay.io/openshift-release-dev/ocp-release@sha256:4d30b359aa6600a89ed49ce6a9a5fdab54092bcb821a25480fdfbc47e66af9ec
      4.14.26     quay.io/openshift-release-dev/ocp-release@sha256:4fe7d4ccf4d967a309f83118f1a380a656a733d7fcee1dbaf4d51752a6372890
      4.14.25     quay.io/openshift-release-dev/ocp-release@sha256:a0ef946ef8ae75aef726af1d9bbaad278559ad8cab2c1ed1088928a0087990b6
      4.14.24     quay.io/openshift-release-dev/ocp-release@sha256:0a34eac4b834e67f1bca94493c237e307be2c0eae7b8956d4d8ef1c0c462c7b0
      4.14.23     quay.io/openshift-release-dev/ocp-release@sha256:f8465817382128ec7c0bc676174bad0fb43204c353e49c146ddd83a5b3d58d92
      4.13.42     quay.io/openshift-release-dev/ocp-release@sha256:dcf5c3ad7384f8bee3c275da8f886b0bc9aea7611d166d695d0cf0fff40a0b55
      4.13.41     quay.io/openshift-release-dev/ocp-release@sha256:dbb8aa0cf53dc5ac663514e259ad2768d8c82fd1fe7181a4cfb484e3ffdbd3ba
    
    Updates with known issues:
    
      Version: 4.14.22
      Image: quay.io/openshift-release-dev/ocp-release@sha256:7093fa606debe63820671cc92a1384e14d0b70058d4b4719d666571e1fc62190
      Reason: MultipleReasons
      Message: Exposure to AzureRegistryImageMigrationUserProvisioned is unknown due to an evaluation failure: client-side throttling: only 18.061µs has elapsed since the last match call completed for this cluster condition backend; this cached cluster condition request has been queued for later execution
      In Azure clusters with the user-provisioned registry storage, the in-cluster image registry component may struggle to complete the cluster update. https://issues.redhat.com/browse/IR-468
    
      Incoming HTTP requests to services exposed by Routes may fail while routers reload their configuration, especially when made with Apache HTTPClient versions before 5.0. The problem is more likely to occur in clusters with higher number of Routes and corresponding endpoints. https://issues.redhat.com/browse/NE-1689
    
      Version: 4.14.21
      Image: quay.io/openshift-release-dev/ocp-release@sha256:6e3fba19a1453e61f8846c6b0ad3abf41436a3550092cbfd364ad4ce194582b7
      Reason: MultipleReasons
      Message: Exposure to AzureRegistryImageMigrationUserProvisioned is unknown due to an evaluation failure: client-side throttling: only 33.991µs has elapsed since the last match call completed for this cluster condition backend; this cached cluster condition request has been queued for later execution
      In Azure clusters with the user-provisioned registry storage, the in-cluster image registry component may struggle to complete the cluster update. https://issues.redhat.com/browse/IR-468
    
      Incoming HTTP requests to services exposed by Routes may fail while routers reload their configuration, especially when made with Apache HTTPClient versions before 5.0. The problem is more likely to occur in clusters with higher number of Routes and corresponding endpoints. https://issues.redhat.com/browse/NE-1689
    Copy to Clipboard Toggle word wrap

    oc adm upgrade 명령은 사용 가능한 업데이트에 대한 정보를 ClusterVersion 리소스에 쿼리하여 사람이 읽을 수 있는 형식으로 표시합니다.

  • CVO가 생성한 기본 가용성 데이터를 직접 검사하는 한 가지 방법은 다음 명령을 사용하여 ClusterVersion 리소스를 쿼리하는 것입니다.

    $ oc get clusterversion version -o json | jq '.status.availableUpdates'
    Copy to Clipboard Toggle word wrap

    출력 예

    [
      {
        "channels": [
          "candidate-4.11",
          "candidate-4.12",
          "fast-4.11",
          "fast-4.12"
        ],
        "image": "quay.io/openshift-release-dev/ocp-release@sha256:400267c7f4e61c6bfa0a59571467e8bd85c9188e442cbd820cc8263809be3775",
        "url": "https://access.redhat.com/errata/RHBA-2023:3213",
        "version": "4.11.41"
      },
      ...
    ]
    Copy to Clipboard Toggle word wrap

  • 비슷한 명령을 사용하여 조건부 업데이트를 확인할 수 있습니다.

    $ oc get clusterversion version -o json | jq '.status.conditionalUpdates'
    Copy to Clipboard Toggle word wrap

    출력 예

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-05-30T16:28:59Z",
            "message": "The 4.11.36 release only resolves an installation issue https://issues.redhat.com//browse/OCPBUGS-11663 , which does not affect already running clusters. 4.11.36 does not include fixes delivered in recent 4.11.z releases and therefore upgrading from these versions would cause fixed bugs to reappear. Red Hat does not recommend upgrading clusters to 4.11.36 version for this reason. https://access.redhat.com/solutions/7007136",
            "reason": "PatchesOlderRelease",
            "status": "False",
            "type": "Recommended"
          }
        ],
        "release": {
          "channels": [...],
          "image": "quay.io/openshift-release-dev/ocp-release@sha256:8c04176b771a62abd801fcda3e952633566c8b5ff177b93592e8e8d2d1f8471d",
          "url": "https://access.redhat.com/errata/RHBA-2023:1733",
          "version": "4.11.36"
        },
        "risks": [...]
      },
      ...
    ]
    Copy to Clipboard Toggle word wrap

1.2.1.2. 업데이트 가용성 평가

클러스터 버전 운영자(CVO)는 업데이트 가능성에 대한 최신 데이터를 얻기 위해 OpenShift 업데이트 서비스(OSUS)에 주기적으로 쿼리를 보냅니다. 이 데이터는 클러스터의 구독 채널을 기반으로 합니다. 그런 다음 CVO는 ClusterVersion 리소스의 availableUpdates 또는 conditionalUpdates 필드에 업데이트 권장 사항에 대한 정보를 저장합니다.

CVO는 업데이트 위험에 대한 조건부 업데이트를 주기적으로 확인합니다. 이러한 위험은 OSUS에서 제공하는 데이터를 통해 전달됩니다. 이 데이터에는 해당 버전으로 업데이트된 클러스터에 영향을 미칠 수 있는 알려진 문제에 대한 정보가 각 버전별로 포함되어 있습니다. 대부분의 위험은 특정 규모의 클러스터나 특정 클라우드 플랫폼에 배포된 클러스터 등 특정한 특성을 지닌 클러스터에 국한됩니다.

CVO는 각 조건부 업데이트에 대한 조건부 위험 정보에 대해 클러스터 특성을 지속적으로 평가합니다. CVO가 클러스터가 기준에 부합한다고 판단하면 CVO는 이 정보를 ClusterVersion 리소스의 conditionalUpdates 필드에 저장합니다. CVO가 클러스터가 업데이트 위험에 맞지 않거나 업데이트와 관련된 위험이 없다고 판단하는 경우, ClusterVersion 리소스의 availableUpdates 필드에 대상 버전을 저장합니다.

사용자 인터페이스(웹 콘솔 또는 OpenShift CLI( oc ))는 이 정보를 섹션별 제목으로 관리자에게 표시합니다. 업데이트 경로와 관련된 각 알려진 문제에는 해당 위험에 대한 추가 리소스에 대한 링크가 포함되어 있어 관리자가 업데이트에 대한 정보에 입각한 결정을 내릴 수 있습니다.

1.2.2. 릴리스 이미지

릴리스 이미지는 특정 OpenShift Container Platform(OCP) 버전을 제공하는 메커니즘입니다. 여기에는 릴리스 메타데이터, 릴리스 버전과 일치하는 클러스터 버전 운영자(CVO) 바이너리, 개별 OpenShift 클러스터 운영자를 배포하는 데 필요한 모든 매니페스트, 이 OpenShift 버전을 구성하는 모든 컨테이너 이미지에 대한 SHA 다이제스트 버전 참조 목록이 포함됩니다.

다음 명령을 실행하여 특정 릴리스 이미지의 내용을 검사할 수 있습니다.

$ oc adm release extract <release image>
Copy to Clipboard Toggle word wrap

출력 예

$ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.12.6-x86_64
Extracted release payload from digest sha256:800d1e39d145664975a3bb7cbc6e674fbf78e3c45b5dde9ff2c5a11a8690c87b created at 2023-03-01T12:46:29Z

$ ls
0000_03_authorization-openshift_01_rolebindingrestriction.crd.yaml
0000_03_config-operator_01_proxy.crd.yaml
0000_03_marketplace-operator_01_operatorhub.crd.yaml
0000_03_marketplace-operator_02_operatorhub.cr.yaml
0000_03_quota-openshift_01_clusterresourcequota.crd.yaml 
1

...
0000_90_service-ca-operator_02_prometheusrolebinding.yaml 
2

0000_90_service-ca-operator_03_servicemonitor.yaml
0000_99_machine-api-operator_00_tombstones.yaml
image-references 
3

release-metadata
Copy to Clipboard Toggle word wrap

1
Runlevel 03에 적용될 ClusterResourceQuota CRD에 대한 매니페스트
2
Runlevel 90에 적용될 service-ca-operatorPrometheusRoleBinding 리소스에 대한 매니페스트
3
모든 필수 이미지에 대한 SHA 다이제스트 버전 참조 목록

1.2.3. 프로세스 워크플로 업데이트

다음 단계는 OpenShift Container Platform(OCP) 업데이트 프로세스의 자세한 워크플로를 나타냅니다.

  1. 대상 버전은 ClusterVersion 리소스의 spec.desiredUpdate.version 필드에 저장되며, 웹 콘솔이나 CLI를 통해 관리할 수 있습니다.
  2. 클러스터 버전 운영자(CVO)는 ClusterVersion 리소스의 desiredUpdate 가 현재 클러스터 버전과 다르다는 것을 감지합니다. CVO는 OpenShift 업데이트 서비스의 그래프 데이터를 사용하여 원하는 클러스터 버전을 릴리스 이미지에 대한 풀 사양으로 변환합니다.
  3. CVO는 릴리스 이미지의 무결성과 진위성을 검증합니다. Red Hat은 이미지 SHA 다이제스트를 고유하고 변경할 수 없는 릴리스 이미지 식별자로 사용하여 사전 정의된 위치에 게시된 릴리스 이미지에 대한 암호화된 서명된 진술을 게시합니다. CVO는 내장된 공개 키 목록을 활용하여 검사된 릴리스 이미지와 일치하는 진술의 존재와 서명을 검증합니다.
  4. CVO는 openshift-cluster-version 네임스페이스에 version-$version-$hash라는 이름의 작업을 생성합니다. 이 작업은 릴리스 이미지를 실행하는 컨테이너를 사용하므로 클러스터는 컨테이너 런타임을 통해 이미지를 다운로드합니다. 그런 다음 작업은 릴리스 이미지에서 매니페스트와 메타데이터를 추출하여 CVO에서 액세스할 수 있는 공유 볼륨으로 보냅니다.
  5. CVO는 추출된 매니페스트 및 메타데이터의 유효성을 검사합니다.
  6. CVO는 클러스터에서 문제 조건이 감지되지 않는지 확인하기 위해 몇 가지 전제 조건을 확인합니다. 특정 조건으로 인해 업데이트가 진행되지 않을 수 있습니다. 이러한 조건은 CVO 자체에서 결정하거나, 클러스터 운영자가 업데이트를 위해 문제가 있다고 생각하는 클러스터에 대한 세부 정보를 감지하여 보고합니다.
  7. CVO는 승인된 릴리스를 status.desired 에 기록하고 새 업데이트에 대한 status.history 항목을 만듭니다.
  8. CVO가 릴리스 이미지에서 매니페스트를 조정하기 시작합니다. 클러스터 연산자는 런레벨이라고 하는 별도의 단계로 업데이트되며, CVO는 런레벨에 있는 모든 연산자가 다음 레벨로 넘어가기 전에 업데이트를 완료하도록 보장합니다.
  9. CVO 자체에 대한 매니페스트는 프로세스 초기에 적용됩니다. CVO 배포가 적용되면 현재 CVO 포드가 중지되고 새 버전을 사용하는 CVO 포드가 시작됩니다. 새 CVO는 나머지 매니페스트를 조정합니다.
  10. 업데이트는 전체 제어 평면이 새 버전으로 업데이트될 때까지 진행됩니다. 개별 클러스터 운영자는 클러스터의 해당 도메인에서 업데이트 작업을 수행할 수 있으며, 작업을 수행하는 동안 Progressing=True 조건을 통해 상태를 보고합니다.
  11. MCO(Machine Config Operator) 매니페스트는 프로세스의 마지막에 적용됩니다. 업데이트된 MCO는 모든 노드의 시스템 구성과 운영 체제 업데이트를 시작합니다. 각 노드는 다시 작업 부하를 수용하기 전에 비워지고, 업데이트되고, 재부팅될 수 있습니다.

클러스터는 제어 평면 업데이트가 완료된 후, 일반적으로 모든 노드가 업데이트되기 전에 업데이트된 것으로 보고합니다. 업데이트 후 CVO는 모든 클러스터 리소스를 릴리스 이미지에서 제공된 상태와 일치하도록 유지 관리합니다.

1.2.4. 업데이트 중에 매니페스트가 적용되는 방식 이해

릴리스 이미지에 제공된 일부 매니페스트는 매니페스트 간의 종속성으로 인해 특정 순서로 적용해야 합니다. 예를 들어, CustomResourceDefinition 리소스는 일치하는 사용자 지정 리소스보다 먼저 생성되어야 합니다. 또한, 클러스터의 중단을 최소화하기 위해 개별 클러스터 운영자를 업데이트하는 데에는 논리적 순서가 있습니다. 클러스터 버전 운영자(CVO)는 실행 수준이라는 개념을 통해 이러한 논리적 순서를 구현합니다.

이러한 종속성은 릴리스 이미지의 매니페스트 파일 이름에 인코딩되어 있습니다.

0000_<runlevel>_<component>_<manifest-name>.yaml
Copy to Clipboard Toggle word wrap

예를 들면 다음과 같습니다.

0000_03_config-operator_01_proxy.crd.yaml
Copy to Clipboard Toggle word wrap

CVO는 매니페스트에 대한 종속성 그래프를 내부적으로 구축하며, CVO는 다음 규칙을 따릅니다.

  • 업데이트 중에는 낮은 Runlevel의 매니페스트가 높은 Runlevel의 매니페스트보다 먼저 적용됩니다.
  • 하나의 Runlevel 내에서 다양한 구성 요소에 대한 매니페스트를 병렬로 적용할 수 있습니다.
  • 하나의 Runlevel 내에서는 단일 구성 요소에 대한 매니페스트가 사전식 순서로 적용됩니다.

그런 다음 CVO는 생성된 종속성 그래프에 따라 매니페스트를 적용합니다.

참고

일부 리소스 유형의 경우 CVO는 매니페스트가 적용된 후 리소스를 모니터링하고 리소스가 안정적인 상태에 도달한 후에만 업데이트가 성공적으로 완료된 것으로 간주합니다. 이 상태에 도달하는 데는 시간이 걸릴 수 있습니다. 이는 ClusterOperator 리소스의 경우 특히 그렇습니다. CVO는 클러스터 운영자가 자신을 업데이트한 다음 해당 ClusterOperator 상태를 업데이트할 때까지 기다립니다.

CVO는 다음 Runlevel로 진행하기 전에 Runlevel의 모든 클러스터 운영자가 다음 조건을 충족할 때까지 기다립니다.

  • 클러스터 연산자에는 Available=True 조건이 있습니다.
  • 클러스터 연산자에는 Degraded=False 조건이 있습니다.
  • 클러스터 운영자는 ClusterOperator 리소스에서 원하는 버전을 달성했다고 선언합니다.

일부 작업은 완료하는 데 상당한 시간이 걸릴 수 있습니다. CVO는 후속 실행 레벨이 안전하게 진행될 수 있도록 작업이 완료될 때까지 기다립니다. 새로운 릴리스의 매니페스트를 처음에 조정하는 데는 총 60~120분이 걸릴 것으로 예상됩니다. 업데이트 기간에 영향을 미치는 요소에 대한 자세한 내용은 OpenShift Container Platform 업데이트 기간 이해를 참조하세요.

이전 예제 다이어그램에서 CVO는 Runlevel 20에서 모든 작업이 완료될 때까지 기다리고 있습니다. CVO는 Runlevel의 Operator에 모든 매니페스트를 적용했지만 kube-apiserver-operator ClusterOperator는 새 버전이 배포된 후 일부 작업을 수행합니다. kube-apiserver-operator ClusterOperator는 Progressing=True 조건을 통해 이 진행 상황을 선언하고 status.versions 에서 새 버전을 조정된 것으로 선언하지 않습니다. CVO는 ClusterOperator가 허용 가능한 상태를 보고할 때까지 기다린 다음 Runlevel 25에서 매니페스트 조정을 시작합니다.

1.2.5. Machine Config Operator가 노드를 업데이트하는 방법 이해

MCO(Machine Config Operator)는 각 제어 평면 노드와 컴퓨팅 노드에 새로운 머신 구성을 적용합니다. 머신 구성 업데이트 동안 제어 플레인 노드와 컴퓨트 노드는 자체 머신 구성 풀로 구성되며, 머신 풀은 병렬로 업데이트됩니다. 기본값이 1.spec.maxUnavailable 매개변수는 머신 구성 풀에서 동시에 업데이트 프로세스를 거칠 수 있는 노드 수를 결정합니다.

주의

OpenShift Container Platform의 모든 머신 구성 풀에 대한 maxUnavailable 의 기본 설정은 1 입니다. 이 값은 변경하지 말고 한 번에 하나의 제어 평면 노드만 업데이트하는 것이 좋습니다. 제어 평면 풀의 경우 이 값을 3 으로 변경하지 마세요.

머신 구성 업데이트 프로세스가 시작되면 MCO는 풀에서 현재 사용할 수 없는 노드의 양을 확인합니다. 사용할 수 없는 노드가 .spec.maxUnavailable 값보다 적으면 MCO는 풀에서 사용 가능한 노드에 대해 다음과 같은 일련의 작업을 시작합니다.

  1. 노드를 봉쇄하고 배수합니다.

    참고

    노드가 격리되면 해당 노드에 작업 부하를 예약할 수 없습니다.

  2. 노드의 시스템 구성 및 운영 체제(OS)를 업데이트합니다.
  3. 노드를 재부팅하세요
  4. 노드를 차단 해제합니다

이 프로세스를 거치는 노드는 격리가 해제되고 작업 부하가 다시 예약될 때까지 사용할 수 없습니다. MCO는 사용할 수 없는 노드 수가 .spec.maxUnavailable 값과 같아질 때까지 노드 업데이트를 시작합니다.

노드가 업데이트를 완료하고 사용 가능해지면 머신 구성 풀에서 사용할 수 없는 노드의 수는 다시 .spec.maxUnavailable 보다 적어집니다. 업데이트가 필요한 노드가 남아 있는 경우 MCO는 .spec.maxUnavailable 한도에 다시 도달할 때까지 노드에서 업데이트 프로세스를 시작합니다. 이 프로세스는 각 제어 평면 노드와 컴퓨팅 노드가 업데이트될 때까지 반복됩니다.

다음 예제 워크플로는 5개의 노드가 있는 머신 구성 풀에서 이 프로세스가 어떻게 발생하는지 설명합니다. 여기서 .spec.maxUnavailable 은 3이고 모든 노드가 처음에 사용 가능합니다.

  1. MCO는 노드 1, 2, 3을 봉쇄하고 배수를 시작합니다.
  2. 노드 2의 배수가 완료되고 재부팅되어 다시 사용 가능해집니다. MCO가 노드 4를 봉쇄하고 배수를 시작합니다.
  3. 노드 1의 드레이닝이 완료되고 재부팅되어 다시 사용 가능해집니다. MCO가 노드 5를 봉쇄하고 배수를 시작합니다.
  4. 노드 3의 배수가 완료되고 재부팅되어 다시 사용 가능해집니다.
  5. 노드 5의 배수가 완료되고 재부팅되어 다시 사용 가능해집니다.
  6. 노드 4의 배수가 완료되고 재부팅되어 다시 사용 가능해집니다.

각 노드의 업데이트 프로세스는 다른 노드와 독립적이므로 위의 예에서 일부 노드는 MCO에서 차단된 순서에 관계없이 업데이트를 완료합니다.

다음 명령을 실행하여 머신 구성 업데이트 상태를 확인할 수 있습니다.

$ oc get mcp
Copy to Clipboard Toggle word wrap

출력 예

NAME         CONFIG                                                 UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
master       rendered-master-acd1358917e9f98cbdb599aea622d78b       True      False      False      3              3                   3                     0                      22h
worker       rendered-worker-1d871ac76e1951d32b2fe92369879826       False     True       False      2              1                   1                     0                      22h
Copy to Clipboard Toggle word wrap

1.3. 업데이트 채널 및 릴리스 이해

업데이트 채널은 사용자가 클러스터를 업데이트할 OpenShift Container Platform의 마이너 버전을 선언하는 메커니즘입니다. 또한 사용자는 빠르고 안정적 이며 후보 이고 eus 채널 옵션을 통해 업데이트에 대한 지원의 타이밍과 수준을 선택할 수 있습니다. 클러스터 버전 연산자는 채널 선언을 기반으로 하는 업데이트 그래프와 기타 조건 정보를 사용하여 클러스터에서 사용할 수 있는 권장 및 조건부 업데이트 목록을 제공합니다.

업데이트 채널은 OpenShift Container Platform의 하위 버전에 해당합니다. 채널의 버전 번호는 클러스터의 현재 마이너 버전보다 높더라도 클러스터가 결국 업데이트될 대상 마이너 버전을 나타냅니다.

예를 들어, OpenShift Container Platform 4.10 업데이트 채널은 다음과 같은 권장 사항을 제공합니다.

  • 4.10 이내에 업데이트됩니다.
  • 4.9 내에 업데이트됩니다.
  • 4.9에서 4.10으로 업데이트하면 모든 4.9 클러스터가 즉시 최소 z-stream 버전 요구 사항을 충족하지 못하더라도 결국 4.10으로 업데이트될 수 있습니다.
  • eus-4.10 에만 해당: 4.8 내에서 업데이트됨.
  • eus-4.10 전용: 4.8에서 4.9로, 그리고 4.10으로 업데이트하여 모든 4.8 클러스터가 결국 4.10으로 업데이트될 수 있도록 합니다.

4.10 업데이트 채널에서는 4.11 이상 릴리스로의 업데이트를 권장하지 않습니다. 이 전략은 관리자가 OpenShift Container Platform의 다음 마이너 버전으로 업데이트할지 명시적으로 결정하도록 보장합니다.

업데이트 채널은 릴리스 선택만 제어하며 설치하는 클러스터 버전에는 영향을 미치지 않습니다. OpenShift Container Platform의 특정 버전에 대한 openshift-install 바이너리 파일은 항상 해당 버전을 설치합니다.

OpenShift Container Platform 4.19는 다음과 같은 업데이트 채널을 제공합니다.

  • stable-4.19
  • eus-4.y (EUS 버전에만 제공되며 EUS 버전 간 업데이트를 용이하게 하기 위한 것임)
  • fast-4.19
  • candidate-4.19

클러스터 버전 운영자가 업데이트 권장 서비스에서 사용 가능한 업데이트를 가져오지 않도록 하려면 OpenShift CLI에서 oc adm upgrade channel 명령을 사용하여 빈 채널을 구성할 수 있습니다. 예를 들어, 클러스터의 네트워크 액세스가 제한되어 있고 로컬에서 접근 가능한 업데이트 권장 서비스가 없는 경우 이 구성이 유용할 수 있습니다.

주의

Red Hat은 OpenShift Update Service에서 제안한 버전으로만 업데이트할 것을 권장합니다. 마이너 버전 업데이트의 경우 버전이 연속이어야 합니다. Red Hat은 비연속 버전에 대한 업데이트를 테스트하지 않으며 이전 버전과의 호환성을 보장할 수 없습니다.

1.3.1. 채널 업데이트

1.3.1.1. fast-4.19 채널

Red Hat이 해당 버전을 GA(일반 공급) 릴리스로 선언하자마자 fast-4.19 채널은 OpenShift Container Platform 4.19의 새로운 버전으로 업데이트됩니다. 따라서 이러한 릴리스는 완벽하게 지원되며 프로덕션 환경에서 사용하기 위한 목적으로 만들어졌습니다.

1.3.1.2. 안정적인 4.19 채널

fast-4.19 채널은 정정 사항이 게시되는 즉시 릴리스를 포함하는 반면, stable-4.19 채널에는 지연 후에 릴리스가 추가됩니다. 이러한 지연 기간 동안 여러 소스에서 데이터를 수집하여 제품 회귀의 징후를 분석합니다. 상당수의 데이터 포인트가 수집되면 이러한 릴리스는 안정적인 채널에 추가됩니다.

참고

상당수의 데이터 포인트를 얻는 데 필요한 시간은 여러 요인에 따라 달라지므로, 빠른 채널과 안정적인 채널 간의 지연 기간에 대한 서비스 수준 목표(SLO)는 제공되지 않습니다. 자세한 내용은 "클러스터에 맞는 올바른 채널 선택"을 참조하세요.

새로 설치된 클러스터는 기본적으로 안정적인 채널을 사용합니다.

1.3.1.3. eus-4.y 채널

안정적인 채널 외에도 OpenShift Container Platform의 모든 짝수 마이너 버전은 확장 업데이트 지원 (EUS)을 제공합니다. 안정적인 채널에 홍보된 릴리스는 동시에 EUS 채널에도 홍보됩니다. EUS 채널의 주요 목적은 제어 평면 전용 업데이트를 수행하는 클러스터의 편의성을 제공하는 것입니다.

참고

표준 구독자와 비 EUS 구독자 모두 모든 EUS 저장소와 필요한 RPM( rhel-*-eus-rpms )에 액세스하여 디버깅 및 드라이버 빌드와 같은 중요한 목적을 지원할 수 있습니다.

1.3.1.4. 후보-4.19 채널

candidate-4.19 채널은 릴리스가 빌드되자마자 지원되지 않는 조기 액세스를 제공합니다. 후보 채널에만 존재하는 릴리스에는 최종 GA 릴리스의 전체 기능 세트가 포함되지 않을 수 있으며, GA 이전에 기능이 제거될 수 있습니다. 또한, 이러한 릴리스는 Red Hat의 전체 품질 보증을 거치지 않았으며 이후 GA 릴리스에 대한 업데이트 경로를 제공하지 않을 수 있습니다. 이러한 단서를 감안할 때 후보 채널은 클러스터를 파괴하고 다시 만드는 것이 허용되는 테스트 목적으로만 적합합니다.

1.3.1.5. 채널의 권장 사항 업데이트

OpenShift Container Platform은 설치된 OpenShift Container Platform 버전과 다음 릴리스로 이동하기 위해 채널 내에서 취해야 할 경로를 아는 업데이트 권장 서비스를 유지 관리합니다. 업데이트 경로는 현재 선택한 채널과 해당 프로모션 특성에 관련된 버전으로 제한됩니다.

여러분의 채널에서 다음과 같은 릴리스를 볼 수 있다고 상상해보세요.

  • 4.19.0
  • 4.19.1
  • 4.19.3
  • 4.19.4

이 서비스는 테스트를 거쳐 심각한 회귀 현상이 없는 업데이트만 권장합니다. 예를 들어, 클러스터가 4.19.1이고 OpenShift Container Platform이 4.19.4를 제안하는 경우 4.19.1에서 4.19.4로 업데이트하는 것이 좋습니다.

중요

연속적인 패치 번호에 의존하지 않도록하십시오. 이 예에서 4.19.2는 채널에서 사용할 수 없었고 앞으로도 사용할 수 없으므로 4.19.2에 대한 업데이트는 권장되거나 지원되지 않습니다.

1.3.1.6. 업데이트 권장 사항 및 조건부 업데이트

Red Hat은 지원되는 채널에 추가되기 전과 후에 새로 출시된 버전과 해당 버전과 관련된 업데이트 경로를 모니터링합니다.

Red Hat이 지원되는 모든 릴리스에서 업데이트 권장 사항을 제거하는 경우, 회귀 문제를 수정하는 대체 업데이트 권장 사항이 향후 버전에 제공됩니다. 그러나 결함을 수정하고 테스트하여 선택한 채널에 홍보하는 동안 지연이 발생할 수 있습니다.

OpenShift Container Platform 4.10부터 업데이트 위험이 확인되면 해당 업데이트에 대한 조건부 업데이트 위험으로 선언됩니다. 알려진 각 위험은 모든 클러스터에 적용될 수도 있고, 특정 조건과 일치하는 클러스터에만 적용될 수도 있습니다. 일부 예로는 PlatformNone으로 설정하거나 CNI 공급자가 OpenShiftSDN 으로 설정되는 경우가 있습니다. 클러스터 버전 운영자(CVO)는 현재 클러스터 상태에 대해 알려진 위험을 지속적으로 평가합니다. 위험이 일치하지 않으면 업데이트를 권장합니다. 위험이 일치하는 경우 해당 업데이트 경로는 알려진 문제가 있는 업데이트 로 표시되고, 알려진 문제에 대한 참조 링크가 제공됩니다. 참조 링크는 클러스터 관리자가 위험을 감수하고 클러스터를 계속 업데이트할지 여부를 결정하는 데 도움이 됩니다.

Red Hat이 조건부 업데이트 위험을 선언하기로 선택하면 해당 조치는 모든 관련 채널에서 동시에 취해집니다. 조건부 업데이트 위험 선언은 업데이트가 지원되는 채널에 홍보되기 전이나 후에 발생할 수 있습니다.

1.3.1.7. 클러스터에 맞는 올바른 채널 선택

적절한 채널을 선택하려면 두 가지 결정이 필요합니다.

먼저, 클러스터 업데이트에 사용할 마이너 버전을 선택하세요. 현재 버전과 일치하는 채널을 선택하면 z-stream 업데이트만 적용되고 기능 업데이트는 받지 않게 됩니다. 현재 버전보다 최신 버전이 있는 사용 가능한 채널을 선택하면 하나 이상의 업데이트 이후 클러스터가 해당 버전으로 업데이트됩니다. 귀하의 클러스터에는 현재 버전, 다음 버전 또는 다음 EUS 버전과 일치하는 채널만 제공됩니다.

참고

여러 마이너 버전 간의 업데이트 계획에는 복잡성이 따르기 때문에 단일 제어 평면 전용 업데이트를 넘어서는 업데이트 계획을 지원하는 채널은 제공되지 않습니다.

두 번째로, 원하는 출시 전략을 선택해야 합니다. 빠른 채널을 선택하여 Red Hat에서 릴리스 GA를 선언하자마자 업데이트하도록 선택할 수도 있고, Red Hat에서 안정적인 채널로 릴리스를 홍보할 때까지 기다릴 수도 있습니다. fast-4.19stable-4.19 에서 제공하는 업데이트 권장 사항은 모두 완벽하게 지원되며, 지속적인 데이터 분석을 통해 동등하게 이점을 얻을 수 있습니다. 안정적인 채널로 릴리스를 홍보하기 전의 홍보 지연이 두 채널 간의 유일한 차이점입니다. 최신 z-stream 업데이트는 일반적으로 1주 또는 2주 이내에 stable 채널로 승격되지만, 최신 마이너에 대한 업데이트를 처음 출시할 때의 지연은 일반적으로 45-90일입니다. 원하는 채널을 선택할 때 프로모션 지연을 고려하시기 바랍니다. 안정적인 채널로의 프로모션을 기다리는 것은 일정 계획에 영향을 미칠 수 있습니다.

또한 조직이 클러스터를 영구적으로 또는 일시적으로 빠른 채널로 이동하게 만드는 데에는 다음과 같은 몇 가지 요소가 있습니다.

  • 지체 없이 환경에 영향을 미치는 것으로 알려진 특정 수정 사항을 적용하려는 욕구입니다.
  • CVE 수정 사항을 지체 없이 적용합니다. CVE 수정으로 인해 회귀가 발생할 수 있으므로 CVE 수정이 적용된 z-stream에는 여전히 프로모션 지연이 적용됩니다.
  • 내부 테스트 프로세스. 귀하의 조직에서 릴리스를 적격 심사하는 데 몇 주가 걸리는 경우, 기다리기보다는 프로모션 프로세스와 동시에 테스트하는 것이 가장 좋습니다. 이를 통해 Red Hat에 제공된 모든 원격 측정 신호가 출시에 반영되므로 귀하와 관련된 문제를 더 빨리 해결할 수 있습니다.
1.3.1.8. 네트워크가 제한된 환경의 클러스터

OpenShift Container Platform 클러스터의 컨테이너 이미지를 직접 관리하는 경우 제품 릴리스와 관련된 Red Hat errata를 참조하고 업데이트에 영향을 미치는 모든 의견을 기록해야 합니다. 업데이트 중에 사용자 인터페이스에서 버전 간 전환에 대한 경고가 표시될 수 있으므로, 해당 경고를 무시하기 전에 적절한 버전을 선택했는지 확인해야 합니다.

1.3.1.9. 채널 간 전환

채널은 웹 콘솔에서 전환하거나 adm upgrade channel 명령을 통해 전환할 수 있습니다.

$ oc adm upgrade channel <channel>
Copy to Clipboard Toggle word wrap

현재 릴리스를 포함하지 않는 채널로 전환하면 웹 콘솔에 경고가 표시됩니다. 웹 콘솔은 현재 릴리스가 없는 채널에서 업데이트를 권장하지 않습니다. 하지만 언제든지 원래 채널로 돌아갈 수 있습니다.

채널을 변경하면 클러스터의 지원 가능성에 영향을 미칠 수 있습니다. 다음과 같은 조건이 적용될 수 있습니다.

  • stable-4.19 채널에서 fast-4.19 채널로 변경하더라도 클러스터는 계속 지원됩니다.
  • 언제든지 candidate-4.19 채널로 전환할 수 있지만, 이 채널의 일부 릴리스는 지원되지 않을 수 있습니다.
  • 현재 릴리스가 일반 출시 릴리스인 경우 candidate-4.19 채널에서 fast-4.19 채널로 전환할 수 있습니다.
  • 언제든지 빠른 4.19 채널에서 안정적인 4.19 채널로 전환할 수 있습니다. 현재 릴리스가 최근에 승격된 경우, 릴리스 가 stable-4.19 로 승격되기까지 최대 하루가 지연될 수 있습니다.

1.4. OpenShift 컨테이너 플랫폼 업데이트 기간 이해

OpenShift Container Platform 업데이트 기간은 배포 토폴로지에 따라 다릅니다. 이 페이지는 업데이트 기간에 영향을 미치는 요소를 이해하고 사용자 환경에서 클러스터 업데이트에 걸리는 시간을 추정하는 데 도움이 됩니다.

1.4.1. 업데이트 기간에 영향을 미치는 요소

다음 요인은 클러스터 업데이트 기간에 영향을 줄 수 있습니다.

  • Machine Config Operator(MCO)를 사용하여 컴퓨트 노드를 새 머신 구성으로 재부팅합니다.

    • 머신 구성 풀의 MaxUnavailable

      주의

      OpenShift Container Platform의 모든 머신 구성 풀에 대한 maxUnavailable 의 기본 설정은 1 입니다. 이 값은 변경하지 말고 한 번에 하나의 제어 평면 노드만 업데이트하는 것이 좋습니다. 제어 평면 풀의 경우 이 값을 3 으로 변경하지 마세요.

    • PDB(Pod Disruption Budget)에 설정된 최소 복제본 수 또는 비율
  • 클러스터의 노드 수
  • 클러스터 노드의 상태

1.4.2. 클러스터 업데이트 단계

OpenShift Container Platform에서 클러스터 업데이트는 두 단계로 진행됩니다.

  • 클러스터 버전 운영자(CVO) 대상 업데이트 페이로드 배포
  • MCO(Machine Config Operator) 노드 업데이트
1.4.2.1. 클러스터 버전 운영자 대상 업데이트 페이로드 배포

클러스터 버전 운영자(CVO)는 대상 업데이트 릴리스 이미지를 검색하여 클러스터에 적용합니다. 이 단계에서는 포드로 실행되는 모든 구성 요소가 업데이트되고, 호스트 구성 요소는 MCO(Machine Config Operator)에 의해 업데이트됩니다. 이 과정은 60~120분이 걸릴 수 있습니다.

참고

업데이트의 CVO 단계에서는 노드가 다시 시작되지 않습니다.

1.4.2.2. Machine Config Operator 노드 업데이트

MCO(Machine Config Operator)는 각 제어 평면과 컴퓨팅 노드에 새로운 머신 구성을 적용합니다. 이 과정에서 MCO는 클러스터의 각 노드에서 다음과 같은 순차적 작업을 수행합니다.

  1. 모든 노드를 봉쇄하고 배수합니다.
  2. 운영체제(OS) 업데이트
  3. 노드를 재부팅하세요
  4. 모든 노드 차단 해제 및 노드에서 워크로드 예약
참고

노드가 격리되면 해당 노드에 작업 부하를 예약할 수 없습니다.

이 프로세스를 완료하는 데 걸리는 시간은 노드와 인프라 구성을 포함한 여러 요인에 따라 달라집니다. 이 프로세스를 완료하는 데 노드당 5분 이상 걸릴 수 있습니다.

MCO 외에도 다음 매개변수의 영향을 고려해야 합니다.

  • 제어 평면 노드 업데이트 기간은 예측 가능하며 대개 컴퓨트 노드보다 짧습니다. 제어 평면 작업 부하가 원활한 업데이트와 빠른 비우기에 맞춰 조정되기 때문입니다.
  • MCP(Machine Config Pool)에서 maxUnavailable 필드를 1 보다 큰 값으로 설정하여 컴퓨팅 노드를 병렬로 업데이트할 수 있습니다. MCO는 maxUnavailable 에 지정된 노드 수를 제한하고 해당 노드를 업데이트할 수 없음으로 표시합니다.
  • MCP에서 maxUnavailable을 늘리면 풀을 더 빠르게 업데이트하는 데 도움이 될 수 있습니다. 그러나 maxUnavailable 이 너무 높게 설정되어 있고 여러 노드가 동시에 차단된 경우 복제본을 실행할 예약 가능한 노드를 찾을 수 없어 Pod 중단 예산(PDB)이 보호되는 워크로드가 배출되지 않을 수 있습니다. MCP의 maxUnavailable을 늘리는 경우 PDB에서 보호되는 워크로드를 비울 수 있을 만큼 충분한 예약 가능한 노드가 있는지 확인하세요.
  • 업데이트를 시작하기 전에 모든 노드를 사용할 수 있는지 확인해야 합니다. 사용할 수 없는 노드는 maxUnavailable 및 Pod 중단 예산에 영향을 미치므로 업데이트 기간에 상당한 영향을 미칠 수 있습니다.

    터미널에서 노드 상태를 확인하려면 다음 명령을 실행하세요.

    $ oc get node
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                        STATUS                      ROLES   AGE     VERSION
    ip-10-0-137-31.us-east-2.compute.internal   Ready,SchedulingDisabled    worker  12d     v1.23.5+3afdacb
    ip-10-0-151-208.us-east-2.compute.internal  Ready                       master  12d     v1.23.5+3afdacb
    ip-10-0-176-138.us-east-2.compute.internal  Ready                       master  12d     v1.23.5+3afdacb
    ip-10-0-183-194.us-east-2.compute.internal  Ready                       worker  12d     v1.23.5+3afdacb
    ip-10-0-204-102.us-east-2.compute.internal  Ready                       master  12d     v1.23.5+3afdacb
    ip-10-0-207-224.us-east-2.compute.internal  Ready                       worker  12d     v1.23.5+3afdacb
    Copy to Clipboard Toggle word wrap

    노드 상태가 NotReady 또는 SchedulingDisabled 인 경우 노드를 사용할 수 없으며 이는 업데이트 기간에 영향을 미칩니다.

    웹 콘솔의 관리자 관점에서 ComputeNodes를 확장하여 노드 상태를 확인할 수 있습니다.

1.4.2.3. 클러스터 운영자의 업데이트 기간 예시

이전 다이어그램은 클러스터 운영자가 새 버전으로 업데이트하는 데 걸리는 시간의 예를 보여줍니다. 이 예제에서는 정상 컴퓨팅 MachineConfigPool 이 있고 4.13에서 4.14로 업데이트하는 데 오래 걸리는 워크로드가 없는 3-노드 AWS OVN 클러스터를 기반으로 합니다.

참고
  • 클러스터와 해당 운영자의 구체적인 업데이트 기간은 대상 버전, 노드 수, 노드에 예약된 작업 유형 등 여러 클러스터 특성에 따라 달라질 수 있습니다.
  • 클러스터 버전 운영자와 같은 일부 운영자는 짧은 시간 내에 업데이트됩니다. 이러한 연산자는 다이어그램에서 생략되었거나 "병렬의 다른 연산자"로 표시된 더 광범위한 연산자 그룹에 포함됩니다.

각 클러스터 운영자는 자체 업데이트에 걸리는 시간에 영향을 미치는 특성을 가지고 있습니다. 예를 들어 kube-apiserver 가 정상 종료 지원을 제공하므로 이 예제의 Kube API Server Operator는 업데이트하는 데 11분 이상 걸렸습니다. 즉 기존의 in-flight 요청이 정상적으로 완료될 수 있습니다. 이로 인해 kube-apiserver 가 더 오랫동안 종료될 수 있습니다. 이 Operator의 경우 업데이트 속도가 희생되어 업데이트 중에 클러스터 기능이 중단되는 것을 방지하고 제한합니다.

운영자의 업데이트 기간에 영향을 미치는 또 다른 특징은 운영자가 DaemonSets를 활용하는지 여부입니다. 네트워크 및 DNS 운영자는 전체 클러스터 DaemonSets를 활용하는데, 이로 인해 버전 변경 사항을 적용하는 데 시간이 걸릴 수 있습니다. 이는 이러한 운영자가 업데이트하는 데 시간이 더 오래 걸리는 여러 이유 중 하나입니다.

일부 운영자의 업데이트 기간은 클러스터 자체의 특성에 따라 크게 달라집니다. 예를 들어, Machine Config Operator 업데이트는 클러스터의 각 노드에 머신 구성 변경 사항을 적용합니다. 노드가 많은 클러스터는 노드가 적은 클러스터에 비해 Machine Config Operator의 업데이트 기간이 더 깁니다.

참고

각 클러스터 운영자에게는 업데이트가 가능한 단계가 지정됩니다. 동일 단계에 있는 운영자는 동시에 업데이트할 수 있으며, 특정 단계에 있는 운영자는 이전 단계가 모두 완료될 때까지 업데이트를 시작할 수 없습니다. 자세한 내용은 "추가 리소스" 섹션의 "업데이트 중에 매니페스트를 적용하는 방법 이해"를 참조하십시오.

1.4.3. 클러스터 업데이트 시간 추정

유사 클러스터의 과거 업데이트 기간은 향후 클러스터 업데이트에 대한 가장 정확한 추정치를 제공합니다. 그러나 과거 데이터를 사용할 수 없는 경우 다음 규칙을 사용하여 클러스터 업데이트 시간을 추정할 수 있습니다.

Cluster update time = CVO target update payload deployment time + (# node update iterations x MCO node update time)
Copy to Clipboard Toggle word wrap

노드 업데이트 반복은 하나 이상의 노드가 병렬로 업데이트되는 것으로 구성됩니다. 제어 평면 노드는 항상 컴퓨팅 노드와 병렬로 업데이트됩니다. 또한, 하나 이상의 컴퓨팅 노드를 maxUnavailable 값에 따라 병렬로 업데이트할 수 있습니다.

주의

OpenShift Container Platform의 모든 머신 구성 풀에 대한 maxUnavailable 의 기본 설정은 1 입니다. 이 값은 변경하지 말고 한 번에 하나의 제어 평면 노드만 업데이트하는 것이 좋습니다. 제어 평면 풀의 경우 이 값을 3 으로 변경하지 마세요.

예를 들어 업데이트 시간을 추정하려면 컨트롤 플레인 노드와 컴퓨팅 노드 6개가 있는 OpenShift Container Platform 클러스터를 고려하고 각 호스트를 재부팅하는 데 약 5분이 걸립니다.

참고

특정 노드를 재부팅하는 데 걸리는 시간은 상당히 다릅니다. 클라우드 인스턴스에서는 재부팅에 약 1~2분이 소요되지만, 물리적 베어 메탈 호스트에서는 재부팅에 15분 이상 걸릴 수 있습니다.

시나리오-1

컨트롤 플레인 및 컴퓨팅 노드 MCP(Machine Config Pool) 모두에 maxUnavailable1 로 설정하면 각 반복에서 6개의 컴퓨팅 노드가 각각 하나씩 업데이트됩니다.

Cluster update time = 60 + (6 x 5) = 90 minutes
Copy to Clipboard Toggle word wrap

시나리오-2

컴퓨팅 노드 MCP에 대해 maxUnavailable을 2 로 설정하면 두 개의 컴퓨팅 노드가 각 반복에서 병렬로 업데이트됩니다. 따라서 모든 노드를 업데이트하려면 총 3번의 반복이 필요합니다.

Cluster update time = 60 + (3 x 5) = 75 minutes
Copy to Clipboard Toggle word wrap
중요

OpenShift Container Platform의 모든 MCP에 대해 maxUnavailable 의 기본 설정은 1 입니다. 제어 평면 MCP에서 maxUnavailable 을 변경하지 않는 것이 좋습니다.

2장. 클러스터 업데이트 준비

2.1. OpenShift Container Platform 4.19로 업데이트 준비 중

클러스터 관리자가 업데이트를 성공적으로 초기화하기 위해 수행해야 하는 관리 작업과 업데이트를 성공적으로 수행하기 위한 선택적 지침에 대해 자세히 알아보세요.

2.1.1. Kubernetes API 제거

OpenShift Container Platform 4.19는 더 이상 사용되지 않는 Kubernetes API 몇 가지를 제거한 Kubernetes 1.32를 사용합니다.

클러스터 관리자는 클러스터를 OpenShift Container Platform 4.18에서 4.19로 업데이트하기 전에 수동 확인을 제공해야 합니다. 이는 OpenShift Container Platform 4.19로 업그레이드한 후 제거된 API가 클러스터에서 실행되거나 클러스터와 상호 작용하는 워크로드, 도구 또는 기타 구성 요소에서 계속 사용되는 문제를 방지하기 위한 것입니다. 관리자는 제거될 모든 API에 대해 클러스터를 평가하고 영향을 받는 구성 요소를 마이그레이션하여 적절한 새 API 버전을 사용해야 합니다. 이 평가 및 마이그레이션이 완료되면 관리자는 승인을 제공할 수 있습니다.

OpenShift Container Platform 4.18 클러스터를 4.19로 업데이트하려면 먼저 관리자의 승인을 받아야 합니다.

2.1.1.1. 제거된 Kubernetes API

OpenShift Container Platform 4.19는 다음과 같은 더 이상 사용되지 않는 API를 제거한 Kubernetes 1.32를 사용합니다. 적절한 API 버전을 사용하려면 매니페스트와 API 클라이언트를 마이그레이션해야 합니다. 제거된 API 마이그레이션에 대한 자세한 내용은 Kubernetes 설명서 를 참조하십시오.

Expand
표 2.1. Kubernetes 1.32에서 제거된 API
리소스API 제거됨로 마이그레이션주요 변경 사항

FlowSchema

flowcontrol.apiserver.k8s.io/v1beta3

flowcontrol.apiserver.k8s.io/v1

없음

PriorityLevelConfiguration

flowcontrol.apiserver.k8s.io/v1beta3

flowcontrol.apiserver.k8s.io/v1

제공됨

2.1.1.2. 제거된 API에 대한 클러스터 평가

관리자가 제거할 API 위치를 식별하는 데 도움이 되는 여러 가지 방법이 있습니다. 그러나 OpenShift Container Platform은 모든 인스턴스, 특히 유휴 상태인 워크로드 또는 사용되는 외부 툴을 식별할 수 없습니다. 관리자가 제거된 API 인스턴스에 대한 모든 워크로드 및 기타 통합을 적절하게 평가해야 합니다.

2.1.1.2.1. 제거된 API의 사용 식별을 위한 경고 검토

다음 릴리스에서 제거될 API가 사용 중인 경우 두 개의 경고가 발생합니다.

  • APIRemovedInNextReleaseInUse - OpenShift Container Platform의 다음 릴리스에서 제거될 API의 경우
  • APIRemovedIn다음 EUSReleaseInUse - OpenShift Container Platform EUS (Extended Update Support) 릴리스에서 제거될 API의 경우

이러한 경고 중 하나가 클러스터에서 실행 중인 경우 경고를 검토하고 새 API 버전을 사용하도록 매니페스트 및 API 클라이언트를 마이그레이션하여 경고를 지우는 조치를 취합니다.

알림에서는 이러한 정보를 제공하지 않으므로, APIRequestCount API를 사용하면 어떤 API가 사용 중인지, 어떤 워크로드가 제거된 API를 사용하는지에 대한 자세한 정보를 얻을 수 있습니다. 또한 일부 API는 이러한 알림을 발생시키지 않더라도 APIRequestCount 에 의해 캡처될 수 있습니다. 생산 시스템에서 경보 피로를 피하기 위해 경보의 민감도를 낮추도록 조정되었습니다.

2.1.1.2.2. APIRequestCount를 사용하여 제거된 API 사용 확인

APIRequestCount API를 사용하여 API 요청을 추적하고 제거된 API 중 하나를 사용 중인지 검토할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  • 다음 명령을 실행하고 출력의 REMOVEDINRELEASE 열을 검사하여 현재 사용 중인 제거된 API를 확인합니다.

    $ oc get apirequestcounts
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                                 REMOVEDINRELEASE   REQUESTSINCURRENTHOUR   REQUESTSINLAST24H
    ...
    flowschemas.v1beta3.flowcontrol.apiserver.k8s.io                     1.32               0                       3
    ...
    prioritylevelconfigurations.v1beta3.flowcontrol.apiserver.k8s.io     1.32               0                       1
    ...
    Copy to Clipboard Toggle word wrap

    중요

    결과에 나타나는 다음 항목은 무시해도 됩니다.

    • system:serviceaccount:kube-system:generic-garbage-collectorsystem:serviceaccount:kube-system:namespace-controller 사용자가 결과에 나타날 수 있는 이유는 이러한 서비스가 제거할 리소스를 검색할 때 등록된 모든 API를 호출하기 때문입니다.
    • system:kube-controller-managersystem:cluster-policy-controller 사용자는 다양한 정책을 시행하면서 모든 리소스를 검토하기 때문에 결과에 나타날 수 있습니다.

    -o jsonpath를 사용하여 결과를 필터링할 수도 있습니다.

    $ oc get apirequestcounts -o jsonpath='{range .items[?(@.status.removedInRelease!="")]}{.status.removedInRelease}{"\t"}{.metadata.name}{"\n"}{end}'
    Copy to Clipboard Toggle word wrap

    출력 예

    1.32	flowschemas.v1beta3.flowcontrol.apiserver.k8s.io
    1.32	prioritylevelconfigurations.v1beta3.flowcontrol.apiserver.k8s.io
    Copy to Clipboard Toggle word wrap

지정된 API 버전에 대해 APIRequestCount 리소스를 검사하여 API를 사용하는 워크로드를 식별할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  • 다음 명령을 실행하고 usernameuserAgent 필드를 검사하여 API를 사용하는 워크로드를 식별할 수 있습니다.

    $ oc get apirequestcounts <resource>.<version>.<group> -o yaml
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $ oc get apirequestcounts flowschemas.v1beta3.flowcontrol.apiserver.k8s.io -o yaml
    Copy to Clipboard Toggle word wrap

    -o jsonpath를 사용하여 APIRequestCount 리소스에서 사용자 이름userAgent 값을 추출할 수도 있습니다.

    $ oc get apirequestcounts flowschemas.v1beta3.flowcontrol.apiserver.k8s.io \
      -o jsonpath='{range .status.currentHour..byUser[*]}{..byVerb[*].verb}{","}{.username}{","}{.userAgent}{"\n"}{end}' \
      | sort -k 2 -t, -u | column -t -s, -NVERBS,USERNAME,USERAGENT
    Copy to Clipboard Toggle word wrap

    출력 예

    VERBS     USERNAME                            USERAGENT
    create    system:admin                        oc/4.13.0 (linux/amd64)
    list get  system:serviceaccount:myns:default  oc/4.16.0 (linux/amd64)
    watch     system:serviceaccount:myns:webhook  webhook/v1.0.0 (linux/amd64)
    Copy to Clipboard Toggle word wrap

2.1.1.3. 제거된 API의 인스턴스 마이그레이션

제거된 Kubernetes API를 마이그레이션하는 방법에 대한 자세한 내용은 Kubernetes 설명서의 더 이상 사용되지 않는 API 마이그레이션 가이드를 참조하세요.

2.1.1.4. 관리자 확인 제공

제거된 API에 대한 클러스터를 평가하고 제거된 API를 마이그레이션한 후에는 클러스터를 OpenShift Container Platform 4.18에서 4.19로 업그레이드할 준비가 되었음을 확인할 수 있습니다.

주의

이 관리자 승인을 제공하기 전에 제거된 API의 모든 사용이 해결되고 필요에 따라 마이그레이션되었는지 확인하는 모든 책임은 관리자에게 있음을 유의하십시오. OpenShift Container Platform은 평가를 지원할 수 있지만 제거된 API, 특히 유휴 워크로드 또는 외부 툴의 모든 사용을 식별할 수 없습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  • 다음 명령을 실행하여 평가가 완료되었고 클러스터가 OpenShift Container Platform 4.19에서 Kubernetes API 제거에 준비되었음을 확인합니다.

    $ oc -n openshift-config patch cm admin-acks --patch '{"data":{"ack-4.18-kube-1.32-api-removals-in-4.19":"true"}}' --type=merge
    Copy to Clipboard Toggle word wrap

2.1.2. 조건부 업데이트의 위험 평가

조건부 업데이트는 클러스터에 적용되는 알려진 위험으로 인해 사용 가능하지만 권장되지 않는 업데이트 대상입니다. 클러스터 버전 운영자(CVO)는 업데이트 권장 사항에 대한 최신 데이터를 얻기 위해 OpenShift 업데이트 서비스(OSUS)를 주기적으로 쿼리하며, 잠재적인 일부 업데이트 대상에는 위험이 있을 수 있습니다.

CVO는 조건부 위험을 평가하고, 위험이 클러스터에 적용되지 않는 경우 대상 버전을 클러스터에 대한 권장 업데이트 경로로 사용할 수 있습니다. 위험이 적용 가능한 것으로 판단되거나 어떤 이유로 CVO가 위험을 평가할 수 없는 경우 업데이트 대상은 클러스터에서 조건부 업데이트로 사용할 수 있습니다.

대상 버전으로 업데이트하는 동안 조건부 업데이트가 발생하면 클러스터를 해당 버전으로 업데이트하는 데 따른 위험을 평가해야 합니다. 일반적으로 해당 대상 버전으로 업데이트할 특정 필요가 없는 경우 Red Hat에서 권장 업데이트 경로를 기다리는 것이 좋습니다.

하지만 해당 버전으로 업데이트해야 하는 강력한 이유가 있는 경우(예: 중요한 CVE를 수정해야 하는 경우)에는 CVE를 수정하는 이점이 업데이트로 인해 클러스터에 문제가 생길 위험보다 더 클 수 있습니다. 다음 작업을 완료하여 Red Hat의 업데이트 위험 평가에 동의하는지 확인할 수 있습니다.

  • 프로덕션 환경에서 업데이트를 완료하는 데 문제가 없을 때까지 비프로덕션 환경에서 광범위한 테스트를 완료하세요.
  • 조건부 업데이트 설명에 제공된 링크를 따라 버그를 조사하고 클러스터에 문제를 일으킬 가능성이 있는지 확인하세요. 위험을 이해하는 데 도움이 필요하면 Red Hat 지원팀에 문의하세요.

2.1.3. 클러스터 업데이트 전 etcd 백업

etcd 백업은 클러스터와 모든 리소스 객체의 상태를 기록합니다. 현재의 작동하지 않는 상태에서 클러스터를 복구할 수 없는 재해 상황에서 백업을 사용하여 클러스터 상태를 복원할 수 있습니다.

업데이트 컨텍스트에서 업데이트로 인해 이전 클러스터 버전으로 되돌리지 않고는 복구할 수 없는 치명적인 상황이 발생한 경우 클러스터의 etcd 복원을 시도할 수 있습니다. etcd 복원은 실행 중인 클러스터에 파괴적이고 불안정해질 수 있으므로 최후의 수단으로만 사용해야 합니다.

주의

etcd 복원은 심각한 결과를 초래하므로 롤백 솔루션으로 사용할 수 없습니다. 클러스터를 이전 버전으로 롤백하는 것은 지원되지 않습니다. 업데이트가 완료되지 않으면 Red Hat 지원팀에 문의하세요.

Etcd 복원의 실행 가능성에 영향을 미치는 요소는 여러 가지가 있습니다. 자세한 내용은 "etcd 데이터 백업" 및 "이전 클러스터 상태로 복원"을 참조하세요.

2.1.4. Ingress Operator에 의한 Gateway API 관리 계승 준비

OpenShift Container Platform 4.19부터 Ingress Operator는 모든 Gateway API 사용자 정의 리소스 정의(CRD)의 수명 주기를 관리합니다. 즉, Gateway API에 그룹화된 API 그룹 내에서 CRD를 생성, 업데이트, 삭제하는 작업에 대한 액세스가 거부됩니다.

이 관리가 제공되지 않는 OpenShift Container Platform 4.19 이전 버전에서 업데이트하려면 Ingress Operator에서 요구하는 특정 OpenShift Container Platform 사양을 준수하도록 클러스터에 이미 있는 Gateway API CRD를 교체하거나 제거해야 합니다. OpenShift Container Platform 버전 4.19에는 Gateway API Standard 버전 1.2.1 CRD가 필요합니다.

주의

Gateway API 리소스를 업데이트하거나 삭제하면 가동 중지 및 서비스 또는 데이터 손실이 발생할 수 있습니다. 이 절차의 단계를 수행하기 전에 이것이 클러스터에 어떤 영향을 미칠지 반드시 이해해야 합니다. 필요한 경우 나중에 복원할 수 있도록 YAML 형식으로 Gateway API 객체를 백업하세요.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • 선택 사항: 필요한 Gateway API 객체를 백업했습니다.

    주의

    이전 정의에는 있었지만 새 정의에는 없는 CRD 필드에 대한 백업 및 복원이 실패하거나 데이터 손실이 발생할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 제거해야 할 모든 Gateway API CRD를 나열하세요.

    $ oc get crd | grep -F -e gateway.networking.k8s.io -e gateway.networking.x-k8s.io
    Copy to Clipboard Toggle word wrap

    출력 예

    gatewayclasses.gateway.networking.k8s.io
    gateways.gateway.networking.k8s.io
    grpcroutes.gateway.networking.k8s.io
    httproutes.gateway.networking.k8s.io
    referencegrants.gateway.networking.k8s.io
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 이전 단계의 Gateway API CRD를 삭제합니다.

    $ oc delete crd gatewayclasses.networking.k8s.io && \
    oc delete crd gateways.networking.k8s.io && \
    oc delete crd grpcroutes.gateway.networking.k8s.io && \
    oc delete crd httproutes.gateway.networking.k8s.io && \
    oc delete crd referencesgrants.gateway.networking.k8s.io
    Copy to Clipboard Toggle word wrap
    중요

    CRD를 삭제하면 해당 CRD에 의존하는 모든 사용자 정의 리소스가 제거되고 데이터 손실이 발생할 수 있습니다. Gateway API CRD를 삭제하기 전에 필요한 데이터를 백업하세요. 이전에 Gateway API CRD의 수명 주기를 관리하던 모든 컨트롤러는 제대로 작동하지 않게 됩니다. Ingress Operator와 함께 강제로 사용하여 Gateway API CRD를 관리하려고 하면 클러스터 업데이트가 성공하지 못할 수 있습니다.

  3. 다음 명령을 실행하여 지원되는 Gateway API CRD를 가져옵니다.

    $ oc apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
    Copy to Clipboard Toggle word wrap
    주의

    CRD를 삭제하지 않고도 이 단계를 수행할 수 있습니다. CRD를 업데이트하면 사용자 지정 리소스에서 사용되는 필드가 제거되므로 데이터가 손실될 수 있습니다. CRD를 두 번째로 업데이트하여 필드를 다시 추가하는 버전을 사용하면 이전에 삭제한 데이터가 다시 나타날 수 있습니다. OpenShift Container Platform 4.19에서 지원되지 않는 특정 Gateway API CRD 버전에 의존하는 모든 타사 컨트롤러는 해당 CRD를 Red Hat에서 지원하는 버전으로 업데이트하면 중단됩니다.

    OpenShift Container Platform 구현 및 데드 필드 문제에 대한 자세한 내용은 OpenShift Container Platform을 위한 Gateway API 구현을 참조하세요.

2.1.5. 클러스터 업데이트를 위한 모범 사례

OpenShift Container Platform은 업데이트 중에 작업 중단을 최소화하는 강력한 업데이트 환경을 제공합니다. 업데이트 요청 시 클러스터가 업그레이드 가능한 상태가 아니면 업데이트가 시작되지 않습니다.

이 설계는 업데이트를 시작하기 전에 몇 가지 주요 조건을 적용하지만, 클러스터 업데이트의 성공 가능성을 높이기 위해 취할 수 있는 몇 가지 조치가 있습니다.

2.1.5.2. 클러스터의 모든 중요 경고를 처리합니다.

중요한 경고는 항상 가능한 한 빨리 처리해야 하지만, 특히 클러스터 업데이트를 시작하기 전에 이러한 경고를 처리하고 문제를 해결하는 것이 중요합니다. 업데이트를 시작하기 전에 중요한 경고를 처리하지 못하면 클러스터에 문제가 발생할 수 있습니다.

웹 콘솔의 관리자 화면에서 모니터링 → 경고로 이동하여 중요한 경고를 찾습니다.

2.1.5.3. 클러스터가 업그레이드 가능 상태인지 확인하세요.

하나 이상의 Operator에서 업그레이드 가능 조건을 1시간 이상 True 로 보고하지 않으면 클러스터에서 ClusterNotUpgradeable 경고 경고가 트리거됩니다. 대부분의 경우 이 경고는 패치 업데이트를 차단하지 않지만, 이 경고가 해결되고 모든 운영자가 업그레이드 가능을 True 로 보고할 때까지 마이너 버전 업데이트를 수행할 수 없습니다.

업그레이드 가능 조건에 대한 자세한 내용은 추가 리소스 섹션의 "클러스터 운영자 조건 유형 이해"를 참조하세요.

2.1.5.3.1. SDN 지원 제거

OpenShift SDN 네트워크 플러그인은 4.15 및 4.16 버전에서 더 이상 사용되지 않습니다. 이 릴리스부터 SDN 네트워크 플러그인은 더 이상 지원되지 않으며 해당 내용은 설명서에서 삭제되었습니다.

OpenShift Container Platform 클러스터가 여전히 OpenShift SDN CNI를 사용하는 경우 OpenShift SDN 네트워크 플러그인에서 마이그레이션을 참조하세요.

중요

OpenShift SDN 네트워크 플러그인을 사용하는 경우 클러스터를 OpenShift Container Platform 4.17로 업데이트할 수 없습니다. OpenShift Container Platform 4.17로 업그레이드하기 전에 OVN-Kubernetes 플러그인으로 마이그레이션해야 합니다.

2.1.5.4. 충분한 예비 노드가 사용 가능한지 확인하세요.

클러스터는 특히 클러스터 업데이트를 시작할 때 여유 노드 용량이 거의 없거나 전혀 없이 실행되어서는 안 됩니다. 실행 중이 아니고 사용할 수 없는 노드는 클러스터 작업 부하를 최소화하면서 업데이트를 수행하는 클러스터의 기능을 제한할 수 있습니다.

클러스터의 maxUnavailable 사양의 구성된 값에 따라 사용할 수 없는 노드가 있는 경우 클러스터가 노드에 머신 구성 변경 사항을 적용하지 못할 수 있습니다. 또한, 컴퓨팅 노드에 여유 용량이 충분하지 않으면 첫 번째 노드가 업데이트를 위해 오프라인으로 전환되는 동안 워크로드를 일시적으로 다른 노드로 전환하지 못할 수 있습니다.

성공적인 노드 업데이트의 가능성을 높이기 위해 각 작업자 풀에 사용 가능한 노드가 충분한지, 그리고 컴퓨팅 노드에 여유 용량이 충분한지 확인하세요.

주의

OpenShift Container Platform의 모든 머신 구성 풀에 대한 maxUnavailable 의 기본 설정은 1 입니다. 이 값은 변경하지 말고 한 번에 하나의 제어 평면 노드만 업데이트하는 것이 좋습니다. 제어 평면 풀의 경우 이 값을 3 으로 변경하지 마세요.

PodDisruptionBudget 객체를 사용하면 주어진 시간에 사용 가능해야 하는 Pod 복제본의 최소 수 또는 백분율을 정의할 수 있습니다. 이 구성은 클러스터 업데이트와 같은 유지 관리 작업 중에 작업 부하가 중단되지 않도록 보호합니다.

그러나 클러스터 업데이트 중에 노드가 비워지고 업데이트되는 것을 방지하는 방식으로 주어진 토폴로지에 대해 PodDisruptionBudget 을 구성하는 것이 가능합니다.

클러스터 업데이트를 계획할 때 PodDisruptionBudget 개체의 구성에서 다음 요소를 확인하세요.

  • 고가용성 워크로드의 경우 PodDisruptionBudget 에 의해 금지되지 않고 일시적으로 오프라인으로 전환할 수 있는 복제본이 있는지 확인하세요.
  • 가용성이 높지 않은 워크로드의 경우 PodDisruptionBudget 으로 보호되지 않도록 하거나 이러한 워크로드를 결국 소진하기 위한 대체 메커니즘(예: 주기적 재시작 또는 보장된 최종 종료)을 갖추고 있는지 확인하세요.

2.2. 수동으로 유지 관리되는 인증 정보로 클러스터 업데이트 준비

CCO(Cloud Credential Operator) 수동으로 유지 관리되는 인증 정보가 있는 클러스터의 Upgradable 상태는 기본적으로 False 입니다.

  • 예를 들어 4.12에서 4.13으로의 마이너 릴리스의 경우, 이 상태에서는 업데이트된 권한을 처리하고 CloudCredential 리소스에 주석을 달아 다음 버전에서 필요한 대로 권한이 업데이트되었음을 나타낼 때까지 업데이트할 수 없습니다. 이 주석은 Upgradable 상태를 True로 변경합니다.
  • 예를 들어 z-stream 릴리스의 경우 4.13.0에서 4.13.1로의 경우 권한이 추가되거나 변경되지 않으므로 업데이트가 차단되지 않습니다.

수동으로 유지 관리되는 자격 증명으로 클러스터를 업데이트하기 전에 업데이트하려는 OpenShift Container Platform 버전의 릴리스 이미지에 새 자격 증명이나 변경된 자격 증명을 수용해야 합니다.

CCO(Cloud Credential Operator)를 사용하여 수동으로 유지 관리되는 자격 증명을 사용하는 클러스터를 업데이트하기 전에 새 릴리스에 대한 클라우드 공급자 리소스를 업데이트해야 합니다.

클러스터의 클라우드 자격 증명 관리가 CCO 유틸리티( ccoctl )를 사용하여 구성된 경우 ccoctl 유틸리티를 사용하여 리소스를 업데이트합니다. ccoctl 유틸리티 없이 수동 모드를 사용하도록 구성된 클러스터에는 리소스에 대한 수동 업데이트가 필요합니다.

클라우드 공급자 리소스를 업데이트한 후에는 클러스터에 대한 업그레이드 가능 주석 을 업데이트하여 업데이트 준비가 되었음을 나타내야 합니다.

참고

클라우드 공급자 리소스와 업그레이드 가능한 주석을 업데이트하는 프로세스는 명령줄 도구를 사용해서만 완료할 수 있습니다.

일부 플랫폼은 하나의 모드에서 CCO 사용을 지원합니다. 해당 플랫폼에 설치된 클러스터의 경우 플랫폼 유형에 따라 인증 정보 업데이트 요구 사항이 결정됩니다.

여러 모드에서 CCO 사용을 지원하는 플랫폼의 경우 클러스터가 어떤 모드를 사용하도록 구성되었는지 확인하고 해당 구성에 필요한 조치를 취해야 합니다.

그림 2.1. 플랫폼 유형별 자격 증명 업데이트 요구 사항

Red Hat OpenStack Platform(RHOSP) 및 VMware vSphere

이러한 플랫폼은 수동 모드에서 CCO를 사용하는 것을 지원하지 않습니다. 이러한 플랫폼의 클러스터는 클라우드 공급자 리소스의 변경 사항을 자동으로 처리하며 업그레이드 가능 주석에 대한 업데이트가 필요하지 않습니다.

이러한 플랫폼의 클러스터 관리자는 업데이트 프로세스에서 수동으로 유지 관리하는 자격 증명 섹션을 건너뛰어야 합니다.

IBM 클라우드와 Nutanix

이러한 플랫폼에 설치된 클러스터는 ccoctl 유틸리티를 사용하여 구성됩니다.

이러한 플랫폼의 클러스터 관리자는 다음 작업을 수행해야 합니다.

  1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
  2. 새로운 릴리스에 맞게 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
  3. 클러스터가 업그레이드 가능한 주석으로 업데이트할 준비가 되었음을 나타냅니다.
Microsoft Azure Stack Hub

이러한 클러스터는 장기 자격 증명을 사용하는 수동 모드를 사용하며 ccoctl 유틸리티를 사용하지 않습니다.

이러한 플랫폼의 클러스터 관리자는 다음 작업을 수행해야 합니다.

  1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
  2. 새로운 릴리스에 맞춰 클라우드 공급자 리소스를 수동으로 업데이트합니다.
  3. 클러스터가 업그레이드 가능한 주석으로 업데이트할 준비가 되었음을 나타냅니다.
Amazon Web Services(AWS), 글로벌 Microsoft Azure, Google Cloud Platform(GCP)

이러한 플랫폼에 설치된 클러스터는 여러 CCO 모드를 지원합니다.

필요한 업데이트 프로세스는 클러스터가 사용하도록 구성된 모드에 따라 달라집니다. 클러스터에서 CCO가 어떤 모드를 사용하도록 구성되어 있는지 확실하지 않으면 웹 콘솔이나 CLI를 사용하여 이 정보를 확인할 수 있습니다.

2.2.1.2. 웹 콘솔을 사용하여 Cloud Credential Operator 모드 확인

웹 콘솔을 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.

참고

AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.

사전 요구 사항

  • 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 관리클러스터 설정으로 이동합니다.
  3. 클러스터 설정 페이지에서 구성 탭을 선택합니다.
  4. 구성 리소스에서 클라우드 인을 선택합니다.
  5. 클라우드 인증 세부 정보 페이지에서 YAML 탭을 선택합니다.
  6. YAML 블록에서 spec.credentialsMode의 값을 확인합니다. 다음 값이 모든 플랫폼에서 지원되지는 않지만 모두 지원되는 것은 아닙니다.

    • '': CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다.
    • Mint: CCO가 Mint 모드에서 작동합니다.
    • passthrough: CCO가 passthrough 모드에서 작동합니다.
    • Manual: CCO가 수동 모드에서 작동합니다.
    중요

    spec.credentialsMode'' , Mint 또는 Manual 인 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터의 특정 구성을 확인하려면 추가로 조사해야 합니다.

    AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다. 클러스터가 특별히 민트 모드를 사용하도록 구성되었거나 기본적으로 민트 모드를 사용하는 경우, 업데이트하기 전에 클러스터에 루트 비밀이 있는지 확인해야 합니다.

    수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터는 AWS STS, GCP 워크로드 ID 또는 Microsoft Entra 워크로드 ID를 사용하여 클러스터 외부에서 클라우드 자격 증명을 만들고 관리하도록 구성될 수 있습니다. 클러스터 Authentication 오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.

  7. AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 워크로드시크릿으로 이동하여 클라우드 공급자의 루트 시크릿을 찾습니다.

    참고

    프로젝트 드롭다운이 모든 프로젝트로 설정되어 있는지 확인합니다.

    Expand
    플랫폼시크릿 이름

    AWS

    aws-creds

    GCP

    gcp-credentials

    • 이러한 값 중 하나가 표시되면 클러스터에서 root 시크릿이 있는 mint 또는 passthrough 모드를 사용하는 것입니다.
    • 이러한 값이 표시되지 않으면 클러스터는 루트 시크릿이 제거된 Mint 모드에서 CCO를 사용하는 것입니다.
  8. 수동 모드만 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터: 클러스터가 클러스터 외부에서 클라우드 자격 증명을 만들고 관리하도록 구성되었는지 확인하려면 클러스터 인증 개체 YAML 값을 확인해야 합니다.

    1. 관리클러스터 설정으로 이동합니다.
    2. 클러스터 설정 페이지에서 구성 탭을 선택합니다.
    3. 구성 리소스에서 인증을 선택합니다.
    4. 인증 세부 정보 페이지에서 YAML 탭을 선택합니다.
    5. YAML 블록에서 .spec.serviceAccountIssuer 매개변수 값을 확인합니다.

      • 클라우드 공급자와 연결된 URL이 포함된 값은 CCO가 구성 요소에 대한 단기 자격 증명을 사용하는 수동 모드를 사용하고 있음을 나타냅니다. 이러한 클러스터는 클러스터 외부에서 클라우드 자격 증명을 생성하고 관리하기 위해 ccoctl 유틸리티를 사용하여 구성됩니다.
      • 빈 값('')은 클러스터가 수동 모드에서 CCO를 사용하고 있지만 ccoctl 유틸리티를 사용하여 구성되지 않았음을 나타냅니다.

다음 단계

  • CCO가 민트 또는 패스스루 모드로 작동하는 클러스터를 업데이트하고 루트 비밀이 있는 경우 클라우드 공급자 리소스를 업데이트할 필요가 없으며 업데이트 프로세스의 다음 부분으로 진행할 수 있습니다.
  • 클러스터가 루트 비밀이 제거된 민트 모드에서 CCO를 사용하는 경우 업데이트 프로세스의 다음 단계로 진행하기 전에 관리자 수준 자격 증명으로 자격 증명 비밀을 복구해야 합니다.
  • CCO 유틸리티( ccoctl )를 사용하여 클러스터를 구성한 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
    2. 새로운 릴리스에 맞게 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
    3. 클러스터가 업데이트할 준비가 되었음을 나타내기 위해 업그레이드 가능한 주석을 업데이트합니다.
  • 클러스터가 수동 모드로 CCO를 사용하지만 ccoctl 유틸리티를 사용하여 구성되지 않은 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
    2. 새로운 릴리스에 맞춰 클라우드 공급자 리소스를 수동으로 업데이트합니다.
    3. 클러스터가 업데이트할 준비가 되었음을 나타내기 위해 업그레이드 가능한 주석을 업데이트합니다.
2.2.1.3. CLI를 사용하여 Cloud Credential Operator 모드 확인

CLI를 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.

참고

AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.

사전 요구 사항

  • 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 클러스터에서 oc 에 로그인합니다.
  2. CCO가 사용하도록 구성된 모드를 결정하려면 다음 명령을 입력합니다.

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}
    Copy to Clipboard Toggle word wrap

    다음 출력 값을 사용할 수 있지만 모든 플랫폼에서 모두 지원되는 것은 아닙니다.

    • '': CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다.
    • Mint: CCO가 Mint 모드에서 작동합니다.
    • passthrough: CCO가 passthrough 모드에서 작동합니다.
    • Manual: CCO가 수동 모드에서 작동합니다.
    중요

    spec.credentialsMode'' , Mint 또는 Manual 인 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터의 특정 구성을 확인하려면 추가로 조사해야 합니다.

    AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다. 클러스터가 특별히 민트 모드를 사용하도록 구성되었거나 기본적으로 민트 모드를 사용하는 경우, 업데이트하기 전에 클러스터에 루트 비밀이 있는지 확인해야 합니다.

    수동 모드를 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터는 AWS STS, GCP 워크로드 ID 또는 Microsoft Entra 워크로드 ID를 사용하여 클러스터 외부에서 클라우드 자격 증명을 만들고 관리하도록 구성될 수 있습니다. 클러스터 Authentication 오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.

  3. AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 다음 명령을 실행합니다.

    $ oc get secret <secret_name> \
      -n=kube-system
    Copy to Clipboard Toggle word wrap

    여기서 <secret_name>은 AWS의 aws-creds 이거나 GCP의 gcp-credentials 입니다.

    루트 시크릿이 있으면 이 명령의 출력에서 보안에 대한 정보를 반환합니다. root 보안이 클러스터에 존재하지 않음을 나타내는 오류가 있습니다.

  4. 수동 모드만 사용하는 AWS, GCP 또는 글로벌 Microsoft Azure 클러스터: 클러스터가 클러스터 외부에서 클라우드 자격 증명을 만들고 관리하도록 구성되었는지 확인하려면 다음 명령을 실행하세요.

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    Copy to Clipboard Toggle word wrap

    이 명령은 클러스터 Authentication 오브젝트에서 .spec.serviceAccountIssuer 매개변수 값을 표시합니다.

    • 클라우드 공급자와 연결된 URL의 출력은 CCO가 구성 요소에 대한 단기 자격 증명을 사용하는 수동 모드를 사용하고 있음을 나타냅니다. 이러한 클러스터는 클러스터 외부에서 클라우드 자격 증명을 생성하고 관리하기 위해 ccoctl 유틸리티를 사용하여 구성됩니다.
    • 빈 출력은 클러스터가 수동 모드에서 CCO를 사용하고 있지만 ccoctl 유틸리티를 사용하여 구성되지 않았음을 나타냅니다.

다음 단계

  • CCO가 민트 또는 패스스루 모드로 작동하는 클러스터를 업데이트하고 루트 비밀이 있는 경우 클라우드 공급자 리소스를 업데이트할 필요가 없으며 업데이트 프로세스의 다음 부분으로 진행할 수 있습니다.
  • 클러스터가 루트 비밀이 제거된 민트 모드에서 CCO를 사용하는 경우 업데이트 프로세스의 다음 단계로 진행하기 전에 관리자 수준 자격 증명으로 자격 증명 비밀을 복구해야 합니다.
  • CCO 유틸리티( ccoctl )를 사용하여 클러스터를 구성한 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
    2. 새로운 릴리스에 맞게 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
    3. 클러스터가 업데이트할 준비가 되었음을 나타내기 위해 업그레이드 가능한 주석을 업데이트합니다.
  • 클러스터가 수동 모드로 CCO를 사용하지만 ccoctl 유틸리티를 사용하여 구성되지 않은 경우 다음 작업을 수행해야 합니다.

    1. 새 릴리스에 대한 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 준비합니다.
    2. 새로운 릴리스에 맞춰 클라우드 공급자 리소스를 수동으로 업데이트합니다.
    3. 클러스터가 업데이트할 준비가 되었음을 나타내기 위해 업그레이드 가능한 주석을 업데이트합니다.

2.2.2. 자격 증명 요청 리소스 추출 및 준비

수동 모드에서 Cloud Credential Operator(CCO)를 사용하는 클러스터를 업데이트하기 전에 새 릴리스에 대한 CredentialsRequest 사용자 지정 리소스(CR)를 추출하여 준비해야 합니다.

사전 요구 사항

  • 업데이트된 버전과 일치하는 OpenShift CLI (oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.

프로세스

  1. 다음 명령을 실행하여 적용하려는 업데이트에 대한 풀 사양을 가져옵니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    이 명령의 출력에는 다음과 유사한 사용 가능한 업데이트에 대한 풀 사양이 포함됩니다.

    부분적인 예제 출력

    ...
    Recommended updates:
    
    VERSION IMAGE
    4.19.0  quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
    ...
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 사용하려는 릴리스 이미지로 $RELEASE_IMAGE 변수를 설정합니다.

    $ RELEASE_IMAGE=<update_pull_spec>
    Copy to Clipboard Toggle word wrap

    여기서 <update_pull_spec>은 사용하려는 릴리스 이미지에 대한 풀 사양입니다. 예를 들면 다음과 같습니다.

    quay.io/openshift-release-dev/ocp-release@sha256:6a899c54dda6b844bb12a247e324a0f6cde367e880b73ba110c056df6d018032
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 사용자 정의 리소스(CR) 목록을 추출합니다.

    $ oc adm release extract \
      --from=$RELEASE_IMAGE \
      --credentials-requests \
      --included \
    1
    
      --to=<path_to_directory_for_credentials_requests> 
    2
    Copy to Clipboard Toggle word wrap
    1
    --included 매개변수에는 대상 릴리스에 필요한 특정 클러스터 구성에 필요한 매니페스트만 포함됩니다.
    2
    CredentialsRequest 객체를 저장할 디렉토리의 경로를 지정합니다. 지정된 디렉토리가 존재하지 않으면 이 명령은 디렉토리를 생성합니다.

    이 명령을 수행하면 각 CredentialsRequest 오브젝트에 대해 YAML 파일이 생성됩니다.

  4. 릴리스 이미지의 각 CredentialsRequest CR에 대해 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인합니다. 이 필드에는 인증 정보 구성을 보유하는 생성된 시크릿이 저장됩니다.

    샘플 AWS CredentialsRequest 오브젝트

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: cloud-credential-operator-iam-ro
      namespace: openshift-cloud-credential-operator
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - iam:GetUser
          - iam:GetUserPolicy
          - iam:ListAccessKeys
          resource: "*"
      secretRef:
        name: cloud-credential-operator-iam-ro-creds
        namespace: openshift-cloud-credential-operator 
    1
    Copy to Clipboard Toggle word wrap

    1
    이 필드는 생성된 비밀을 보관하기 위해 존재해야 하는 네임스페이스를 나타냅니다.

    다른 플랫폼의 CredentialsRequest CR은 플랫폼별 값만 다를 뿐 형식은 비슷합니다.

  5. spec.secretRef.namespace 에 지정된 이름을 가진 네임스페이스가 클러스터에 아직 없는 CredentialsRequest CR의 경우 다음 명령을 실행하여 네임스페이스를 만듭니다.

    $ oc create namespace <component_namespace>
    Copy to Clipboard Toggle word wrap

다음 단계

  • 클러스터의 클라우드 자격 증명 관리가 CCO 유틸리티( ccoctl )를 사용하여 구성된 경우 클러스터 업데이트에 대한 ccoctl 유틸리티를 구성하고 이를 사용하여 클라우드 공급자 리소스를 업데이트합니다.
  • ccoctl 유틸리티를 사용하여 클러스터가 구성되지 않은 경우 클라우드 공급자 리소스를 수동으로 업데이트합니다.

2.2.3. 클러스터 업데이트에 대한 Cloud Credential Operator 유틸리티 구성

클러스터 외부에서 클라우드 자격 증명을 생성하고 관리하기 위해 수동 모드로 CCO(Cloud Credential Operator)를 사용하는 클러스터를 업그레이드하려면 CCO 유틸리티( ccoctl ) 바이너리를 추출하여 준비합니다.

참고

ccoctl 유틸리티는 Linux 환경에서 실행해야 하는 Linux 바이너리입니다.

사전 요구 사항

  • 클러스터 관리자 액세스 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • 귀하의 클러스터는 클러스터 외부에서 클라우드 자격 증명을 생성하고 관리하기 위해 ccoctl 유틸리티를 사용하여 구성되었습니다.
  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.

프로세스

  1. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에 대한 변수를 설정합니다.

    $ RELEASE_IMAGE=$(oc get clusterversion -o jsonpath={..desired.image})
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지에서 CCO 컨테이너 이미지를 가져옵니다.

    $ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
    Copy to Clipboard Toggle word wrap
    참고

    $RELEASE_IMAGE 의 아키텍처가 ccoctl 툴을 사용할 환경의 아키텍처와 일치하는지 확인합니다.

  3. 다음 명령을 실행하여 OpenShift Container Platform 릴리스 이미지 내에서 ccoctl 바이너리를 추출합니다.

    $ oc image extract $CCO_IMAGE \
      --file="/usr/bin/ccoctl.<rhel_version>" \
    1
    
      -a ~/.pull-secret
    Copy to Clipboard Toggle word wrap
    1
    <rhel_version> 의 경우 호스트가 사용하는 Red Hat Enterprise Linux(RHEL) 버전에 해당하는 값을 지정합니다. 값을 지정하지 않으면 기본적으로 ccoctl.rhel8 이 사용됩니다. 유효한 값은 다음과 같습니다.
    • rhel8 : RHEL 8을 사용하는 호스트의 경우 이 값을 지정합니다.
    • rhel9 : RHEL 9를 사용하는 호스트에 대해 이 값을 지정합니다.
  4. 다음 명령을 실행하여 ccoctl 을 실행할 수 있도록 권한을 변경합니다.

    $ chmod 775 ccoctl.<rhel_version>
    Copy to Clipboard Toggle word wrap

검증

  • ccoctl 을 사용할 준비가 되었는지 확인하려면 도움말 파일을 표시합니다. 명령을 실행할 때 상대 파일 이름을 사용합니다. 예를 들면 다음과 같습니다.

    $ ./ccoctl.rhel9
    Copy to Clipboard Toggle word wrap

    출력 예

    OpenShift credentials provisioning tool
    
    Usage:
      ccoctl [command]
    
    Available Commands:
      aws          Manage credentials objects for AWS cloud
      azure        Manage credentials objects for Azure
      gcp          Manage credentials objects for Google cloud
      help         Help about any command
      ibmcloud     Manage credentials objects for {ibm-cloud-title}
      nutanix      Manage credentials objects for Nutanix
    
    Flags:
      -h, --help   help for ccoctl
    
    Use "ccoctl [command] --help" for more information about a command.
    Copy to Clipboard Toggle word wrap

CCO 유틸리티( ccoctl )를 사용하여 구성된 OpenShift Container Platform 클러스터를 업그레이드하는 프로세스는 설치 중에 클라우드 공급자 리소스를 만드는 것과 비슷합니다.

참고

AWS 클러스터에서 일부 ccoctl 명령은 AWS API 호출을 수행하여 AWS 리소스를 생성하거나 수정합니다. --dry-run 플래그를 사용하여 API 호출을 방지할 수 있습니다. 이 플래그를 사용하면 로컬 파일 시스템에 JSON 파일이 생성됩니다. JSON 파일을 검토 및 수정한 다음 --cli-input-json 매개변수를 사용하여 AWS CLI 툴로 적용할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.
  • 릴리스 이미지에서 ccoctl 바이너리를 추출하고 구성했습니다.

프로세스

  1. 클라우드 공급자에 대한 명령을 실행하여 ccoctl 도구를 사용하여 모든 CredentialsRequest 객체를 처리합니다. 다음 명령은 CredentialsRequest 객체를 처리합니다.

    예 2.1. AWS(Amazon Web Services)

    $ ccoctl aws create-all \
    1
    
      --name=<name> \
    2
    
      --region=<aws_region> \
    3
    
      --credentials-requests-dir=<path_to_credentials_requests_directory> \
    4
    
      --output-dir=<path_to_ccoctl_output_dir> \
    5
    
      --create-private-s3-bucket 
    6
    Copy to Clipboard Toggle word wrap
    1
    AWS 리소스를 개별적으로 생성하려면 "사용자 지정을 사용하여 AWS에 클러스터 설치" 콘텐츠의 "AWS 리소스를 개별적으로 생성" 절차를 사용하세요. 이 옵션은 AWS 리소스를 수정하기 전에 ccoctl 도구가 생성하는 JSON 파일을 검토해야 하는 경우 또는 ccoctl 도구가 자동으로 AWS 리소스를 생성하는 데 사용하는 프로세스가 조직의 요구 사항을 충족하지 못하는 경우 유용할 수 있습니다.
    2
    추적을 위해 생성된 클라우드 리소스에 태그를 지정하는 데 사용되는 이름을 지정합니다.
    3
    클라우드 리소스가 생성될 AWS 리전을 지정합니다.
    4
    구성 요소 CredentialsRequest 오브젝트에 대한 파일이 포함된 디렉터리를 지정합니다.
    5
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    6
    선택사항: 기본적으로 ccoctl 유틸리티는 공개 S3 버킷에 OIDC(OpenID Connect) 구성 파일을 저장하고 공개 OIDC 엔드포인트로 S3 URL을 사용합니다. OIDC 구성을 공용 CloudFront 배포 URL을 통해 IAM ID 공급자가 액세스하는 개인 S3 버킷에 저장하려면 --create-private-s3-bucket 매개변수를 사용합니다.

    예 2.2. GCP(Google Cloud Platform)

    $ ccoctl gcp create-all \
      --name=<name> \
    1
    
      --region=<gcp_region> \
    2
    
      --project=<gcp_project_id> \
    3
    
      --credentials-requests-dir=<path_to_credentials_requests_directory> \
    4
    
      --output-dir=<path_to_ccoctl_output_dir> 
    5
    Copy to Clipboard Toggle word wrap
    1
    추적에 사용되는 모든 GCP 리소스에 대한 사용자 정의 이름을 지정합니다.
    2
    클라우드 리소스가 생성될 GCP 지역을 지정합니다.
    3
    클라우드 리소스가 생성될 GCP 프로젝트 ID를 지정합니다.
    4
    GCP 서비스 계정을 생성하려면 CredentialsRequest 매니페스트 파일이 포함된 디렉토리를 지정하세요.
    5
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.

    예 2.3. IBM Cloud

    $ ccoctl ibmcloud create-service-id \
      --credentials-requests-dir=<path_to_credential_requests_directory> \
    1
    
      --name=<cluster_name> \
    2
    
      --output-dir=<installation_directory> \
    3
    
      --resource-group-name=<resource_group_name> 
    4
    Copy to Clipboard Toggle word wrap
    1
    구성 요소 CredentialsRequest 오브젝트에 대한 파일이 포함된 디렉터리를 지정합니다.
    2
    OpenShift Container Platform 클러스터의 이름을 지정합니다.
    3
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    4
    선택 사항: 액세스 정책 범위를 지정하는 데 사용되는 리소스 그룹의 이름을 지정합니다.

    예 2.4. Microsoft Azure

    $ ccoctl azure create-managed-identities \
      --name <azure_infra_name> \
    1
    
      --output-dir ./output_dir \
      --region <azure_region> \
    2
    
      --subscription-id <azure_subscription_id> \
    3
    
      --credentials-requests-dir <path_to_directory_for_credentials_requests> \
      --issuer-url "${OIDC_ISSUER_URL}" \
    4
    
      --dnszone-resource-group-name <azure_dns_zone_resourcegroup_name> \
    5
    
      --installation-resource-group-name "${AZURE_INSTALL_RG}" 
    6
    Copy to Clipboard Toggle word wrap
    1
    name 매개 변수의 값은 Azure 리소스 그룹을 만드는 데 사용됩니다. 새 Azure 리소스 그룹을 만드는 대신 기존 Azure 리소스 그룹을 사용하려면 기존 그룹 이름을 값으로 사용하여 --oidc-resource-group-name 인수를 지정합니다.
    2
    기존 클러스터의 지역을 지정합니다.
    3
    기존 클러스터의 구독 ID를 지정합니다.
    4
    기존 클러스터의 OIDC 발급자 URL을 지정합니다. 다음 명령을 실행하면 이 값을 얻을 수 있습니다.
    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'
    Copy to Clipboard Toggle word wrap
    5
    DNS 영역이 포함된 리소스 그룹의 이름을 지정합니다.
    6
    Azure 리소스 그룹 이름을 지정합니다. 다음 명령을 실행하면 이 값을 얻을 수 있습니다.
    $ oc get infrastructure cluster \
      -o jsonpath \
      --template '{ .status.platformStatus.azure.resourceGroupName }'
    Copy to Clipboard Toggle word wrap

    예 2.5. Nutanix

    $ ccoctl nutanix create-shared-secrets \
      --credentials-requests-dir=<path_to_credentials_requests_directory> \
    1
    
      --output-dir=<ccoctl_output_dir> \
    2
    
      --credentials-source-filepath=<path_to_credentials_file> 
    3
    Copy to Clipboard Toggle word wrap
    1
    CredentialsRequests 개체의 파일이 포함된 디렉토리의 경로를 지정합니다.
    2
    선택 사항: ccoctl 유틸리티에서 오브젝트를 생성할 디렉터리를 지정합니다. 기본적으로 유틸리티는 명령이 실행되는 디렉터리에 오브젝트를 생성합니다.
    3
    선택 사항: 자격 증명 데이터 YAML 파일이 포함된 디렉토리를 지정합니다. 기본적으로 ccoctl은 이 파일이 <home_directory>/.nutanix/credentials 에 있을 것으로 예상합니다.

    CredentialsRequest 개체에 대해 ccoctl은 OpenShift Container Platform 릴리스 이미지의 각 CredentialsRequest 개체에 정의된 대로 필요한 공급자 리소스와 권한 정책을 생성합니다.

  2. 다음 명령을 실행하여 클러스터에 비밀을 적용합니다.

    $ ls <path_to_ccoctl_output_dir>/manifests/*-credentials.yaml | xargs -I{} oc apply -f {}
    Copy to Clipboard Toggle word wrap

검증

클라우드 공급자에게 쿼리를 보내면 필요한 공급자 리소스와 권한 정책이 생성되었는지 확인할 수 있습니다. 자세한 내용은 클라우드 제공업체의 역할 또는 서비스 계정 나열 설명서를 참조하세요.

다음 단계

  • upgradeable-to 주석을 업데이트하여 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

2.2.5. 클라우드 공급자 리소스 수동 업데이트

수동으로 유지 관리되는 자격 증명이 있는 클러스터를 업그레이드하기 전에 업그레이드하려는 릴리스 이미지에 대한 새 자격 증명에 대한 비밀을 만들어야 합니다. 기존 인증 정보에 필요한 권한을 검토하고 해당 구성 요소의 새 릴리스에 새 권한 요구 사항을 충족해야 합니다.

사전 요구 사항

  • OpenShift Container Platform 릴리스 이미지에서 CredentialsRequest 사용자 정의 리소스(CR)를 추출하고 spec.secretRef.namespace 필드의 텍스트와 일치하는 네임스페이스가 클러스터에 있는지 확인했습니다.

프로세스

  1. 새로운 릴리스 이미지가 추가하는 모든 CredentialsRequest 사용자 정의 리소스에 대한 비밀을 담은 YAML 파일을 만듭니다. 시크릿은 각 CredentialsRequest 오브젝트의 spec.secretRef에 정의된 네임 스페이스 및 시크릿 이름을 사용하여 저장해야 합니다.

    예 2.6. 샘플 AWS YAML 파일

    비밀이 포함된 AWS CredentialsRequest 객체 샘플

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AWSProviderSpec
        statementEntries:
        - effect: Allow
          action:
          - s3:CreateBucket
          - s3:DeleteBucket
          resource: "*"
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Copy to Clipboard Toggle word wrap

    AWS Secret 객체 샘플

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      aws_access_key_id: <base64_encoded_aws_access_key_id>
      aws_secret_access_key: <base64_encoded_aws_secret_access_key>
    Copy to Clipboard Toggle word wrap

    예 2.7. Azure YAML 파일 샘플

    참고

    글로벌 Azure와 Azure Stack Hub는 동일한 CredentialsRequest 개체와 비밀 형식을 사용합니다.

    비밀이 포함된 Azure CredentialsRequest 개체 샘플

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: AzureProviderSpec
        roleBindings:
        - role: Contributor
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Copy to Clipboard Toggle word wrap

    Azure Secret 개체 샘플

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      azure_subscription_id: <base64_encoded_azure_subscription_id>
      azure_client_id: <base64_encoded_azure_client_id>
      azure_client_secret: <base64_encoded_azure_client_secret>
      azure_tenant_id: <base64_encoded_azure_tenant_id>
      azure_resource_prefix: <base64_encoded_azure_resource_prefix>
      azure_resourcegroup: <base64_encoded_azure_resourcegroup>
      azure_region: <base64_encoded_azure_region>
    Copy to Clipboard Toggle word wrap

    예 2.8. 샘플 GCP YAML 파일

    비밀이 포함된 GCP CredentialsRequest 객체 샘플

    apiVersion: cloudcredential.openshift.io/v1
    kind: CredentialsRequest
    metadata:
      name: <component_credentials_request>
      namespace: openshift-cloud-credential-operator
      ...
    spec:
      providerSpec:
        apiVersion: cloudcredential.openshift.io/v1
        kind: GCPProviderSpec
          predefinedRoles:
          - roles/iam.securityReviewer
          - roles/iam.roleViewer
          skipServiceCheck: true
          ...
      secretRef:
        name: <component_secret>
        namespace: <component_namespace>
      ...
    Copy to Clipboard Toggle word wrap

    샘플 GCP Secret 객체

    apiVersion: v1
    kind: Secret
    metadata:
      name: <component_secret>
      namespace: <component_namespace>
    data:
      service_account.json: <base64_encoded_gcp_service_account_file>
    Copy to Clipboard Toggle word wrap

  2. 시크릿에 저장된 기존 인증 정보에 대한 CredentialsRequest 사용자 정의 리소스에 변경된 권한 요구 사항이 있는 경우 필요에 따라 권한을 업데이트합니다.

다음 단계

  • upgradeable-to 주석을 업데이트하여 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

2.2.6. 클러스터를 업그레이드할 준비가 되었음을 나타냅니다.

CCO(Cloud Credential Operator) 수동으로 유지 관리되는 인증 정보가 있는 클러스터의 Upgradable 상태는 기본적으로 False 입니다.

사전 요구 사항

  • 업그레이드할 릴리스 이미지의 경우 새 인증 정보를 수동으로 처리하거나 Cloud Credential Operator 유틸리티(ccoctl)를 사용하여 처리했습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. cluster-admin 역할의 사용자로 클러스터에서 oc 에 로그인합니다.
  2. CloudCredential 리소스를 편집하여 다음 명령을 실행하여 metadata 필드 내에 upgradeable-to 주석을 추가합니다.

    $ oc edit cloudcredential cluster
    Copy to Clipboard Toggle word wrap

    추가할 텍스트

    ...
      metadata:
        annotations:
          cloudcredential.openshift.io/upgradeable-to: <version_number>
    ...
    Copy to Clipboard Toggle word wrap

    여기서 <version_number>x.y.z 형식으로 업그레이드할 버전입니다. 예를 들어 OpenShift Container Platform 4.12.2에는 4.12.2를 사용합니다.

    주석을 추가한 후 업그레이드 가능 상태가 변경되는 데 몇 분이 소요될 수 있습니다.

검증

  1. 웹 콘솔의 관리자 화면에서 관리자클러스터 설정으로 이동합니다.
  2. CCO 상태 세부 정보를 보려면 Cluster Operators 목록에서 cloud-credential을 클릭합니다.

    • Conditions 섹션의 Upgradeable 상태가 False인 경우 upgradeable-to 주석에 오타 오류가 없는지 확인합니다.
  3. Conditions 섹션의 Upgradeable 상태가 True 인 경우 OpenShift Container Platform 업그레이드를 시작합니다.

2.3. 커널 모듈 관리(KMM) 모듈에 대한 사전 검증

KMM 모듈이 적용된 클러스터에서 업그레이드를 수행하기 전에, 클러스터 업그레이드 및 가능한 커널 업그레이드 후에 KMM을 사용하여 설치된 커널 모듈을 노드에 설치할 수 있는지 확인해야 합니다. preflight는 클러스터에 로드된 모든 Module을 병렬로 검증하려고 합니다. preflight는 다른 Module의 검증을 시작하기 전에 하나의 Module의 유효성 검사가 완료될 때까지 기다리지 않습니다.

2.3.1. 검증 시작

사전 검증은 클러스터에 PreflightValidationOCP 리소스를 생성하여 트리거됩니다. 이 리소스에는 다음 필드가 포함되어 있습니다.

dtkImage

클러스터의 특정 OpenShift 컨테이너 플랫폼 버전에 대해 DTK 컨테이너 이미지가 릴리스되었습니다. 이 값이 설정되지 않으면 DTK_AUTO 기능을 사용할 수 없습니다.

클러스터에서 다음 명령 중 하나를 실행하여 이미지를 얻을 수 있습니다.

# For x86_64 image:
$ oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-x86_64 --image-for=driver-toolkit
Copy to Clipboard Toggle word wrap
# For ARM64 image:
$ oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-aarch64 --image-for=driver-toolkit
Copy to Clipboard Toggle word wrap
kernelVersion

클러스터가 업그레이드되는 커널 버전을 제공하는 필수 필드입니다.

클러스터에서 다음 명령을 실행하여 버전을 얻을 수 있습니다.

$ podman run -it --rm $(oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-x86_64 --image-for=driver-toolkit) cat /etc/driver-toolkit-release.json
Copy to Clipboard Toggle word wrap
pushBuiltImage
true 인 경우 빌드 및 서명 검증 중에 생성된 이미지가 해당 저장소에 푸시됩니다. 이 필드는 기본적으로 false입니다.

2.3.2. 검증 라이프사이클

사전 검증은 클러스터에 로드된 모든 모듈의 유효성을 검증하려고 시도합니다. 검증이 성공하면 Preflight는 모듈 리소스에 대한 검증 실행을 중지합니다. 모듈 유효성 검사에 실패하면 모듈 정의를 변경하고 Preflight는 다음 루프에서 모듈의 유효성 검사를 다시 시도합니다.

추가 커널에 대해 Preflight 유효성 검사를 실행하려면 해당 커널에 대한 또 다른 PreflightValidationOCP 리소스를 만들어야 합니다. 모든 모듈의 유효성이 검사된 후에는 PreflightValidationOCP 리소스를 삭제하는 것이 좋습니다.

2.3.3. 검증 상태

PreflightValidationOCP 리소스는 .status.modules 목록에서 검증을 시도하거나 검증을 시도한 클러스터의 각 모듈의 상태와 진행 상황을 보고합니다. 해당 목록의 요소에는 다음 필드가 포함됩니다.

name
모듈 리소스의 이름입니다.
네임스페이스
모듈 리소스의 네임스페이스입니다.
statusReason
상태에 대한 구두 설명.
verificationStage

실행 중인 검증 단계를 설명합니다.

  • 이미지 : 이미지 존재 검증
  • 완료 : 검증이 완료되었습니다.
verificationStatus

모듈 검증 상태:

  • 성공 : 확인됨
  • 실패 : 검증에 실패했습니다
  • 진행 중 : 검증이 진행 중입니다.

2.3.4. 이미지 검증 단계

이미지 검증은 항상 사전 검증의 첫 번째 단계로 실행됩니다. 이미지 검증이 성공하면 해당 모듈에서 다른 검증은 실행되지 않습니다. Operator는 컨테이너 런타임을 사용하여 모듈에서 업데이트된 커널에 대한 이미지 존재 및 접근성을 확인합니다.

이미지 검증이 실패하고 업그레이드된 커널과 관련된 모듈에 빌드/서명 섹션이 있는 경우, 컨트롤러는 이미지를 빌드하거나 서명하려고 시도합니다. PreflightValidationOCP 리소스에 PushBuiltImage 플래그가 정의된 경우 컨트롤러는 결과 이미지를 해당 저장소에 푸시하려고 시도합니다. 결과 이미지 이름은 모듈 CR의 containerImage 필드 정의에서 가져옵니다.

참고

빌드 섹션이 있는 경우, 표지판 섹션의 입력 이미지는 빌드 섹션의 출력 이미지로 사용됩니다. 따라서 입력 이미지를 기호 섹션에서 사용할 수 있으려면 PreflightValidationOCP CR에 PushBuiltImage 플래그를 정의해야 합니다.

2.3.5. PreflightValidationOCP 리소스의 예

다음 예에서는 YAML 형식의 PreflightValidationOCP 리소스를 보여줍니다.

이 예제에서는 현재 존재하는 모든 모듈을 다가올 5.14.0-570.19.1.el9_6.x86_64 커널과 비교 검증합니다. .spec.pushBuiltImagetrue 로 설정되었으므로 KMM은 Build/Sign의 결과 이미지를 정의된 저장소에 푸시합니다.

apiVersion: kmm.sigs.x-k8s.io/v1beta2
kind: PreflightValidationOCP
metadata:
  name: preflight
spec:
  kernelVersion: 5.14.0-570.19.1.el9_6.x86_64
  dtkImage: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:fe0322730440f1cbe6fffaaa8cac131b56574bec8abe3ec5b462e17557fecb32
  pushBuiltImage: true
Copy to Clipboard Toggle word wrap

2.4. OpenShift Container Platform 4.18에서 최신 버전으로 업데이트 준비 중

OpenShift Container Platform 4.18에서 최신 버전으로 업데이트하기 전에 Red Hat Enterprise Linux(RHEL) 컴퓨팅 머신과 관련된 몇 가지 특정 문제에 대해 알아보세요.

2.4.1. 패키지 기반 RHEL 작업자 노드에서 워크로드 마이그레이션

OpenShift Container Platform 4.19가 출시되면서 패키지 기반 RHEL 워커 노드는 더 이상 지원되지 않습니다. 해당 노드가 실행 중일 때 클러스터를 업데이트하려고 하면 업데이트가 실패합니다.

노드 선택기를 사용하여 RHEL 컴퓨트 노드에서 실행되는 Pod를 RHCOS 노드에서 실행되도록 일정을 변경할 수 있습니다.

예를 들어, 다음 노드 객체에는 운영 체제 정보에 대한 레이블이 있습니다(이 경우 RHCOS).

RHCOS 레이블이 있는 샘플 노드 객체

kind: Node
apiVersion: v1
metadata:
  name: ip-10-0-131-14.ec2.internal
  selfLink: /api/v1/nodes/ip-10-0-131-14.ec2.internal
  uid: 7bc2580a-8b8e-11e9-8e01-021ab4174c74
  resourceVersion: '478704'
  creationTimestamp: '2019-06-10T14:46:08Z'
  labels:
    kubernetes.io/os: linux
    failure-domain.beta.kubernetes.io/zone: us-east-1a
    node.openshift.io/os_version: '4.19'
    node-role.kubernetes.io/worker: ''
    failure-domain.beta.kubernetes.io/region: us-east-1
    node.openshift.io/os_id: rhcos 
1

    beta.kubernetes.io/instance-type: m4.large
    kubernetes.io/hostname: ip-10-0-131-14
    beta.kubernetes.io/arch: amd64
#...
Copy to Clipboard Toggle word wrap

1
포드 노드 선택기와 일치하도록 노드에서 실행되는 운영 체제를 식별하는 레이블입니다.

새로운 RHCOS 노드에 예약하려는 모든 포드에는 nodeSelector 필드에 일치하는 레이블이 있어야 합니다. 다음 절차에서는 레이블을 추가하는 방법을 설명합니다.

프로세스

  1. 다음 명령을 입력하여 현재 기존 Pod를 실행하는 RHEL 노드를 예약합니다.

    $ oc adm cordon <rhel-node>
    Copy to Clipboard Toggle word wrap
  2. Pod에 rhcos 노드 선택기를 추가합니다.

    • 기존 및 향후 Pod에 노드 선택기를 추가하려면 다음 명령을 입력하여 Pod의 컨트롤러 오브젝트에 노드 선택기를 추가합니다.

      rhcos 레이블이 있는 Deployment 오브젝트의 예

      $ oc patch dc <my-app> -p '{"spec":{"template":{"spec":{"nodeSelector":{"node.openshift.io/os_id":"rhcos"}}}}}'
      Copy to Clipboard Toggle word wrap

      Deployment Control 오브젝트 아래의 기존 Pod는 RHCOS 노드에 다시 생성됩니다.

    • 특정 새 Pod에 노드 선택기를 추가하려면 선택기를 Pod 오브젝트에 직접 추가합니다.

      rhcos 라벨이 있는 Pod 오브젝트의 예

      apiVersion: v1
      kind: Pod
      metadata:
        name: <my-app>
      #...
      spec:
        nodeSelector:
          node.openshift.io/os_id: rhcos
      #...
      Copy to Clipboard Toggle word wrap

      Pod에도 제어 오브젝트가 있다고 가정하면 새 Pod가 RHCOS 노드에 생성됩니다.

2.4.2. RHEL 작업자 노드 식별 및 제거

OpenShift Container Platform 4.19가 도입되면서 패키지 기반 RHEL 작업자 노드가 더 이상 지원되지 않습니다. 다음 절차에서는 베어 메탈 설치에서 클러스터를 제거할 RHEL 노드를 식별하는 방법을 설명합니다. 클러스터를 성공적으로 업데이트하려면 다음 단계를 완료해야 합니다.

프로세스

  1. 다음 명령을 입력하여 RHEL을 실행하는 클러스터의 노드를 식별합니다.

    $ oc get -l node.openshift.io/os_id=rhel
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                        STATUS    ROLES     AGE       VERSION
    rhel-node1.example.com      Ready     worker    7h        v1.32.3
    rhel-node2.example.com      Ready     worker    7h        v1.32.3
    rhel-node3.example.com      Ready     worker    7h        v1.32.3
    Copy to Clipboard Toggle word wrap

  2. 노드 제거 프로세스를 계속합니다. RHEL 노드는 Machine API에서 관리되지 않으며 컴퓨팅 머신 세트가 연결되어 있지 않습니다. 클러스터에서 수동으로 삭제하기 전에 일정을 취소하고 노드를 드레이닝해야 합니다.

    이 프로세스에 대한 자세한 내용은 Red Hat OpenShift Container Platform 4 UPI에서 작업자 노드를 제거하는 방법을 참조하십시오.

2.4.3. 새 RHCOS 작업자 노드 프로비저닝

워크로드에 추가 컴퓨팅 노드가 필요한 경우 클러스터를 업데이트하기 전이나 후에 새 노드를 프로비저닝할 수 있습니다. 자세한 내용은 다음 머신 관리 설명서를 참조하십시오.

설치 관리자 프로비저닝 인프라 설치의 경우 자동 스케일링은 기본적으로 RHCOS 노드를 추가합니다. 베어 메탈 플랫폼에 사용자가 프로비저닝한 인프라 설치의 경우 RHCOS 컴퓨팅 노드를 클러스터에 수동으로 추가할 수 있습니다.

3장. 클러스터 업데이트 수행

3.1. CLI를 사용하여 클러스터 업데이트

OpenShift CLI(oc)를 사용하여 OpenShift Container Platform 클러스터에서 마이너 버전 및 패치 업데이트를 수행할 수 있습니다.

3.1.1. 사전 요구 사항

  • admin 권한이 있는 사용자로 클러스터에 액세스합니다. RBAC를 사용하여 권한 정의 및 적용을 참조하십시오.
  • 업그레이드에 실패할 경우 etcd backup이 있어야 하고 클러스터를 이전 상태로 복원해야 합니다.
  • Pod 실패로 인해 영구 볼륨을 복원해야 하는 경우 최신 CSI(Container Storage Interface) 볼륨 스냅샷 이 있어야 합니다.
  • RHEL7 작업자는 RHEL8 또는 RHCOS 작업자로 교체됩니다. Red Hat은 RHEL 작업자의 RHEL7에서 RHEL8 업데이트를 지원하지 않습니다. 해당 호스트는 완전히 새로운 운영 체제 설치로 교체되어야 합니다.
  • OLM(Operator Lifecycle Manager)을 통해 이전에 설치된 모든 Operator를 대상 릴리스와 호환되는 버전으로 업데이트했습니다. Operator를 업데이트하면 클러스터 업그레이드 중에 기본 OperatorHub 카탈로그가 현재 마이너 버전에서 다음 버전으로 전환될 때 유효한 업그레이드 경로를 갖게 됩니다. 호환성을 확인하고 필요한 경우 설치된 Operator를 업데이트하는 방법에 대한 자세한 내용은 설치된 Operator 업데이트를 참조하십시오.
  • 모든 MCP(Machine config pool)가 실행 중이고 일시 중지되지 않는지 확인합니다. 업데이트 프로세스 중에 일시 중지된 MCP와 연결된 노드를 건너뜁니다. 카나리아 롤아웃 업데이트 전략을 수행하는 경우 MCP를 일시 중지할 수 있습니다.
  • 클러스터에서 수동으로 유지 관리되는 인증 정보를 사용하는 경우 새 릴리스의 클라우드 공급자 리소스를 업데이트합니다. 클러스터의 요구 사항인지 확인하는 방법을 포함하여 자세한 내용은 수동으로 유지 관리되는 인증 정보를 사용하여 클러스터 업데이트 준비를 참조하십시오.
  • 클러스터가 다음 마이너 버전으로 업그레이드할 수 있도록 모든 Upgradeable=False 조건을 처리해야 합니다. 업그레이드할 수 없는 클러스터 Operator가 하나 이상 있는 경우 클러스터 설정 페이지 상단에 경고가 표시됩니다. 현재 사용 중인 마이너 릴리스에 대해 사용 가능한 다음 패치 업데이트로 업그레이드할 수 있습니다.
  • Operator를 실행하거나 Pod 중단 예산으로 애플리케이션을 구성한 경우 업데이트 프로세스 중에 중단이 발생할 수 있습니다. PodDisruptionBudget 에서 minAvailable이 1로 설정된 경우 보류 중인 머신 구성을 적용하기 위해 노드가 비워지며 이로 인해 퇴거 프로세스가 차단될 수 있습니다. 여러 노드가 재부팅되면 모든 포드가 하나의 노드에서만 실행될 수 있으며, PodDisruptionBudget 필드가 노드 비움을 방지할 수 있습니다.
중요
  • 업데이트가 완료되지 않으면 클러스터 버전 운영자(CVO)가 업데이트를 조정하는 동안 차단된 구성 요소의 상태를 보고합니다. 클러스터를 이전 버전으로 롤백하는 것은 지원되지 않습니다. 업데이트가 완료되지 않으면 Red Hat 지원팀에 문의하세요.
  • unsupportedConfigOverrides 섹션을 사용하여 Operator의 구성을 수정하는 것은 지원되지 않으며 클러스터 업데이트가 차단될 수 있습니다. 클러스터를 업데이트하려면 먼저 이 설정을 제거해야 합니다.

3.1.2. MachineHealthCheck 리소스 일시 중지

업데이트 프로세스 중에 클러스터의 노드를 일시적으로 사용할 수 없게 될 수 있습니다. 워커 노드의 경우, MachineHealthCheck 리소스는 해당 노드를 비정상으로 식별하고 재부팅할 수 있습니다. 이러한 노드를 재부팅하지 않으려면 클러스터를 업데이트하기 전에 모든 MachineHealthCheck 리소스를 일시 중지합니다.

참고

일부 MachineHealthCheck 리소스는 일시 중지할 필요가 없을 수도 있습니다. MachineHealthCheck 리소스가 복구할 수 없는 조건에 의존하는 경우 해당 MHC를 일시 중지할 필요가 없습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.

프로세스

  1. 일시 중지하려는 사용 가능한 MachineHealthCheck 리소스를 모두 나열하려면 다음 명령을 실행합니다.

    $ oc get machinehealthcheck -n openshift-machine-api
    Copy to Clipboard Toggle word wrap
  2. 머신 상태 점검을 일시 중지하려면 cluster.x-k8s.io/paused="" 주석을 MachineHealthCheck 리소스에 추가합니다. 다음 명령을 실행합니다.

    $ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused=""
    Copy to Clipboard Toggle word wrap

    주석이 지정된 MachineHealthCheck 리소스는 다음 YAML 파일과 유사합니다.

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineHealthCheck
    metadata:
      name: example
      namespace: openshift-machine-api
      annotations:
        cluster.x-k8s.io/paused: ""
    spec:
      selector:
        matchLabels:
          role: worker
      unhealthyConditions:
      - type:    "Ready"
        status:  "Unknown"
        timeout: "300s"
      - type:    "Ready"
        status:  "False"
        timeout: "300s"
      maxUnhealthy: "40%"
    status:
      currentHealthy: 5
      expectedMachines: 5
    Copy to Clipboard Toggle word wrap
    중요

    클러스터를 업데이트한 후 머신 상태 점검을 다시 시작합니다. 검사를 다시 시작하려면 다음 명령을 실행하여 MachineHealthCheck 리소스에서 일시 중지 주석을 제거합니다.

    $ oc -n openshift-machine-api annotate mhc <mhc-name> cluster.x-k8s.io/paused-
    Copy to Clipboard Toggle word wrap

3.1.3. 단일 노드 OpenShift 컨테이너 플랫폼 업데이트에 관하여

콘솔이나 CLI를 사용하여 단일 노드 OpenShift Container Platform 클러스터를 업데이트하거나 업그레이드할 수 있습니다.

그러나 다음과 같은 제한 사항이 있습니다.

  • MachineHealthCheck 리소스를 일시 중지하는 전제 조건은 상태 검사를 수행할 다른 노드가 없기 때문에 필요하지 않습니다.
  • etcd 백업을 사용하여 단일 노드 OpenShift Container Platform 클러스터를 복원하는 것은 공식적으로 지원되지 않습니다. 하지만 업데이트가 실패할 경우를 대비해 etcd 백업을 수행하는 것이 좋습니다. 제어 평면이 정상이면 백업을 사용하여 클러스터를 이전 상태로 복원할 수 있습니다.
  • 단일 노드 OpenShift Container Platform 클러스터를 업데이트하려면 가동 중지 시간이 필요하며 자동 재부팅이 포함될 수 있습니다. 다운타임의 양은 다음 시나리오에서 설명한 대로 업데이트 페이로드에 따라 달라집니다.

    • 업데이트 페이로드에 재부팅이 필요한 운영 체제 업데이트가 포함되어 있는 경우 다운타임이 심각해지고 클러스터 관리와 사용자 작업 부하에 영향을 미칩니다.
    • 업데이트에 재부팅이 필요하지 않은 머신 구성 변경 사항이 포함된 경우 가동 중지 시간이 줄어들고 클러스터 관리 및 사용자 작업 부하에 미치는 영향도 줄어듭니다. 이 경우, 클러스터에 작업 부하를 재조정할 다른 노드가 없기 때문에 단일 노드 OpenShift Container Platform에서는 노드 드레이닝 단계가 건너뜁니다.
    • 업데이트 페이로드에 운영 체제 업데이트나 머신 구성 변경 사항이 포함되지 않은 경우 짧은 API 중단이 발생하지만 빠르게 해결됩니다.
중요

업데이트된 패키지의 버그와 같은 조건으로 인해 재부팅 후 단일 노드가 다시 시작되지 않을 수 있습니다. 이 경우 업데이트가 자동으로 롤백되지 않습니다.

3.1.4. CLI를 사용하여 클러스터 업데이트

OpenShift CLI( oc )를 사용하여 클러스터 업데이트를 검토하고 요청할 수 있습니다.

사용 가능한 OpenShift Container Platform 권고 및 업데이트는 고객 포털의 에라타 섹션을 참조하십시오.

전제 조건

  • 업데이트된 버전과 일치하는 OpenShift CLI (oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 클러스터에 로그인합니다.
  • 모든 MachineHealthCheck 리소스를 일시 중지합니다.

프로세스

  1. 사용 가능한 업데이트를 확인하고 적용하려는 업데이트의 버전 번호를 기록해 둡니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    출력 예

    Cluster version is 4.13.10
    Upstream is unset, so the cluster will use an appropriate default.
    Channel: stable-4.13 (available channels: candidate-4.13, candidate-4.14, fast-4.13, stable-4.13)
    Recommended updates:
      VERSION     IMAGE
      4.13.14     quay.io/openshift-release-dev/ocp-release@sha256:406fcc160c097f61080412afcfa7fd65284ac8741ac7ad5b480e304aba73674b
      4.13.13     quay.io/openshift-release-dev/ocp-release@sha256:d62495768e335c79a215ba56771ff5ae97e3cbb2bf49ed8fb3f6cefabcdc0f17
      4.13.12     quay.io/openshift-release-dev/ocp-release@sha256:73946971c03b43a0dc6f7b0946b26a177c2f3c9d37105441315b4e3359373a55
      4.13.11     quay.io/openshift-release-dev/ocp-release@sha256:e1c2377fdae1d063aaddc753b99acf25972b6997ab9a0b7e80cfef627b9ef3dd
    Copy to Clipboard Toggle word wrap

    참고
    • 권장 업데이트가 없더라도 알려진 문제가 있는 업데이트는 여전히 사용 가능할 수 있습니다. 자세한 내용은 조건부 업데이트 경로를 따라업데이트를 참조하십시오.
    • 제어 평면 전용 업데이트를 수행하는 방법에 대한 자세한 내용과 정보는 추가 리소스 섹션에 나열된 제어 평면 전용 업데이트 수행 준비 페이지를 참조하세요.
  2. 조직의 요구 사항에 따라 적절한 업데이트 채널을 설정하세요. 예를 들어 채널을 stable-4.13 또는 fast-4.13 으로 설정할 수 있습니다. 채널에 대한 자세한 내용은 추가 리소스 섹션에 나열된 업데이트 채널 및 릴리스 이해를 참조하세요.

    $ oc adm upgrade channel <channel>
    Copy to Clipboard Toggle word wrap

    예를 들어, 채널을 stable-4.19 로 설정하려면 다음을 실행합니다.

    $ oc adm upgrade channel stable-4.19
    Copy to Clipboard Toggle word wrap
    중요

    프로덕션 클러스터의 경우 stable-* , eus-* 또는 fast-* 채널을 구독해야 합니다.

    참고

    다음 마이너 버전으로 넘어갈 준비가 되면 해당 마이너 버전에 해당하는 채널을 선택하세요. 업데이트 채널이 빨리 선언될수록 클러스터가 대상 버전에 대한 업데이트 경로를 더 효과적으로 추천할 수 있습니다. 클러스터가 사용 가능한 모든 업데이트를 평가하고 선택할 수 있는 최상의 업데이트 권장 사항을 제공하는 데 시간이 걸릴 수 있습니다. 업데이트 권장 사항은 당시에 사용 가능한 업데이트 옵션에 따라 달라지므로 시간이 지남에 따라 변경될 수 있습니다.

    대상 마이너 버전에 대한 업데이트 경로가 보이지 않으면 경로에 다음 마이너 버전이 나올 때까지 현재 버전의 최신 패치 릴리스로 클러스터를 계속 업데이트하세요.

  3. 업데이트를 적용합니다.

    • 최신 버전으로 업데이트하려면 다음을 수행합니다.

      $ oc adm upgrade --to-latest=true 
      1
      Copy to Clipboard Toggle word wrap
    • 특정 버전으로 업데이트하려면 다음을 수행합니다.

      $ oc adm upgrade --to=<version> 
      1
      Copy to Clipboard Toggle word wrap
      1 1
      <버전>oc adm upgrade 명령의 출력에서 얻은 업데이트 버전입니다.
      중요

      oc adm upgrade --help 를 사용하면 --force 에 대한 옵션이 나열됩니다. --force 옵션을 사용하면 릴리스 검증 및 사전 조건 확인을 포함한 클러스터 측 보호 조치를 우회하므로 이 방법은 권장되지 않습니다 . --force를 사용해도 업데이트가 성공적으로 이루어진다는 보장은 없습니다. 경비원을 우회하면 클러스터가 위험에 처하게 됩니다.

  4. 클러스터 버전 Operator의 상태를 확인합니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap
  5. 업데이트가 완료되면 클러스터 버전이 새 버전으로 업데이트되었는지 확인합니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    출력 예

    Cluster version is <version>
    
    Upstream is unset, so the cluster will use an appropriate default.
    Channel: stable-<version> (available channels: candidate-<version>, eus-<version>, fast-<version>, stable-<version>)
    
    No updates available. You may force an update to a specific release image, but doing so might not be supported and might result in downtime or data loss.
    Copy to Clipboard Toggle word wrap

  6. 클러스터를 다음 마이너 버전(예: 버전 Xy에서 X.(y+1))으로 업데이트하는 경우 새 기능에 의존하는 워크로드를 배포하기 전에 노드가 업데이트되었는지 확인하는 것이 좋습니다.

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                           STATUS   ROLES    AGE   VERSION
    ip-10-0-168-251.ec2.internal   Ready    master   82m   v1.32.3
    ip-10-0-170-223.ec2.internal   Ready    master   82m   v1.32.3
    ip-10-0-179-95.ec2.internal    Ready    worker   70m   v1.32.3
    ip-10-0-182-134.ec2.internal   Ready    worker   70m   v1.32.3
    ip-10-0-211-16.ec2.internal    Ready    master   82m   v1.32.3
    ip-10-0-250-100.ec2.internal   Ready    worker   69m   v1.32.3
    Copy to Clipboard Toggle word wrap

클러스터를 업데이트할 때 oc adm upgrade 명령은 사용 가능한 다음 버전 목록을 반환합니다. oc adm upgrade recommendation 명령을 사용하면 제안 범위를 좁히고 업데이트를 실행하기 전에 새로운 대상 릴리스를 추천할 수 있습니다.

oc adm upgrade recommendation 명령은 읽기 전용이므로 클러스터 상태를 변경할 수 없습니다.

중요

oc adm upgrade recommendation 명령은 Technology Preview 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

참고

oc adm upgrade recommend 명령을 사용하려면 클러스터가 Technology Preview가 활성화된 클러스터일 필요는 없습니다.

프로세스

  1. 다음 명령을 실행하여 OC_ENABLE_CMD_UPGRADE_RECOMMEND 환경 변수를 true 로 설정합니다.

    $ export OC_ENABLE_CMD_UPGRADE_RECOMMEND=true
    Copy to Clipboard Toggle word wrap
  2. 다음 명령 중 하나를 실행합니다.

    • 업데이트에 권장되는 버전을 나열하려면 oc adm upgrade recommend 명령을 실행하세요.

      $ oc adm upgrade recommend
      Copy to Clipboard Toggle word wrap

      출력 예

      Upstream is unset, so the cluster will use an appropriate default.
      Channel: stable-4.13 (available channels: candidate-4.12, candidate-4.13, eus-4.12, eus-4.14, fast-4.12, fast-4.13, stable-4.12, stable-4.13)
      
      Updates to 4.13:
      
      Version: 4.13.50
      Image: quay.io/openshift-release-dev/ocp-release@sha256:6afb11e1cac46fd26476ca134072937115256b9c6360f7a1cd1812992c065f02
      Reason: AdminAckRequired
      Message: Kubernetes 1.26 and therefore OpenShift 4.13 remove several APIs which require admin consideration. Please see the knowledge article https://access.redhat.com/articles/6958394 for details and instructions.
      
      Version: 4.13.49
      Image: quay.io/openshift-release-dev/ocp-release@sha256:ab6f574665395d809511db9dc57764358278538eaae248c6d199208b3c30ab7d
      Reason: AdminAckRequired
      Message: Kubernetes 1.26 and therefore OpenShift 4.13 remove several APIs which require admin consideration. Please see the knowledge article https://access.redhat.com/articles/6958394 for details and instructions.
      
      Updates to 4.12:
      VERSION     ISSUES
      4.12.64     no known issues
      4.12.63     no known issues
      And 43 older 4.12 updates you can see with '--show-outdated-releases' or '--version VERSION'.
      Copy to Clipboard Toggle word wrap

    • 업데이트에 특정 버전이 권장되는지 확인하려면 oc adm upgrade recommend --version 명령을 실행하세요.

      $ oc adm upgrade recommend --version 4.12.51
      Copy to Clipboard Toggle word wrap

      출력 예

      Upstream is unset, so the cluster will use an appropriate default.
      Channel: stable-4.13 (available channels: candidate-4.12, candidate-4.13, eus-4.12, eus-4.14, fast-4.12, fast-4.13, stable-4.12, stable-4.13)
      
      Update to 4.12.51 Recommended=False:
      Image: quay.io/openshift-release-dev/ocp-release@sha256:158ced797e49f6caf7862acccef58484be63b642fdd2f66e6416295fa7958ab0
      Release URL: https://access.redhat.com/errata/RHSA-2024:1052
      Reason: MultipleReasons
      Message: An unintended reversion to the default kubelet nodeStatusReportFrequency can cause significant load on the control plane. https://issues.redhat.com/browse/MCO-1094
      
      After rebooting into kernel-4.18.0-372.88.1.el8_6 or later, kernel nodes experience high load average and io_wait times. The nodes might fail to start or stop pods and probes may fail. Workload and host processes may become unresponsive and workload may be disrupted. https://issues.redhat.com/browse/COS-2705
      Copy to Clipboard Toggle word wrap

클러스터를 업데이트할 때 oc adm upgrade 명령은 업데이트 상태에 대한 제한된 정보를 반환합니다. oc adm upgrade status 명령을 사용하면 oc adm upgrade 명령에서 상태 정보를 분리하고 제어 평면 및 작업자 노드 업데이트 상태를 포함하여 클러스터 업데이트에 대한 특정 정보를 반환할 수 있습니다.

oc adm upgrade status 명령은 읽기 전용이며 클러스터의 어떤 상태도 변경하지 않습니다.

중요

oc adm upgrade status 명령은 Technology Preview 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

oc adm upgrade status 명령은 버전 4.12부터 최신 지원 릴리스까지의 클러스터에 사용할 수 있습니다.

참고

oc adm upgrade status 명령을 사용하려면 클러스터가 Technology Preview가 활성화된 클러스터일 필요는 없습니다.

프로세스

  1. 다음 명령을 실행하여 OC_ENABLE_CMD_UPGRADE_STATUS 환경 변수를 true 로 설정합니다.

    $ export OC_ENABLE_CMD_UPGRADE_STATUS=true
    Copy to Clipboard Toggle word wrap
  2. oc adm upgrade status 명령을 실행합니다.

    $ oc adm upgrade status
    Copy to Clipboard Toggle word wrap

    업데이트가 성공적으로 진행됨에 대한 예시 출력

    = Control Plane =
    Assessment:      Progressing
    Target Version:  4.17.1 (from 4.17.0)
    Updating:        machine-config
    Completion:      97% (32 operators updated, 1 updating, 0 waiting)
    Duration:        54m (Est. Time Remaining: <10m)
    Operator Status: 32 Healthy, 1 Unavailable
    
    Control Plane Nodes
    NAME                                        ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-53-40.us-east-2.compute.internal    Progressing   Draining   4.17.0    +10m
    ip-10-0-30-217.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    ip-10-0-92-180.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    
    = Worker Upgrade =
    
    WORKER POOL   ASSESSMENT    COMPLETION   STATUS
    worker        Progressing   0% (0/2)     1 Available, 1 Progressing, 1 Draining
    infra         Progressing   50% (1/2)    1 Available, 1 Progressing, 1 Draining
    
    Worker Pool Nodes: Worker
    NAME                                       ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-4-159.us-east-2.compute.internal   Progressing   Draining   4.17.0    +10m
    ip-10-0-99-40.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    
    Worker Pool Nodes: infra
    NAME                                             ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-4-159-infra.us-east-2.compute.internal   Progressing   Draining   4.17.0    +10m
    ip-10-0-20-162.us-east-2.compute.internal        Completed     Updated    4.17.1    -
    
    = Update Health =
    SINCE   LEVEL   IMPACT   MESSAGE
    54m4s   Info    None     Update is proceeding well
    Copy to Clipboard Toggle word wrap

3.1.7. 조건부 업데이트 경로를 따라 업데이트

웹 콘솔이나 OpenShift CLI( oc )를 사용하여 권장되는 조건부 업데이트 경로에 따라 업데이트할 수 있습니다. 클러스터에 조건부 업데이트가 권장되지 않는 경우 OpenShift CLI( oc ) 4.10 이상을 사용하여 조건부 업데이트 경로를 따라 업데이트할 수 있습니다.

프로세스

  1. 위험이 적용될 수 있어 업데이트가 권장되지 않는 경우 해당 업데이트에 대한 설명을 보려면 다음 명령을 실행하세요.

    $ oc adm upgrade --include-not-recommended
    Copy to Clipboard Toggle word wrap
  2. 클러스터 관리자가 잠재적으로 알려진 위험을 평가하고 현재 클러스터에 허용 가능하다고 판단하는 경우 관리자는 다음 명령을 실행하여 보안 가드를 해제하고 업데이트를 진행할 수 있습니다.

    $ oc adm upgrade --allow-not-recommended --to <version> <.>
    Copy to Clipboard Toggle word wrap

    <.> <version>은 이전 명령의 출력에서 얻은 업데이트 버전입니다. 이는 지원되지만 알려진 문제 또는 위험도 있습니다.

3.1.8. CLI를 사용하여 업데이트 서버 변경

업데이트 서버 변경은 선택 사항입니다. 로컬에 설치되어 구성된 OSUS(OpenShift Update Service)가 있는 경우 업데이트 중에 로컬 서버를 사용하도록 서버의 URL을 upstream으로 설정해야 합니다. upstream의 기본값은 https://api.openshift.com/api/upgrades_info/v1/graph입니다.

프로세스

  • 클러스터 버전에서 upstream 매개변수 값을 변경합니다.

    $ oc patch clusterversion/version --patch '{"spec":{"upstream":"<update-server-url>"}}' --type=merge
    Copy to Clipboard Toggle word wrap

    <update-server-url> 변수는 업데이트 서버의 URL을 지정합니다.

    출력 예

    clusterversion.config.openshift.io/version patched
    Copy to Clipboard Toggle word wrap

3.2. 웹 콘솔을 사용하여 클러스터 업데이트

웹 콘솔을 사용하여 OpenShift Container Platform 클러스터에서 마이너 버전 및 패치 업데이트를 수행할 수 있습니다.

참고

웹 콘솔 또는 oc adm upgrade channel <channel> 을 사용하여 업데이트 채널을 변경합니다. 4.19 채널로 변경한 후 CLI를 사용하여 클러스터 업데이트 의 단계에 따라 업데이트를 완료할 수 있습니다.

3.2.1. OpenShift Container Platform 클러스터를 업데이트하기 전에

업데이트하기 전에 다음 사항을 고려하세요.

  • 최근에 etcd를 백업했습니다.
  • PodDisruptionBudget 에서 minAvailable이 1 로 설정된 경우, 노드는 비워져서 강제 퇴장 프로세스를 차단할 수 있는 보류 중인 머신 구성을 적용합니다. 여러 노드가 재부팅되면 모든 포드가 하나의 노드에서만 실행될 수 있으며, PodDisruptionBudget 필드가 노드 비움을 방지할 수 있습니다.
  • 클러스터가 수동으로 유지 관리되는 자격 증명을 사용하는 경우 새 릴리스에 대한 클라우드 공급자 리소스를 업데이트해야 할 수도 있습니다.
  • 관리자의 확인 요청을 검토하고, 권장되는 조치를 취한 후, 준비가 되면 확인을 제공해야 합니다.
  • 업데이트에 걸리는 시간을 수용하기 위해 작업자 또는 사용자 지정 풀 노드를 업데이트하여 부분적인 업데이트를 수행할 수 있습니다. 각 풀의 진행률 표시줄에서 일시 중지하고 다시 시작할 수 있습니다.
중요
  • 업데이트가 완료되지 않으면 클러스터 버전 운영자(CVO)가 업데이트를 조정하는 동안 차단된 구성 요소의 상태를 보고합니다. 클러스터를 이전 버전으로 롤백하는 것은 지원되지 않습니다. 업데이트가 완료되지 않으면 Red Hat 지원팀에 문의하세요.
  • unsupportedConfigOverrides 섹션을 사용하여 Operator의 구성을 수정하는 것은 지원되지 않으며 클러스터 업데이트가 차단될 수 있습니다. 클러스터를 업데이트하려면 먼저 이 설정을 제거해야 합니다.

3.2.2. 웹 콘솔을 사용하여 업데이트 서버 변경

업데이트 서버 변경은 선택 사항입니다. 로컬에 설치되어 구성된 OSUS(OpenShift Update Service)가 있는 경우 업데이트 중에 로컬 서버를 사용하도록 서버의 URL을 upstream으로 설정해야 합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.

프로세스

  1. 관리클러스터 설정으로 이동하여 버전을 클릭합니다.
  2. YAML 탭을 클릭한 다음 업스트림 매개변수 값을 편집합니다.

    출력 예

      ...
      spec:
        clusterID: db93436d-7b05-42cc-b856-43e11ad2d31a
        upstream: '<update-server-url>' 
    1
    
      ...
    Copy to Clipboard Toggle word wrap

    1
    <update-server-url> 변수는 업데이트 서버의 URL을 지정합니다.

    기본 upstreamhttps://api.openshift.com/api/upgrades_info/v1/graph입니다.

  3. 저장을 클릭합니다.

3.2.3. 웹 콘솔을 사용하여 MachineHealthCheck 리소스 일시 중지

업데이트 프로세스 중에 클러스터의 노드를 일시적으로 사용할 수 없게 될 수 있습니다. 작업자 노드의 경우 시스템 상태 점검에서 이러한 노드를 비정상으로 식별하고 재부팅할 수 있습니다. 이러한 노드를 재부팅하지 않으려면 클러스터를 업데이트하기 전에 모든 MachineHealthCheck 리소스를 일시 중지합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. ComputeMachineHealthChecks 로 이동합니다.
  3. 머신 상태 검사를 일시 중지하려면 각 MachineHealthCheck 리소스에 cluster.x-k8s.io/paused="" 주석을 추가합니다. 예를 들어, machine-api-termination-handler 리소스에 주석을 추가하려면 다음 단계를 완료하세요.

    1. 옵션 메뉴를 클릭하세요 kebab machine-api-termination-handler 옆에 있는 Edit annotations를 클릭하세요.
    2. 주석 편집 대화 상자에서 추가 를 클릭합니다.
    3. 필드에 cluster.x-k8s.io/paused"" 값을 각각 추가하고 저장을 클릭합니다.

3.2.4. 웹 콘솔을 사용하여 클러스터 업데이트

사용 가능한 업데이트가 있으면 웹 콘솔에서 클러스터를 업데이트할 수 있습니다.

사용 가능한 OpenShift Container Platform 권고 및 업데이트는 고객 포털의 에라타 섹션을 참조하십시오.

사전 요구 사항

  • 클러스터 관리자 권한이 있는 사용자로 웹 콘솔에 액세스할 수 있습니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
  • 모든 MachineHealthCheck 리소스를 일시 중지합니다.
  • 이전에 Operator Lifecycle Manager(OLM)를 통해 설치한 모든 Operator를 대상 릴리스와 호환되는 버전으로 업데이트했습니다. Operator를 업데이트하면 클러스터 업데이트 중에 기본 OperatorHub 카탈로그가 현재 마이너 버전에서 다음 마이너 버전으로 전환될 때 유효한 업데이트 경로가 있는지 확인할 수 있습니다. 호환성을 확인하는 방법과 필요한 경우 설치된 Operator를 업데이트하는 방법에 대한 자세한 내용은 "추가 리소스" 섹션의 "설치된 Operator 업데이트"를 참조하세요.
  • 귀하의 머신 구성 풀(MCP)이 실행 중이며 일시 중지되지 않았습니다. 업데이트 프로세스 중에 일시 중지된 MCP와 연결된 노드를 건너뜁니다. 카나리아 롤아웃 업데이트 전략을 수행하는 경우 MCP를 일시 중지할 수 있습니다.
  • RHEL7 작업자는 RHEL8 또는 RHCOS 작업자로 교체됩니다. Red Hat은 RHEL 작업자에 대한 RHEL7~RHEL8의 기존 업데이트를 지원하지 않습니다. 해당 호스트는 새로 설치된 운영 체제로 교체해야 합니다.

프로세스

  1. 웹 콘솔에서 AdministrationCluster Settings을 클릭하고 Details 탭의 내용을 확인합니다.
  2. 프로덕션 클러스터의 경우 업데이트하려는 버전에 맞는 올바른 채널(예: stable-4.19)채널이 설정되어 있는지 확인하세요.

    중요

    프로덕션 클러스터의 경우 stable-* , eus-* 또는 fast-* 채널을 구독해야 합니다.

    참고

    다음 마이너 버전으로 넘어갈 준비가 되면 해당 마이너 버전에 해당하는 채널을 선택하세요. 업데이트 채널이 빨리 선언될수록 클러스터가 대상 버전에 대한 업데이트 경로를 더 효과적으로 추천할 수 있습니다. 클러스터가 사용 가능한 모든 업데이트를 평가하고 선택할 수 있는 최상의 업데이트 권장 사항을 제공하는 데 시간이 걸릴 수 있습니다. 업데이트 권장 사항은 당시에 사용 가능한 업데이트 옵션에 따라 달라지므로 시간이 지남에 따라 변경될 수 있습니다.

    대상 마이너 버전에 대한 업데이트 경로가 보이지 않으면 경로에 다음 마이너 버전이 나올 때까지 현재 버전의 최신 패치 릴리스로 클러스터를 계속 업데이트하세요.

    • 업데이트 상태가 업데이트 가능이 아닌 경우 클러스터를 업데이트할 수 없습니다.
    • Select channel은 클러스터가 실행 중이거나 업데이트 중인 클러스터 버전을 나타냅니다.
  3. 업데이트할 버전을 선택하고 '저장'을 클릭하세요.

    입력 채널 Update StatusUpdate to <product-version> in progress로 변경되고 Operator 및 노드의 진행률을 확인하여 클러스터 업데이트의 진행 상황을 검토할 수 있습니다.

    참고

    예를 들어 4.10에서 4.11로 클러스터를 다음 마이너 버전으로 업데이트하는 경우, 새로운 기능에 의존하는 워크로드를 배포하기 전에 노드가 업데이트되었는지 확인하세요. 아직 업데이트되지 않은 작업자 노드가 있는 풀은 클러스터 설정 페이지에 표시됩니다.

  4. 업데이트가 완료되고 Cluster Version Operator가 사용 가능한 업데이트를 새로 고침한 후 현재 채널에서 사용 가능한 추가 업데이트가 있는지 확인합니다.

    • 업데이트가 있는 경우 더 이상 업데이트할 수 없을 때까지 현재 채널에서 업데이트를 계속 수행합니다.
    • 업데이트가 없는 경우 채널을 다음 마이너 버전에 대한 stable-* , eus-* 또는 fast-* 채널로 변경하고 해당 채널에서 원하는 버전으로 업데이트합니다.

    필요한 버전에 도달할 때까지 여러 중간 업데이트를 수행해야 할 수도 있습니다.

3.2.5. 웹 콘솔에서 조건부 업데이트 보기

조건부 업데이트를 사용하면 특정 업데이트와 관련된 위험을 보고 평가할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
  • 모든 MachineHealthCheck 리소스를 일시 중지합니다.
  • 이전에 Operator Lifecycle Manager(OLM)를 통해 설치한 모든 Operator를 대상 릴리스와 호환되는 버전으로 업데이트했습니다. Operator를 업데이트하면 클러스터 업데이트 중에 기본 OperatorHub 카탈로그가 현재 마이너 버전에서 다음 마이너 버전으로 전환될 때 유효한 업데이트 경로가 있는지 확인할 수 있습니다. 호환성을 확인하는 방법과 필요한 경우 설치된 Operator를 업데이트하는 방법에 대한 자세한 내용은 "추가 리소스" 섹션의 "설치된 Operator 업데이트"를 참조하세요.
  • 귀하의 머신 구성 풀(MCP)이 실행 중이며 일시 중지되지 않았습니다. 업데이트 프로세스 중에 일시 중지된 MCP와 연결된 노드를 건너뜁니다. 카나리아 롤아웃, EUS 업데이트 또는 제어 평면 업데이트와 같은 고급 업데이트 전략을 수행하는 경우 MCP를 일시 중지할 수 있습니다.

프로세스

  1. 웹 콘솔에서 관리클러스터 설정 페이지를 클릭하고 세부 정보 탭의 내용을 검토합니다.
  2. 업데이트 클러스터 모달의 버전 선택 드롭다운에서 알려진 문제 기능이 있는 버전 포함 기능을 활성화하여 드롭다운 목록을 조건부 업데이트로 채울 수 있습니다.

    참고

    알려진 문제가 있는 버전을 선택하면 해당 버전과 관련된 잠재적 위험에 대한 자세한 정보가 제공됩니다.

  3. 업데이트에 따른 잠재적 위험을 자세히 설명한 알림을 검토하세요.

3.2.6. 카나리아 롤아웃 업데이트 수행

일부 특정 사용 사례에서는 클러스터의 나머지 부분과 동시에 특정 노드를 업데이트하지 않도록 보다 제어된 업데이트 프로세스를 원할 수 있습니다. 이러한 사용 사례에는 다음이 포함되지만 이에 국한되지는 않습니다.

  • 업데이트 중에 사용할 수 없는 미션크리티컬 애플리케이션이 있습니다. 업데이트 후 노드의 애플리케이션을 소규모로 천천히 테스트할 수 있습니다.
  • 유지 보수 기간이 짧아서 모든 노드를 업데이트할 수 없거나 유지 보수 기간이 여러 개일 수 있습니다.

롤링 업데이트 프로세스는 일반적인 업데이트 워크플로우가 아닙니다. 대규모 클러스터를 사용하면 여러 명령을 실행해야 하는 시간이 많이 소요될 수 있습니다. 이러한 복잡성으로 인해 전체 클러스터에 영향을 줄 수 있는 오류가 발생할 수 있습니다. 롤링 업데이트를 사용할지 여부를 신중하게 고려하고 시작하기 전에 프로세스 구현을 신중하게 계획하는 것이 좋습니다.

이 주제에서 설명하는 롤링 업데이트 프로세스에는 다음이 포함됩니다.

  • 하나 이상의 사용자 지정 MCP(Machine config pool) 생성.
  • 해당 노드를 사용자 지정 MCP로 이동하기 위해 즉시 업데이트하지 않으려는 각 노드에 레이블을 지정.
  • 해당 노드에 대한 업데이트를 방지하는 사용자 지정 MCP를 일시 중지.
  • 클러스터 업데이트 수행.
  • 해당 노드에서 업데이트를 트리거하는 하나의 사용자 지정 MCP를 일시 중지 해제.
  • 해당 노드에서 애플리케이션을 테스트하여 새로 업데이트된 해당 노드에서 애플리케이션이 예상대로 작동하는지 확인.
  • 선택적으로 나머지 노드에서 사용자 지정 레이블을 소규모 배치로 제거하고 해당 노드에서 애플리케이션을 테스트.
참고

MCP를 일시 중지할 때는 신중하게 고려해야 하며, 단기간 동안만 사용해야 합니다.

카나리아 롤아웃 업데이트 프로세스를 사용하려면 카나리아 롤아웃 업데이트 수행을 참조하세요.

3.2.7. 단일 노드 OpenShift 컨테이너 플랫폼 업데이트에 관하여

콘솔이나 CLI를 사용하여 단일 노드 OpenShift Container Platform 클러스터를 업데이트하거나 업그레이드할 수 있습니다.

그러나 다음과 같은 제한 사항이 있습니다.

  • MachineHealthCheck 리소스를 일시 중지하는 전제 조건은 상태 검사를 수행할 다른 노드가 없기 때문에 필요하지 않습니다.
  • etcd 백업을 사용하여 단일 노드 OpenShift Container Platform 클러스터를 복원하는 것은 공식적으로 지원되지 않습니다. 하지만 업데이트가 실패할 경우를 대비해 etcd 백업을 수행하는 것이 좋습니다. 제어 평면이 정상이면 백업을 사용하여 클러스터를 이전 상태로 복원할 수 있습니다.
  • 단일 노드 OpenShift Container Platform 클러스터를 업데이트하려면 가동 중지 시간이 필요하며 자동 재부팅이 포함될 수 있습니다. 다운타임의 양은 다음 시나리오에서 설명한 대로 업데이트 페이로드에 따라 달라집니다.

    • 업데이트 페이로드에 재부팅이 필요한 운영 체제 업데이트가 포함되어 있는 경우 다운타임이 심각해지고 클러스터 관리와 사용자 작업 부하에 영향을 미칩니다.
    • 업데이트에 재부팅이 필요하지 않은 머신 구성 변경 사항이 포함된 경우 가동 중지 시간이 줄어들고 클러스터 관리 및 사용자 작업 부하에 미치는 영향도 줄어듭니다. 이 경우, 클러스터에 작업 부하를 재조정할 다른 노드가 없기 때문에 단일 노드 OpenShift Container Platform에서는 노드 드레이닝 단계가 건너뜁니다.
    • 업데이트 페이로드에 운영 체제 업데이트나 머신 구성 변경 사항이 포함되지 않은 경우 짧은 API 중단이 발생하지만 빠르게 해결됩니다.
중요

업데이트된 패키지의 버그와 같은 조건으로 인해 재부팅 후 단일 노드가 다시 시작되지 않을 수 있습니다. 이 경우 업데이트가 자동으로 롤백되지 않습니다.

3.3. 제어 평면만 업데이트 수행

Kubernetes의 기본 설계로 인해 마이너 버전 간의 모든 OpenShift Container Platform 업데이트는 직렬화되어야 합니다. OpenShift Container Platform <4.y>에서 <4.y+1>로 업데이트한 다음, <4.y+2>로 업데이트해야 합니다. OpenShift Container Platform <4.y>에서 <4.y+2>로 직접 업데이트할 수 없습니다. 그러나 두 개의 짝수 마이너 버전 간에 업데이트를 수행하려는 관리자는 비제어 평면 호스트를 한 번만 재부팅하여 해당 작업을 수행할 수 있습니다.

중요

이 업데이트는 이전에 EUS-to-EUS 업데이트로 알려져 있었으며, 현재는 제어 평면 전용 업데이트라고 합니다. 이러한 업데이트는 OpenShift Container Platform의 짝수 번째 마이너 버전 간에만 적용됩니다.

제어 평면만 업데이트를 시도할 때 고려해야 할 몇 가지 주의 사항이 있습니다.

  • Control Plane Only 업데이트는 모든 버전의 업데이트가 안정적인 채널에서 제공된 후에만 제공됩니다.
  • 홀수 번호의 마이너 버전으로 업데이트하는 동안 또는 업데이트한 후 다음 짝수 번호의 버전으로 업데이트하기 전에 문제가 발생하는 경우, 이러한 문제를 해결하려면 비제어 플레인 호스트가 계속 진행하기 전에 홀수 번호의 버전으로 업데이트를 완료해야 할 수 있습니다.
  • 유지 관리에 걸리는 시간을 수용하기 위해 작업자 또는 사용자 지정 풀 노드를 업데이트하여 부분적인 업데이트를 수행할 수 있습니다.
  • 머신 구성 풀의 일시 중지가 해제되고 업데이트가 완료될 때까지 OpenShift Container Platform의 <4.y+1> 및 <4.y+2>에 있는 일부 기능과 버그 수정은 사용할 수 없습니다.
  • 모든 클러스터는 풀을 일시 정지하지 않고 기존 업데이트를 위해 EUS 채널을 사용하여 업데이트할 수 있지만, 제어 평면이 아닌 MachineConfigPools 개체가 있는 클러스터만 풀을 일시 정지하여 제어 평면 전용 업데이트를 수행할 수 있습니다.

3.3.1. 제어 평면만 업데이트 수행

다음 절차에서는 모든 비 마스터 머신 구성 풀을 일시 중지하고 OpenShift Container Platform <4.y>에서 <4.y+1>로, 그리고 <4.y+2>로 업데이트를 수행한 다음, 머신 구성 풀의 일시 중지를 해제합니다. 이 절차를 따르면 전체 업데이트 기간이 줄어들고 작업자 노드가 다시 시작되는 횟수도 줄어듭니다.

사전 요구 사항

  • OpenShift Container Platform <4.y+1> 및 <4.y+2>의 릴리스 노트를 검토하십시오.
  • 계층화된 제품과 Operator Lifecycle Manager(OLM) 운영자에 대한 릴리스 노트와 제품 수명 주기를 검토하세요. 일부 제품과 OLM 운영자의 경우 Control Plane Only 업데이트 전이나 업데이트 중에 업데이트가 필요할 수 있습니다.
  • OpenShift Container Platform <4.y+1>에서 <4.y+2>로 업데이트하기 전에 더 이상 사용되지 않는 API 제거와 같은 버전별 필수 구성 요소를 잘 알고 있는지 확인하세요.
  • 클러스터에서 in-tree vSphere 볼륨을 사용하는 경우 vSphere를 7.0u3L+ 또는 8.0u2+ 버전으로 업데이트합니다.

    중요

    OpenShift Container Platform 업데이트를 시작하기 전에 vSphere를 7.0u3L+ 또는 8.0u2+로 업데이트하지 않으면 업데이트 후 클러스터에서 알려진 문제가 발생할 수 있습니다. 자세한 내용은 OpenShift 4.12에서 4.13 또는 4.13에서 4.14 vSphere CSI Storage 마이그레이션에 대한 알려진 문제를 참조하십시오.

3.3.1.1. 웹 콘솔을 사용하여 제어 평면만 업데이트

사전 요구 사항

  • 머신 구성 풀이 일시 중지 해제되었는지 확인하세요.
  • 클러스터 관리자 권한이 있는 사용자로 웹 콘솔에 액세스할 수 있습니다.

프로세스

  1. 웹 콘솔을 사용하여 모든 Operator Lifecycle Manager(OLM) Operator를 업데이트하려는 업데이트 버전과 호환되는 버전으로 업데이트합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 "설치된 운영자 업데이트"에서 확인할 수 있습니다. "추가 리소스"를 참조하세요.
  2. 모든 머신 구성 풀에 Up to date 상태가 표시되고 머신 구성 풀에 UPDATING 상태가 표시되지 않는지 확인합니다.

    모든 머신 구성 풀의 상태를 보려면 컴퓨팅MachineConfigPools를 클릭하고 업데이트 상태 열의 내용을 검토하세요.

    참고

    머신 구성 풀에 Updating 상태가 있는 경우 이 상태가 Up to date 로 변경될 때까지 기다립니다. 이 과정은 몇 분 정도 걸릴 수 있습니다.

  3. 채널을 eus-<4.y+2> 로 설정합니다.

    채널을 설정하려면 관리클러스터 설정채널을 클릭하세요. 현재 하이퍼링크된 채널을 클릭하면 채널을 편집할 수 있습니다.

  4. 마스터 풀을 제외한 모든 워커 머신 풀을 일시 중지합니다. 이 작업은 Compute 페이지의 MachineConfigPools 탭에서 수행할 수 있습니다. 일시 중지하려는 머신 구성 풀 옆에 있는 세로 타원을 선택하고 업데이트 일시 중지를 클릭합니다.
  5. 버전 <4.y+1>로 업데이트하고 저장 단계까지 완료합니다. "웹 콘솔을 사용하여 클러스터 업데이트"에서 이러한 작업을 수행하는 방법에 대한 자세한 내용을 확인할 수 있습니다. "추가 리소스"를 참조하세요.
  6. 클러스터의 마지막 완료된 버전을 확인하여 <4.y+1> 업데이트가 완료되었는지 확인하세요. 세부 정보 탭의 클러스터 설정 페이지에서 이 정보를 확인할 수 있습니다.
  7. 필요한 경우 웹 콘솔의 관리자 관점을 사용하여 OLM 운영자를 업데이트하세요. 이러한 작업을 수행하는 방법에 대한 자세한 내용은 "설치된 운영자 업데이트"에서 확인할 수 있습니다. "추가 리소스"를 참조하세요.
  8. 버전 <4.y+2>로 업데이트하고 저장 단계까지 완료합니다. "웹 콘솔을 사용하여 클러스터 업데이트"에서 이러한 작업을 수행하는 방법에 대한 자세한 내용을 확인할 수 있습니다. "추가 리소스"를 참조하세요.
  9. 클러스터의 마지막 완료된 버전을 확인하여 <4.y+2> 업데이트가 완료되었는지 확인하세요. 세부 정보 탭의 클러스터 설정 페이지에서 이 정보를 확인할 수 있습니다.
  10. 이전에 일시 중지된 모든 머신 구성 풀의 일시 중지를 해제합니다. 이 작업은 Compute 페이지의 MachineConfigPools 탭에서 수행할 수 있습니다. 일시 중지를 해제하려는 머신 구성 풀 옆에 있는 세로 타원을 선택하고 '업데이트 일시 중지 해제'를 클릭합니다.

    중요

    풀이 일시 중지되면 클러스터는 향후 마이너 버전으로 업그레이드할 수 없으며 일부 유지 관리 작업이 금지됩니다. 이로 인해 클러스터가 향후 저하될 위험이 있습니다.

  11. 이전에 일시 중지한 풀이 업데이트되었는지 확인하고 클러스터가 버전 <4.y+2>로 업데이트를 완료했는지 확인하세요.

    Compute 페이지의 MachineConfigPools 탭에서 업데이트 상태가 최신 상태인지 확인하여 풀이 업데이트되었는지 확인할 수 있습니다.

    중요

    Red Hat Enterprise Linux(RHEL) 컴퓨팅 머신이 포함된 클러스터를 업데이트하는 경우, 업데이트 프로세스 동안 해당 머신을 일시적으로 사용할 수 없게 됩니다. 클러스터가 NotReady 상태가 되면 각 RHEL 시스템에 대해 업그레이드 플레이 북을 실행하여 업데이트를 완료해야 합니다. 자세한 내용은 추가 리소스 섹션의 "RHEL 컴퓨팅 시스템을 포함하는 클러스터 업그레이드"를 참조하십시오.

    클러스터의 마지막 완료된 버전을 확인하여 클러스터가 업데이트를 완료했는지 확인할 수 있습니다. 세부 정보 탭의 클러스터 설정 페이지에서 이 정보를 확인할 수 있습니다.

3.3.1.2. CLI를 사용하여 제어 평면만 업데이트

사전 요구 사항

  • 머신 구성 풀이 일시 중지 해제되었는지 확인하세요.
  • 클러스터 관리자 권한이 있는 사용자로 OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
  • 각 업데이트 전에 OpenShift CLI( oc )를 대상 버전으로 업데이트하세요.
중요

이 사전 요구 사항을 건너뛰는 것이 좋습니다. 업데이트 전에 OpenShift CLI( oc )가 대상 버전으로 업데이트되지 않으면 예기치 않은 문제가 발생할 수 있습니다.

프로세스

  1. 웹 콘솔을 사용하여 모든 Operator Lifecycle Manager(OLM) Operator를 업데이트하려는 업데이트 버전과 호환되는 버전으로 업데이트합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 "설치된 운영자 업데이트"에서 확인할 수 있습니다. "추가 리소스"를 참조하세요.
  2. 모든 머신 구성 풀이 UPDATED 상태를 표시하는지, 어떤 머신 구성 풀도 UPDATING 상태를 표시하지 않는지 확인합니다. 모든 머신 구성 풀의 상태를 보려면 다음 명령을 실행하세요.

    $ oc get mcp
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME     CONFIG                                         	UPDATED   UPDATING
    master   rendered-master-ecbb9582781c1091e1c9f19d50cf836c       True  	  False
    worker   rendered-worker-00a3f0c68ae94e747193156b491553d5       True  	  False
    Copy to Clipboard Toggle word wrap

  3. 현재 버전은 <4.y>이고, 업데이트하려는 버전은 <4.y+2>입니다. 다음 명령을 실행하여 eus-<4.y+2> 채널로 변경하세요.

    $ oc adm upgrade channel eus-<4.y+2>
    Copy to Clipboard Toggle word wrap
    참고

    eus-<4.y+2>가 사용 가능한 채널 중 하나가 아니라는 오류 메시지가 나타나면 Red Hat이 여전히 EUS 버전 업데이트를 제공하고 있음을 나타냅니다. 이러한 출시 과정은 일반적으로 GA 날짜로부터 45~90일이 소요됩니다.

  4. 다음 명령을 실행하여 마스터 풀을 제외한 모든 작업자 머신 풀을 일시 중지합니다.

    $ oc patch mcp/worker --type merge --patch '{"spec":{"paused":true}}'
    Copy to Clipboard Toggle word wrap
    참고

    마스터 풀을 일시 중지할 수 없습니다.

  5. 다음 명령을 실행하여 최신 버전으로 업데이트하세요.

    $ oc adm upgrade --to-latest
    Copy to Clipboard Toggle word wrap

    출력 예

    Updating to latest version <4.y+1.z>
    Copy to Clipboard Toggle word wrap

  6. 다음 명령을 실행하여 클러스터 버전을 검토하여 업데이트가 완료되었는지 확인하세요.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    출력 예

    Cluster version is <4.y+1.z>
    ...
    Copy to Clipboard Toggle word wrap

  7. 다음 명령을 실행하여 버전 <4.y+2>로 업데이트하세요.

    $ oc adm upgrade --to-latest
    Copy to Clipboard Toggle word wrap
  8. 다음 명령을 실행하여 <4.y+2> 업데이트가 완료되었는지 확인하려면 클러스터 버전을 검색하세요.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    출력 예

    Cluster version is <4.y+2.z>
    ...
    Copy to Clipboard Toggle word wrap

  9. 작업자 노드를 <4.y+2>로 업데이트하려면 다음 명령을 실행하여 이전에 일시 중지된 모든 머신 구성 풀의 일시 중지를 해제하세요.

    $ oc patch mcp/worker --type merge --patch '{"spec":{"paused":false}}'
    Copy to Clipboard Toggle word wrap
    중요

    풀의 일시 중지가 해제되지 않으면 클러스터는 향후 마이너 버전으로 업데이트할 수 없으며 일부 유지 관리 작업이 금지됩니다. 이로 인해 클러스터가 향후 저하될 위험이 있습니다.

  10. 다음 명령을 실행하여 이전에 일시 중지한 풀이 업데이트되었고 버전 <4.y+2>에 대한 업데이트가 완료되었는지 확인하세요.

    $ oc get mcp
    Copy to Clipboard Toggle word wrap
    중요

    Red Hat Enterprise Linux(RHEL) 컴퓨팅 머신이 포함된 클러스터를 업데이트하는 경우, 업데이트 프로세스 동안 해당 머신을 일시적으로 사용할 수 없게 됩니다. 클러스터가 NotReady 상태가 되면 각 RHEL 시스템에 대해 업그레이드 플레이 북을 실행하여 업데이트를 완료해야 합니다. 자세한 내용은 추가 리소스 섹션의 "RHEL 컴퓨팅 시스템을 포함하는 클러스터 업그레이드"를 참조하십시오.

    출력 예

    NAME 	   CONFIG                                            UPDATED     UPDATING
    master   rendered-master-52da4d2760807cb2b96a3402179a9a4c    True  	 False
    worker   rendered-worker-4756f60eccae96fb9dcb4c392c69d497    True 	 False
    Copy to Clipboard Toggle word wrap

웹 콘솔과 CLI에 대해 언급된 제어 평면 전용 업데이트 단계 외에도 다음이 포함된 클러스터에 대해 제어 평면 전용 업데이트를 수행할 때 고려해야 할 추가 단계가 있습니다.

  • 레이어드 제품
  • OLM(Operator Lifecycle Manager)을 통해 설치된 운영자

레이어드 제품이란 무엇인가요?

계층형 상품은 여러 개의 기본 상품으로 구성된 상품을 말하며, 이 기본 상품들은 함께 사용하도록 설계되었으며, 개별 구독으로 나눌 수 없습니다. 계층화된 OpenShift Container Platform 제품의 예를 보려면 OpenShift의 계층화된 제공을 참조하세요.

OLM을 통해 설치된 계층화된 제품 클러스터와 운영자 클러스터에 대해 제어 평면 전용 업데이트를 수행할 때 다음을 완료해야 합니다.

  1. 이전에 Operator Lifecycle Manager(OLM)를 통해 설치한 모든 Operator를 대상 릴리스와 호환되는 버전으로 업데이트했습니다. Operator를 업데이트하면 클러스터 업데이트 중에 기본 OperatorHub 카탈로그가 현재 마이너 버전에서 다음 마이너 버전으로 전환될 때 유효한 업데이트 경로가 있는지 확인할 수 있습니다. 호환성을 확인하는 방법과 필요한 경우 설치된 Operator를 업데이트하는 방법에 대한 자세한 내용은 "추가 리소스" 섹션의 "설치된 Operator 업데이트"를 참조하세요.
  2. 현재 운영자 버전과 의도된 운영자 버전 간의 클러스터 버전 호환성을 확인하세요. Red Hat OpenShift Container Platform Operator Update Information Checker를 사용하면 OLM 운영자가 어떤 버전과 호환되는지 확인할 수 있습니다.

예를 들어, 'OpenShift Data Foundation'에 대해 <4.y>에서 <4.y+2>로 제어 평면 전용 업데이트를 수행하는 단계는 다음과 같습니다. 이 작업은 CLI나 웹 콘솔을 통해 수행할 수 있습니다. 원하는 인터페이스를 통해 클러스터를 업데이트하는 방법에 대한 자세한 내용은 "추가 리소스"의 " 웹 콘솔을 사용한 제어 평면 전용 업데이트 " 및 "CLI를 사용한 제어 평면 전용 업데이트"를 참조하세요.

워크플로 예시

  1. 작업자 머신 풀을 일시 중지합니다.
  2. OpenShift <4.y> → OpenShift <4.y+1> 업데이트.
  3. ODF <4.y> → ODF <4.y+1>로 업데이트합니다.
  4. OpenShift <4.y+1> → OpenShift <4.y+2>로 업데이트합니다.
  5. ODF <4.y+2>로 업데이트합니다.
  6. 작업자 머신 풀의 일시 중지를 해제합니다.
참고

ODF <4.y+2>에 대한 업데이트는 작업자 머신 풀의 일시 중지가 해제되기 전이나 후에 발생할 수 있습니다.

3.4. 카나리아 롤아웃 업데이트 수행

카나리아 업데이트는 모든 워커 노드를 동시에 업데이트하는 대신, 워커 노드 업데이트를 개별적이고 순차적인 단계로 수행하는 업데이트 전략입니다. 이 전략은 다음 시나리오에서 유용할 수 있습니다.

  • 업데이트 프로세스로 인해 애플리케이션이 실패하더라도 전체 업데이트 기간 동안 임무 수행에 중요한 애플리케이션을 계속 사용할 수 있도록 작업자 노드 업데이트의 롤아웃을 보다 제어하고 싶습니다.
  • 작업자 노드의 작은 하위 집합을 업데이트하고, 일정 기간 동안 클러스터 및 워크로드 상태를 평가한 다음 나머지 노드를 업데이트하려고 합니다.
  • 전체 클러스터를 한 번에 업데이트하기 위해 대규모 유지 관리 창을 사용할 수 없는 경우, 호스트 재부팅이 필요한 경우가 많은 작업자 노드 업데이트를 더 작은 정의된 유지 관리 창에 맞춰야 합니다.

이러한 시나리오에서는 클러스터를 업데이트할 때 특정 작업자 노드가 업데이트되지 않도록 여러 MCP(사용자 정의 머신 구성 풀)를 생성할 수 있습니다. 나머지 클러스터가 업데이트되면 적절한 시간에 배치로 해당 작업자 노드를 업데이트할 수 있습니다.

3.4.1. Canary 업데이트 전략 예시

다음 예에서는 초과 용량이 10%인 클러스터가 있고 4시간을 초과해서는 안 되는 유지 관리 기간이 있으며 작업자 노드를 드레이닝하고 재부팅하는 데 8분 이상 걸리는 카나리아 업데이트 전략을 설명합니다.

참고

이전 값은 단지 예시일 뿐입니다. 노드를 비우는 데 걸리는 시간은 작업 부하 등의 요인에 따라 달라질 수 있습니다.

3.4.1.1. 사용자 정의 머신 구성 풀 정의

작업자 노드 업데이트를 별도의 단계로 구성하려면 다음 MCP를 정의하는 것으로 시작할 수 있습니다.

  • 10개 노드가 있는 workerpool-canary
  • 30개 노드가 있는 workerpool-A
  • 30개 노드가 있는 workerpool-B
  • 30개 노드가 있는 workerpool-C
3.4.1.2. 카나리아 워커 풀 업데이트

첫 번째 유지 관리 창에서는 workerpool-A , workerpool-B , workerpool-C 에 대한 MCP를 일시 중지한 다음 클러스터 업데이트를 시작합니다. 이는 OpenShift Container Platform과 일시 중지되지 않은 Workerpool-Canary MCP의 일부인 10개 노드 위에서 실행되는 구성 요소를 업데이트합니다. 나머지 3개의 MCP는 일시 중지되었으므로 업데이트되지 않습니다.

3.4.1.3. 나머지 작업자 풀 업데이트를 진행할지 여부 결정

어떠한 이유로 workerpool-canary 업데이트의 클러스터 또는 워크로드 상태가 부정적인 영향을 미치는 경우 문제를 진단할 때까지 충분한 용량을 유지 관리하면서 해당 풀의 모든 노드를 차단하고 드레이닝합니다. 모든 항목이 예상대로 작동하면 일시 중지 해제를 결정하기 전에 클러스터 및 워크로드 상태를 평가하여 각 추가 유지 관리 기간 동안 연속으로 workerpool-A, workerpool-B, workerpool-C를 업데이트합니다.

사용자 지정 MCP를 사용하여 작업자 노드 업데이트를 관리하는 것은 유연성을 제공하지만 여러 명령을 실행해야 하는 시간이 많이 걸리는 프로세스일 수 있습니다. 이러한 복잡성으로 인해 전체 클러스터에 영향을 줄 수 있는 오류가 발생할 수 있습니다. 시작하기 전에 조직의 요구 사항을 신중하게 고려하고 프로세스 구현을 신중하게 계획하는 것이 좋습니다.

중요

머신 구성 풀을 일시 중지하면 Machine Config Operator가 연결된 노드에 구성 변경 사항을 적용할 수 없습니다. MCP를 일시 중지하면 자동으로 순환된 인증서가 kube-apiserver-to-kubelet-signer CA 인증서의 자동 CA 순환을 포함하여 관련 노드로 푸시되지 않습니다.

kube-apiserver-to-kubelet-signer CA 인증서가 만료될 때 MCP가 일시 중지되고 MCO가 인증서를 자동으로 갱신하려고 하면 MCO는 새로 순환된 인증서를 해당 노드로 푸시할 수 없습니다. 이로 인해 oc debug, oc logs,oc exec, oc attach 를 비롯한 여러 oc 명령에 오류가 발생합니다. 인증서가 순환될 때 MCP가 일시 중지되면 OpenShift Container Platform 웹 콘솔의 경고 UI에 경고가 표시됩니다.

MCP 일시 중지는 kube-apiserver-to-kubelet-signer CA 인증서 만료에 대해 신중하게 고려하여 단기간 동안만 수행해야 합니다.

참고

MCP를 다른 OpenShift Container Platform 버전으로 업데이트하지 않는 것이 좋습니다. 예를 들어 한 MCP를 4.y.10에서 4.y.11로 다른 MCP를 4.y.12로 업데이트하지 마십시오. 이 시나리오는 테스트되지 않아 정의되지 않은 클러스터 상태가 될 수 있습니다.

3.4.2. 카나리아 롤아웃 업데이트 프로세스 및 MCP 정보

OpenShift Container Platform에서 노드는 개별적으로 간주되지 않습니다. 대신 MCP(Machine config pool)로 그룹화됩니다. 기본적으로 OpenShift Container Platform 클러스터의 노드는 두 개의 MCP로 그룹화됩니다. 하나는 컨트롤 플레인 노드용이고 하나는 작업자 노드용입니다. OpenShift Container Platform 업데이트는 모든 MCP에 동시에 영향을 미칩니다.

업데이트 중에 최대 수가 지정된 경우 MCO(Machine Config Operator)는 MCP 내의 모든 노드를 지정된 maxUnavailable 노드 수까지 드레이닝하고 차단합니다. 기본적으로 maxUnavailable1 로 설정됩니다. 노드를 드레이닝하고 차단하면 노드의 모든 Pod 예약이 취소되고 노드가 예약 불가능으로 표시됩니다.

노드를 드레이닝한 후 Machine Config Daemon은 OS(운영 체제) 업데이트를 포함할 수 있는 새 머신 구성을 적용합니다. OS를 업데이트하려면 호스트가 재부팅해야 합니다.

3.4.2.1. 사용자 정의 머신 구성 풀 사용

특정 노드가 업데이트되지 않도록 사용자 지정 MCP를 생성할 수 있습니다. MCO는 일시 중지된 MCP 내에서 노드를 업데이트하지 않으므로 클러스터 업데이트를 시작하기 전에 업데이트하지 않으려는 노드가 포함된 MCP를 일시 중지할 수 있습니다.

하나 이상의 사용자 지정 MCP를 사용하면 작업자 노드를 업데이트하는 시퀀스를 더 많이 제어할 수 있습니다. 첫 번째 MCP에서 노드를 업데이트한 후 애플리케이션 호환성을 확인한 다음 나머지 노드를 새 버전으로 점진적으로 업데이트할 수 있습니다.

주의

maxUnavailable 의 기본 설정은 OpenShift Container Platform의 모든 머신 구성 풀에 대해 1 입니다. 이 값을 변경하지 않고 한 번에 하나의 컨트롤 플레인 노드를 업데이트하는 것이 좋습니다. 컨트롤 플레인 풀의 경우 이 값을 3 으로 변경하지 마십시오.

참고

컨트롤 플레인의 안정성을 보장하기 위해 컨트롤 플레인 노드에서 사용자 정의 MCP를 생성하는 것은 지원되지 않습니다. MCO(Machine Config Operator)는 컨트롤 플레인 노드에 대해 생성된 사용자 정의 MCP를 무시합니다.

3.4.2.2. 사용자 정의 머신 구성 풀을 사용할 때 고려 사항

워크로드 배포 토폴로지에 따라 생성하는 MCP 수와 각 MCP의 노드 수를 신중하게 고려해야 합니다. 예를 들어 특정 유지 관리 창에 업데이트를 조정해야 하는 경우 지정된 기간 내에 OpenShift Container Platform을 업데이트할 수 있는 노드 수를 알아야 합니다. 이 숫자는 고유한 클러스터 및 워크로드 특성에 따라 달라집니다.

또한 각 MCP 내의 사용자 지정 MCP 수와 노드 양을 결정하기 위해 클러스터에서 사용할 수 있는 추가 용량을 고려해야 합니다. 예를 들어 업데이트된 노드에서 애플리케이션이 예상대로 작동하지 않는 경우 풀의 해당 노드를 차단하고 드레이닝하여 애플리케이션 pod를 다른 노드로 이동할 수 있습니다. 그러나 나머지 MCP에서 사용 가능한 노드가 애플리케이션에 충분한 QoS(Quality of Service)를 제공할 수 있는지 확인해야 합니다.

참고

이 업데이트 프로세스를 문서화된 모든 OpenShift Container Platform 업데이트 프로세스와 함께 사용할 수 있습니다. 그러나 이 프로세스는 Ansible 플레이북을 사용하여 업데이트되는 RHEL(Red Hat Enterprise Linux) 시스템에서는 작동하지 않습니다.

3.4.3. 카나리아 롤아웃 업데이트 수행 정보

다음 단계에서는 카나리아 롤아웃 업데이트 프로세스의 상위 수준 워크플로를 간략하게 설명합니다.

  1. 작업자 풀을 기반으로 사용자 지정 MCP(머신 구성 풀)를 생성합니다.

    참고

    MCP에서 maxUnavailable 설정을 변경하여 언제든지 업데이트할 수 있는 머신 수를 지정할 수 있습니다. 기본값은 1입니다.

    주의

    maxUnavailable 의 기본 설정은 OpenShift Container Platform의 모든 머신 구성 풀에 대해 1 입니다. 이 값을 변경하지 않고 한 번에 하나의 컨트롤 플레인 노드를 업데이트하는 것이 좋습니다. 컨트롤 플레인 풀의 경우 이 값을 3 으로 변경하지 마십시오.

  2. 사용자 지정 MCP에 노드 선택기를 추가합니다. 나머지 클러스터와 동시에 업데이트하지 않으려는 각 노드에 대해 일치하는 레이블을 노드에 추가합니다. 이 레이블은 노드를 MCP에 연결합니다.

    중요

    노드에서 기본 작업자 레이블을 제거하지 마십시오. 노드에는 클러스터에서 제대로 작동하려면 역할 레이블이 있어야 합니다.

  3. 업데이트 프로세스의 일부로 업데이트하지 않으려는 MCP를 일시 중지합니다.
  4. 클러스터 업데이트를 수행합니다. 업데이트 프로세스는 컨트롤 플레인 노드를 포함하여 일시 중지되지 않은 MCP를 업데이트합니다.
  5. 업데이트된 노드에서 애플리케이션을 테스트하여 애플리케이션이 예상대로 작동하는지 확인합니다.
  6. 나머지 MCP 중 일시 중지를 해제하고 해당 풀의 노드가 업데이트가 완료될 때까지 기다린 후 해당 노드에서 애플리케이션을 테스트합니다. 모든 작업자 노드가 업데이트될 때까지 이 프로세스를 반복합니다.
  7. 선택적으로 업데이트된 노드에서 사용자 지정 레이블을 제거하고 사용자 지정 MCP를 삭제합니다.

3.4.4. 카나리아 롤아웃 업데이트를 수행할 머신 구성 풀 생성

카나리아 롤아웃 업데이트를 수행하려면 먼저 하나 이상의 사용자 지정 MCP(Machine config pool)를 생성해야 합니다.

프로세스

  1. 다음 명령을 실행하여 클러스터의 작업자 노드를 나열합니다.

    $ oc get -l 'node-role.kubernetes.io/master!=' -o 'jsonpath={range .items[*]}{.metadata.name}{"\n"}{end}' nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    ci-ln-pwnll6b-f76d1-s8t9n-worker-a-s75z4
    ci-ln-pwnll6b-f76d1-s8t9n-worker-b-dglj2
    ci-ln-pwnll6b-f76d1-s8t9n-worker-c-lldbm
    Copy to Clipboard Toggle word wrap

  2. 지연할 각 노드에 대해 다음 명령을 실행하여 노드에 사용자 정의 라벨을 추가합니다.

    $ oc label node <node_name> node-role.kubernetes.io/<custom_label>=
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $ oc label node ci-ln-0qv1yp2-f76d1-kl2tq-worker-a-j2ssz node-role.kubernetes.io/workerpool-canary=
    Copy to Clipboard Toggle word wrap

    출력 예

    node/ci-ln-gtrwm8t-f76d1-spbl7-worker-a-xk76k labeled
    Copy to Clipboard Toggle word wrap

  3. 새 MCP를 생성합니다.

    1. MCP YAML 파일을 생성합니다.

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: workerpool-canary 
      1
      
      spec:
        machineConfigSelector:
          matchExpressions:
            - {
               key: machineconfiguration.openshift.io/role,
               operator: In,
               values: [worker,workerpool-canary] 
      2
      
              }
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/workerpool-canary: "" 
      3
      Copy to Clipboard Toggle word wrap
      1
      MCP의 이름을 지정합니다.
      2
      worker 및 사용자 지정 MCP 이름을 지정합니다.
      3
      이 풀에서 원하는 노드에 추가한 사용자 지정 라벨을 지정합니다.
    2. 다음 명령을 실행하여 MachineConfigPool 오브젝트를 생성합니다.

      $ oc create -f <file_name>
      Copy to Clipboard Toggle word wrap

      출력 예

      machineconfigpool.machineconfiguration.openshift.io/workerpool-canary created
      Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 클러스터의 MCP 목록과 현재 상태를 확인합니다.

    $ oc get machineconfigpool
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME              CONFIG                                                        UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master            rendered-master-b0bb90c4921860f2a5d8a2f8137c1867              True      False      False      3              3                   3                     0                      97m
    workerpool-canary rendered-workerpool-canary-87ba3dec1ad78cb6aecebf7fbb476a36   True      False      False      1              1                   1                     0                      2m42s
    worker            rendered-worker-87ba3dec1ad78cb6aecebf7fbb476a36              True      False      False      2              2                   2                     0                      97m
    Copy to Clipboard Toggle word wrap

    새 머신 구성 풀 workerpool-canary가 생성되고 사용자 정의 레이블을 추가한 노드 수가 머신 수에 표시됩니다. 작업자 MCP 머신 수는 동일한 수만큼 줄어듭니다. 시스템 수를 업데이트하는 데 몇 분이 걸릴 수 있습니다. 이 예에서는 하나의 노드가 worker MCP에서 workerpool-canary MCP로 이동되었습니다.

3.4.5. 작업자 풀 카나리아에 대한 머신 구성 상속 관리

기존 MCP에 할당된 MachineConfig 를 상속하도록 MCP(Machine config pool) canary를 구성할 수 있습니다. 이 구성은 MCP 카나리아를 사용하여 기존 MCP의 노드를 하나씩 업데이트할 때 유용합니다.

사전 요구 사항

  • MCP를 하나 이상 생성했습니다.

프로세스

  1. 다음 두 단계에 설명된 대로 보조 MCP를 생성합니다.

    1. 다음 구성 파일을 machineConfigPool.yaml 로 저장합니다.

      machineConfigPool YAML의 예

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: worker-perf
      spec:
        machineConfigSelector:
          matchExpressions:
            - {
               key: machineconfiguration.openshift.io/role,
               operator: In,
               values: [worker,worker-perf]
              }
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/worker-perf: ""
      # ...
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 새 머신 구성 풀을 생성합니다.

      $ oc create -f machineConfigPool.yaml
      Copy to Clipboard Toggle word wrap

      출력 예

      machineconfigpool.machineconfiguration.openshift.io/worker-perf created
      Copy to Clipboard Toggle word wrap

  2. 보조 MCP에 일부 머신을 추가합니다. 다음 예제에서는 작업자 노드 worker-a,worker-b, worker-c 를 MCP worker-perf 로 레이블을 지정합니다.

    $ oc label node worker-a node-role.kubernetes.io/worker-perf=''
    Copy to Clipboard Toggle word wrap
    $ oc label node worker-b node-role.kubernetes.io/worker-perf=''
    Copy to Clipboard Toggle word wrap
    $ oc label node worker-c node-role.kubernetes.io/worker-perf=''
    Copy to Clipboard Toggle word wrap
  3. 다음 두 단계에 설명된 대로 MCP worker-perf 의 새 MachineConfig 를 생성합니다.

    1. 다음 MachineConfig 예제를 new-machineconfig.yaml 이라는 파일로 저장합니다.

      MachineConfig YAML의 예

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfig
      metadata:
        labels:
          machineconfiguration.openshift.io/role: worker-perf
        name: 06-kdump-enable-worker-perf
      spec:
        config:
          ignition:
            version: 3.2.0
          systemd:
            units:
            - enabled: true
              name: kdump.service
        kernelArguments:
          - crashkernel=512M
      # ...
      Copy to Clipboard Toggle word wrap

    2. 다음 명령을 실행하여 MachineConfig 를 적용합니다.

      $ oc create -f new-machineconfig.yaml
      Copy to Clipboard Toggle word wrap
  4. 새 카나리아 MCP를 생성하고 이전 단계에서 생성한 MCP에서 머신을 추가합니다. 다음 예제에서는 worker-perf-canary 라는 MCP를 생성하고 미리 생성한 worker-perf MCP에서 머신을 추가합니다.

    1. 다음 명령을 실행하여 카나리아 작업자 노드 worker-a 에 레이블을 지정합니다.

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-canary=''
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 카나리아 작업자 노드 worker-a 를 원래 MCP에서 제거합니다.

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-
      Copy to Clipboard Toggle word wrap
    3. 다음 파일을 machineConfigPool-Canary.yaml 로 저장합니다.

      Example machineConfigPool-Canary.yaml file

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: worker-perf-canary
      spec:
        machineConfigSelector:
          matchExpressions:
            - {
               key: machineconfiguration.openshift.io/role,
               operator: In,
               values: [worker,worker-perf,worker-perf-canary] 
      1
      
              }
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/worker-perf-canary: ""
      Copy to Clipboard Toggle word wrap

      1
      선택적 값입니다. 이 예제에는 worker-perf-canary 가 추가 값으로 포함됩니다. 이 방법으로 값을 사용하여 추가 MachineConfig 의 멤버를 구성할 수 있습니다.
    4. 다음 명령을 실행하여 새 worker-perf-canary 를 생성합니다.

      $ oc create -f machineConfigPool-Canary.yaml
      Copy to Clipboard Toggle word wrap

      출력 예

      machineconfigpool.machineconfiguration.openshift.io/worker-perf-canary created
      Copy to Clipboard Toggle word wrap

  5. MachineConfigworker-perf-canary 에 상속되었는지 확인합니다.

    1. 다음 명령을 실행하여 MCP의 성능이 저하되지 않았는지 확인합니다.

      $ oc get mcp
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME                  CONFIG                                                          UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
      master                rendered-master-2bf1379b39e22bae858ea1a3ff54b2ac                True      False      False      3              3                   3                     0                      5d16h
      worker                rendered-worker-b9576d51e030413cfab12eb5b9841f34                True      False      False      0              0                   0                     0                      5d16h
      worker-perf          rendered-worker-perf-b98a1f62485fa702c4329d17d9364f6a          True      False      False      2              2                   2                     0                      56m
      worker-perf-canary   rendered-worker-perf-canary-b98a1f62485fa702c4329d17d9364f6a   True      False      False      1              1                   1                     0                      44m
      Copy to Clipboard Toggle word wrap

    2. 시스템이 worker-perf에서 worker- perf -canary 로 상속되었는지 확인합니다.

      $ oc get nodes
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME       STATUS   ROLES                        AGE     VERSION
      ...
      worker-a   Ready    worker,worker-perf-canary   5d15h   v1.27.13+e709aa5
      worker-b   Ready    worker,worker-perf          5d15h   v1.27.13+e709aa5
      worker-c   Ready    worker,worker-perf          5d15h   v1.27.13+e709aa5
      Copy to Clipboard Toggle word wrap

    3. 다음 명령을 실행하여 worker-a 에서 kdump 서비스가 활성화되어 있는지 확인합니다.

      $ systemctl status kdump.service
      Copy to Clipboard Toggle word wrap

      출력 예

      NAME       STATUS   ROLES                        AGE     VERSION
      ...
      kdump.service - Crash recovery kernel arming
           Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; preset: disabled)
           Active: active (exited) since Tue 2024-09-03 12:44:43 UTC; 10s ago
          Process: 4151139 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
         Main PID: 4151139 (code=exited, status=0/SUCCESS)
      Copy to Clipboard Toggle word wrap

    4. 다음 명령을 실행하여 MCP가 crashkernel 을 업데이트했는지 확인합니다.

      $ cat /proc/cmdline
      Copy to Clipboard Toggle word wrap

      출력에는 업데이트된 crashekernel 값이 포함되어야 합니다. 예를 들면 다음과 같습니다.

      출력 예

      crashkernel=512M
      Copy to Clipboard Toggle word wrap

  6. 선택 사항: 업그레이드에 만족하는 경우 worker-aworker-perf 로 반환할 수 있습니다.

    1. 다음 명령을 실행하여 worker-aworker-perf 로 반환합니다.

      $ oc label node worker-a node-role.kubernetes.io/worker-perf=''
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 카나리아 MCP에서 worker-a 를 제거합니다.

      $ oc label node worker-a node-role.kubernetes.io/worker-perf-canary-
      Copy to Clipboard Toggle word wrap

3.4.6. 머신 구성 풀 일시 중지

MCP(사용자 정의 머신 구성 풀)를 생성한 후 해당 MCP를 일시 중지합니다. MCP를 일시 중지하면 MCO(Machine Config Operator)가 해당 MCP와 연결된 노드를 업데이트할 수 없습니다.

프로세스

  1. 다음 명령을 실행하여 일시 중지하려는 MCP를 패치합니다.

    $ oc patch mcp/<mcp_name> --patch '{"spec":{"paused":true}}' --type=merge
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $  oc patch mcp/workerpool-canary --patch '{"spec":{"paused":true}}' --type=merge
    Copy to Clipboard Toggle word wrap

    출력 예

    machineconfigpool.machineconfiguration.openshift.io/workerpool-canary patched
    Copy to Clipboard Toggle word wrap

3.4.7. 클러스터 업데이트 수행

MCP(머신 구성 풀)가 준비 상태가 되면 클러스터 업데이트를 수행할 수 있습니다. 클러스터에 적합한 다음 업데이트 방법 중 하나를 참조하십시오.

클러스터 업데이트가 완료되면 MCP의 일시 중지를 한 번에 하나씩 해제할 수 있습니다.

3.4.8. 머신 구성 풀 일시 중지 해제

OpenShift Container Platform 업데이트가 완료되면 MCP(사용자 정의 머신 구성 풀)를 한 번에 하나씩 일시 중지 해제합니다. MCP의 일시 중지를 해제하면 MCO(Machine Config Operator)가 해당 MCP와 연결된 노드를 업데이트할 수 있습니다.

프로세스

  1. 일시 중지 해제할 MCP를 패치합니다.

    $ oc patch mcp/<mcp_name> --patch '{"spec":{"paused":false}}' --type=merge
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $  oc patch mcp/workerpool-canary --patch '{"spec":{"paused":false}}' --type=merge
    Copy to Clipboard Toggle word wrap

    출력 예

    machineconfigpool.machineconfiguration.openshift.io/workerpool-canary patched
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 다음 옵션 중 하나를 사용하여 업데이트 진행 상황을 확인합니다.

    1. 관리클러스터 설정을 클릭하여 웹 콘솔에서 진행 상황을 확인합니다.
    2. 다음 명령을 실행하여 진행 상황을 확인합니다.

      $ oc get machineconfigpools
      Copy to Clipboard Toggle word wrap
  3. 업데이트된 노드에서 애플리케이션을 테스트하여 애플리케이션이 예상대로 작동하는지 확인합니다.
  4. 일시 중지된 다른 MCP에 대해 한 번에 하나씩 이 프로세스를 반복합니다.
참고

업데이트된 노드에서 작동하지 않는 애플리케이션 등의 오류가 발생하는 경우 풀의 노드를 차단하고 드레이닝하여 애플리케이션 pod를 다른 노드로 이동하여 애플리케이션의 서비스 품질을 유지 관리할 수 있습니다. 첫 번째 MCP는 초과 용량보다 크지 않아야 합니다.

3.4.9. 노드를 원래 머신 구성 풀로 이동

MCP(사용자 정의 머신 구성 풀)의 노드에서 애플리케이션을 업데이트하고 확인한 후 노드에 추가한 사용자 지정 레이블을 제거하여 노드를 원래 MCP로 다시 이동합니다.

중요

노드에는 클러스터에서 제대로 작동하는 역할이 있어야 합니다.

프로세스

  1. 사용자 지정 MCP의 각 노드에 대해 다음 명령을 실행하여 노드에서 사용자 지정 레이블을 제거합니다.

    $ oc label node <node_name> node-role.kubernetes.io/<custom_label>-
    Copy to Clipboard Toggle word wrap

    예를 들면 다음과 같습니다.

    $ oc label node ci-ln-0qv1yp2-f76d1-kl2tq-worker-a-j2ssz node-role.kubernetes.io/workerpool-canary-
    Copy to Clipboard Toggle word wrap

    출력 예

    node/ci-ln-0qv1yp2-f76d1-kl2tq-worker-a-j2ssz labeled
    Copy to Clipboard Toggle word wrap

    Machine Config Operator는 노드를 원래 MCP로 다시 이동하고 노드를 MCP 구성으로 조정합니다.

  2. 노드가 사용자 지정 MCP에서 제거되었는지 확인하려면 다음 명령을 실행하여 클러스터의 MCP 목록과 현재 상태를 확인합니다.

    $ oc get mcp
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                CONFIG                                                   UPDATED   UPDATING   DEGRADED   MACHINECOUNT   READYMACHINECOUNT   UPDATEDMACHINECOUNT   DEGRADEDMACHINECOUNT   AGE
    master              rendered-master-1203f157d053fd987c7cbd91e3fbc0ed         True      False      False      3              3                   3                     0                      61m
    workerpool-canary   rendered-mcp-noupdate-5ad4791166c468f3a35cd16e734c9028   True      False      False      0              0                   0                     0                      21m
    worker              rendered-worker-5ad4791166c468f3a35cd16e734c9028         True      False      False      3              3                   3                     0                      61m
    Copy to Clipboard Toggle word wrap

    노드가 사용자 지정 MCP에서 제거되고 원래 MCP로 다시 이동하면 시스템 수를 업데이트하는 데 몇 분이 걸릴 수 있습니다. 이 예에서는 하나의 노드가 제거된 workerpool-canary MCP에서 'worker'MCP로 이동되었습니다.

  3. 선택 사항: 다음 명령을 실행하여 사용자 지정 MCP를 삭제합니다.

    $ oc delete mcp <mcp_name>
    Copy to Clipboard Toggle word wrap

3.5. 연결이 끊긴 환경에서 클러스터 업데이트

환경을 준비하기 위해 추가 단계를 수행하여 인터넷에 액세스하지 않고 환경에서 클러스터를 업데이트할 수 있습니다.

연결이 끊긴 환경에서 클러스터를 업데이트하는 방법에 대한 자세한 내용은 연결이 끊긴 환경의 클러스터 업데이트 정보를 참조하십시오.

3.6. vSphere에서 실행 중인 노드에서 하드웨어 업데이트

vSphere에서 실행 중인 노드가 OpenShift Container Platform에서 지원하는 하드웨어 버전에서 실행되고 있는지 확인해야 합니다. 현재는 클러스터의 vSphere 가상 머신에서 하드웨어 버전 13 이상이 지원됩니다.

가상 하드웨어를 즉시 업데이트하거나 vCenter에 업데이트를 예약할 수 있습니다.

중요
  • OpenShift Container Platform 버전 4.19에는 VMware 가상 하드웨어 버전 15 이상이 필요합니다.
  • OpenShift 4.12를 OpenShift 4.13으로 업그레이드하기 전에 vSphere를 v7.0.2 이상으로 업데이트해야 합니다. 그렇지 않으면 OpenShift 4.12 클러스터는 업그레이드할 수 없습니다.

3.6.1. vSphere에서 가상 하드웨어 업데이트

VMware vSphere에서 VM(가상 머신)의 하드웨어를 업데이트하려면 가상 머신을 별도로 업데이트하여 클러스터의 다운타임 위험을 줄입니다.

중요

OpenShift Container Platform 4.13부터 VMware 가상 하드웨어 버전 13은 더 이상 지원되지 않습니다. 지원 기능을 사용하려면 VMware 버전 15 이상으로 업데이트해야 합니다.

3.6.1.1. vSphere에서 컨트롤 플레인 노드의 가상 하드웨어 업데이트

다운타임 위험을 줄이려면 컨트롤 플레인 노드를 직렬로 업그레이드하는 것이 좋습니다. 이렇게 하면 Kubernetes API를 계속 사용할 수 있으며 etcd는 쿼럼을 유지합니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 호스팅하는 vCenter 인스턴스에서 필요한 권한을 실행할 수 있는 클러스터 관리자 권한이 있습니다.
  • vSphere ESXi 호스트는 7.0U2 이상 버전입니다.

프로세스

  1. 클러스터의 컨트롤 플레인 노드를 나열합니다.

    $ oc get nodes -l node-role.kubernetes.io/master
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                    STATUS   ROLES    AGE   VERSION
    control-plane-node-0    Ready    master   75m   v1.32.3
    control-plane-node-1    Ready    master   75m   v1.32.3
    control-plane-node-2    Ready    master   75m   v1.32.3
    Copy to Clipboard Toggle word wrap

    컨트롤 플레인 노드의 이름을 확인합니다.

  2. 컨트롤 플레인 노드를 예약할 수 없음으로 표시합니다.

    $ oc adm cordon <control_plane_node>
    Copy to Clipboard Toggle word wrap
  3. 컨트롤 플레인 노드와 연결된 VM(가상 머신)을 종료합니다. VM을 마우스 오른쪽 버튼으로 클릭하고 PowerShut Down Guest OS를 선택하여 vSphere 클라이언트에서 이 작업을 수행합니다. 안전하게 종료되지 않을 수 있으므로 Power Off (전원 끄기)를 사용하여 VM을 종료하지 마십시오.
  4. vSphere 클라이언트에서 VM을 업데이트합니다. 자세한 내용은 VMware 문서에서 가상 머신의 호환성 업그레이드 를 참조하십시오.
  5. 컨트롤 플레인 노드와 연결된 VM의 전원을 켭니다. VM을 마우스 오른쪽 버튼으로 클릭하고 Power On을 선택하여 vSphere 클라이언트에서 이 작업을 수행합니다.
  6. 노드가 Ready로 보고될 때까지 기다립니다.

    $ oc wait --for=condition=Ready node/<control_plane_node>
    Copy to Clipboard Toggle word wrap
  7. 컨트롤 플레인 노드를 다시 예약 가능으로 표시합니다.

    $ oc adm uncordon <control_plane_node>
    Copy to Clipboard Toggle word wrap
  8. 클러스터의 각 컨트롤 플레인 노드에 대해 이 절차를 반복합니다.
3.6.1.2. vSphere에서 컴퓨팅 노드의 가상 하드웨어 업데이트

다운타임 위험을 줄이려면 컴퓨팅 노드를 직렬로 업그레이드하는 것이 좋습니다.

참고

NotReady 상태에 여러 노드가 있을 수 있는 경우 워크로드가 병렬로 여러 컴퓨팅 노드를 업그레이드할 수 있습니다. 관리자가 필요한 컴퓨팅 노드를 사용할 수 있는지 확인해야 합니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 호스팅하는 vCenter 인스턴스에서 필요한 권한을 실행할 수 있는 클러스터 관리자 권한이 있습니다.
  • vSphere ESXi 호스트는 7.0U2 이상 버전입니다.

프로세스

  1. 클러스터의 컴퓨팅 노드를 나열합니다.

    $ oc get nodes -l node-role.kubernetes.io/worker
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME              STATUS   ROLES    AGE   VERSION
    compute-node-0    Ready    worker   30m   v1.32.3
    compute-node-1    Ready    worker   30m   v1.32.3
    compute-node-2    Ready    worker   30m   v1.32.3
    Copy to Clipboard Toggle word wrap

    컴퓨팅 노드의 이름을 확인합니다.

  2. 컴퓨팅 노드를 예약 불가로 표시합니다.

    $ oc adm cordon <compute_node>
    Copy to Clipboard Toggle word wrap
  3. 컴퓨팅 노드에서 pod를 비웁니다. 이 작업을 수행하는 방법에는 여러 가지가 있습니다. 예를 들어 노드의 모든 Pod 또는 선택한 Pod를 비울 수 있습니다.

    $ oc adm drain <compute_node> [--pod-selector=<pod_selector>]
    Copy to Clipboard Toggle word wrap

    노드에서 pod를 비우기 위한 다른 옵션은 "노드에서 pod를 비우는 방법 이해" 섹션을 참조하십시오.

  4. 컴퓨팅 노드와 연결된 VM(가상 머신)을 종료합니다. VM을 마우스 오른쪽 버튼으로 클릭하고 PowerShut Down Guest OS를 선택하여 vSphere 클라이언트에서 이 작업을 수행합니다. 안전하게 종료되지 않을 수 있으므로 Power Off (전원 끄기)를 사용하여 VM을 종료하지 마십시오.
  5. vSphere 클라이언트에서 VM을 업데이트합니다. 자세한 내용은 VMware 문서에서 가상 머신의 호환성 업그레이드 를 참조하십시오.
  6. 컴퓨팅 노드와 연결된 VM의 전원을 켭니다. VM을 마우스 오른쪽 버튼으로 클릭하고 Power On을 선택하여 vSphere 클라이언트에서 이 작업을 수행합니다.
  7. 노드가 Ready로 보고될 때까지 기다립니다.

    $ oc wait --for=condition=Ready node/<compute_node>
    Copy to Clipboard Toggle word wrap
  8. 컴퓨팅 노드를 다시 예약 가능으로 표시합니다.

    $ oc adm uncordon <compute_node>
    Copy to Clipboard Toggle word wrap
  9. 클러스터의 각 컴퓨팅 노드에 대해 이 절차를 반복합니다.
3.6.1.3. vSphere에서 템플릿의 가상 하드웨어 업데이트

사전 요구 사항

  • OpenShift Container Platform 클러스터를 호스팅하는 vCenter 인스턴스에서 필요한 권한을 실행할 수 있는 클러스터 관리자 권한이 있습니다.
  • vSphere ESXi 호스트는 7.0U2 이상 버전입니다.

프로세스

  1. RHCOS 템플릿이 vSphere 템플릿으로 구성된 경우 다음 단계 전에 VMware 문서에서 템플릿을 가상 머신으로 변환합니다.

    참고

    템플릿에서 변환되면 가상 머신의 전원을 켜지 마십시오.

  2. VMware vSphere 클라이언트에서 VM(가상 머신)을 업데이트합니다. 가상 머신 수동(VMware vSphere 문서)의 호환성 업그레이드에 설명된 단계를 완료합니다.

    중요

    VM 설정을 수정한 경우 최신 가상 하드웨어로 이동한 후 해당 변경 사항이 재설정될 수 있습니다. 다음 단계로 진행하기 전에 구성된 모든 설정이 업그레이드 후에도 여전히 설정되어 있는지 확인하십시오.

  3. VM을 마우스 오른쪽 버튼으로 클릭한 다음 템플릿 → 템플릿으로 변환을 선택하여 vSphere 클라이언트의 VM을 템플릿으로 변환합니다.

    중요

    VM을 템플릿으로 변환하는 단계는 향후 vSphere 설명서 버전에서 변경될 수 있습니다.

3.6.2. vSphere에서 가상 하드웨어 업데이트 예약

가상 시스템의 전원을 켜거나 재부팅할 때 가상 하드웨어 업데이트를 수행할 수 있습니다. VMware 설명서의 가상 머신에 대한 호환성 업그레이드 예약에 따라 vCenter에서만 가상 하드웨어 업데이트를 예약할 수 있습니다.

OpenShift Container Platform 업그레이드를 수행하기 전에 업그레이드를 예약하면 OpenShift Container Platform 업그레이드 과정에서 노드가 재부팅될 때 가상 하드웨어 업데이트가 발생합니다.

다중 아키텍처, 매니페스트 목록 페이로드로 업데이트하여 단일 아키텍처 컴퓨팅 머신이 있는 클러스터로 현재 클러스터를 마이그레이션할 수 있습니다. 이를 통해 혼합 아키텍처 컴퓨팅 노드를 클러스터에 추가할 수 있습니다.

다중 아키텍처 컴퓨팅 머신 구성에 대한 자세한 내용은 "OpenShift Container Platform 클러스터에서 다중 아키텍처 컴퓨팅 머신 구성"을 참조하십시오.

단일 아키텍처 클러스터를 다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션하기 전에 Multiarch Tuning Operator를 설치하고 ClusterPodPlacementConfig 사용자 정의 리소스를 배포하는 것이 좋습니다. 자세한 내용은 Multiarch Tuning Operator를 사용하여 다중 아키텍처 클러스터에서 워크로드 관리를 참조하십시오.

중요

다중 아키텍처 페이로드에서 단일 아키텍처 페이로드로의 마이그레이션은 지원되지 않습니다. 다중 아키텍처 페이로드를 사용하여 클러스터가 전환되면 더 이상 단일 아키텍처 업데이트 페이로드를 허용할 수 없습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift Container Platform 버전은 4.13.0 이상의 최신 버전입니다.

    클러스터 버전을 업데이트하는 방법에 대한 자세한 내용은 웹 콘솔을 사용하여 클러스터 업데이트 또는 CLI를 사용하여 클러스터 업데이트를 참조하십시오.

  • 현재 클러스터의 버전과 일치하는 OpenShift CLI(oc)를 설치했습니다.
  • oc 클라이언트가 최소 정점 4.13.0으로 업데이트되었습니다.
  • OpenShift Container Platform 클러스터는 AWS, Azure, GCP, 베어 메탈 또는 IBM P/Z 플랫폼에 설치됩니다.

    클러스터 설치에 지원되는 플랫폼을 선택하는 방법에 대한 자세한 내용은 클러스터 설치 유형 선택을 참조하십시오.

프로세스

  1. 다음 명령을 실행하여 CVO(Cluster Version Operator)에서 RetrievedUpdates 조건이 True 인지 확인합니다.

    $ oc get clusterversion/version -o=jsonpath="{.status.conditions[?(.type=='RetrievedUpdates')].status}"
    Copy to Clipboard Toggle word wrap

    RetrievedUpates 조건이 False 인 경우 다음 명령을 사용하여 실패에 대한 추가 정보를 찾을 수 있습니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    클러스터 버전 조건 유형에 대한 자세한 내용은 클러스터 버전 조건 유형 이해 를 참조하십시오.

  2. RetrievedUpdates 조건이 False 인 경우 다음 명령을 사용하여 채널을 stable-<4.y > 또는 fast-<4.y >로 변경합니다.

    $ oc adm upgrade channel <channel>
    Copy to Clipboard Toggle word wrap

    채널을 설정한 후 RetrievedUpdatesTrue 인지 확인합니다.

    채널에 대한 자세한 내용은 업데이트 채널 및 릴리스 이해 를 참조하십시오.

  3. 다음 명령을 사용하여 다중 아키텍처 페이로드로 마이그레이션합니다.

    $ oc adm upgrade --to-multi-arch
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 마이그레이션을 모니터링할 수 있습니다.

    $ oc adm upgrade
    Copy to Clipboard Toggle word wrap

    출력 예

    working towards ${VERSION}: 106 of 841 done (12% complete), waiting on machine-config
    Copy to Clipboard Toggle word wrap

    중요

    클러스터가 새 상태가 되면 시스템 시작이 실패할 수 있습니다. 머신을 시작하지 못하는 경우 이를 확인하고 복구하려면 머신 상태 점검을 배포하는 것이 좋습니다. 머신 상태 점검 및 배포 방법에 대한 자세한 내용은 머신 상태 점검 정보를 참조하십시오.

    1. 선택 사항: 업데이트 상태에 대한 자세한 정보를 검색하려면 다음 명령을 실행하여 마이그레이션을 모니터링합니다.

      $ oc adm upgrade status
      Copy to Clipboard Toggle word wrap

      oc adm upgrade status 명령을 사용하는 방법에 대한 자세한 내용은 oc adm upgrade status (기술 프리뷰)를 사용하여 클러스터 업데이트 상태 수집을 참조하십시오.

클러스터에 다른 아키텍처가 있는 컴퓨팅 머신 세트를 추가하려면 마이그레이션이 완료되어야 하며 모든 클러스터 Operator가 안정적이어야 합니다.

Amazon Web Services(AWS)에서 클러스터의 제어 평면을 x86 에서 arm64 아키텍처로 마이그레이션할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 oc 에 로그인했습니다.

프로세스

  1. 다음 명령을 실행하여 컨트롤 플레인 노드의 아키텍처를 확인합니다.

    $ oc get nodes -o wide
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                          STATUS   ROLES                  AGE    VERSION   INTERNAL-IP EXTERNAL-IP   OS-IMAGE                                         KERNEL-VERSION                 CONTAINER-RUNTIME
    worker-001.example.com        Ready    worker                 100d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    worker-002.example.com        Ready    worker                 98d    v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    worker-003.example.com        Ready    worker                 98d    v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    master-001.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    master-002.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    master-003.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    Copy to Clipboard Toggle word wrap

    출력의 KERNEL-VERSION 필드에는 노드의 아키텍처가 표시됩니다.

  2. 다음 명령을 실행하여 클러스터가 멀티 페이로드를 사용하는지 확인합니다.

    $ oc adm release info -o jsonpath="{ .metadata.metadata}"
    Copy to Clipboard Toggle word wrap

    다음 출력이 표시되면 클러스터가 다중 아키텍처와 호환됩니다.

    {
     "release.openshift.io/architecture": "multi",
     "url": "https://access.redhat.com/errata/<errata_version>"
    }
    Copy to Clipboard Toggle word wrap

    클러스터에서 다중 페이로드를 사용하지 않는 경우 클러스터를 다중 아키텍처 클러스터로 마이그레이션합니다. 자세한 내용은 "다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션"을 참조하세요.

  3. 다음 명령을 실행하여 단일 아키텍처에서 다중 아키텍처로 이미지 스트림을 업데이트합니다.

    $ oc import-image <multiarch_image_stream_tag>  --from=<registry>/<project_name>/<image_name> \
    --import-mode='PreserveOriginal'
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 제어 평면 머신 세트를 구성하기 위한 arm64 호환 Amazon Machine Image(AMI)를 가져옵니다.

    $ oc get configmap/coreos-bootimages -n openshift-machine-config-operator -o jsonpath='{.data.stream}' | jq -r '.architectures.aarch64.images.aws.regions."<aws_region>".image' 
    1
    Copy to Clipboard Toggle word wrap
    1
    <aws_region>을 현재 클러스터가 설치된 AWS 지역으로 바꾸세요. 다음 명령을 실행하면 설치된 클러스터의 AWS 지역을 가져올 수 있습니다.
    $ oc get infrastructure cluster -o jsonpath='{.status.platformStatus.aws.region}'
    Copy to Clipboard Toggle word wrap

    출력 예

    ami-xxxxxxx
    Copy to Clipboard Toggle word wrap

  5. 다음 명령을 실행하여 arm64 아키텍처를 지원하도록 제어 평면 머신 세트를 업데이트합니다.

    $ oc edit controlplanemachineset.machine.openshift.io cluster -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    instanceType 필드를 arm64 아키텍처를 지원하는 유형으로 업데이트하고, ami.id 필드를 arm64 아키텍처와 호환되는 AMI로 설정합니다. 지원되는 인스턴스 유형에 대한 자세한 내용은 "64비트 ARM 인프라에서 AWS에 대해 테스트된 인스턴스 유형"을 참조하세요.

    AWS에 대한 제어 플레인 머신 세트를 구성하는 방법에 대한 자세한 내용은 "Amazon Web Services에 대한 제어 플레인 구성 옵션"을 참조하세요.

검증

  • 제어 평면 노드가 이제 arm64 아키텍처에서 실행 중인지 확인하세요.

    $ oc get nodes -o wide
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                          STATUS   ROLES                  AGE    VERSION   INTERNAL-IP EXTERNAL-IP   OS-IMAGE                                         KERNEL-VERSION                 CONTAINER-RUNTIME
    worker-001.example.com        Ready    worker                 100d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    worker-002.example.com        Ready    worker                 98d    v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    worker-003.example.com        Ready    worker                 98d    v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.x86_64    cri-o://1.30.x
    master-001.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.aarch64   cri-o://1.30.x
    master-002.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.aarch64   cri-o://1.30.x
    master-003.example.com        Ready    control-plane,master   120d   v1.30.7   10.x.x.x    <none>        Red Hat Enterprise Linux CoreOS 4xx.xx.xxxxx-0   5.x.x-xxx.x.x.el9_xx.aarch64   cri-o://1.30.x
    Copy to Clipboard Toggle word wrap

3.8. bootupd를 사용하여 RHCOS 노드에서 부트로더 업데이트

bootupd를 사용하여 RHCOS 노드의 부트로더를 업데이트하려면 RHCOS 머신에서 bootupctl update 명령을 수동으로 실행하거나 systemd 단위가 있는 머신 구성을 제공해야 합니다.

Grubby 나 다른 부트로더 도구와 달리 bootupd는 커널 인수 전달과 같은 커널 공간 구성을 관리하지 않습니다. 커널 인수를 구성하려면 노드에 커널 인수 추가를 참조하세요.

참고

bootupd를 사용하면 부트로더를 업데이트하여 BootHole 취약점으로부터 보호할 수 있습니다.

3.8.1. 부트로더 수동 업데이트

bootupctl 명령줄 도구를 사용하면 시스템 상태를 수동으로 검사하고 부트 로더를 업데이트할 수 있습니다.

  1. 시스템 상태를 검사합니다.

    # bootupctl status
    Copy to Clipboard Toggle word wrap

    x86_64출력 예

    Component EFI
      Installed: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64
      Update: At latest version
    Copy to Clipboard Toggle word wrap

    aarch64 에 대한 출력 예

    Component EFI
      Installed: grub2-efi-aa64-1:2.02-99.el8_4.1.aarch64,shim-aa64-15.4-2.el8_1.aarch64
      Update: At latest version
    Copy to Clipboard Toggle word wrap

  1. 4.4 이하 버전에 처음 설치된 OpenShift Container Platform 클러스터에는 명시적인 도입 단계가 필요합니다.

    시스템 상태가 Adoptable인 경우 채택을 수행합니다.

    # bootupctl adopt-and-update
    Copy to Clipboard Toggle word wrap

    출력 예

    Updated: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64
    Copy to Clipboard Toggle word wrap

  2. 업데이트를 사용할 수 있는 경우 다음 재부팅에 변경 사항이 적용되도록 업데이트를 적용합니다.

    # bootupctl update
    Copy to Clipboard Toggle word wrap

    출력 예

    Updated: grub2-efi-x64-1:2.04-31.el8_4.1.x86_64,shim-x64-15-8.el8_1.x86_64
    Copy to Clipboard Toggle word wrap

3.8.2. 머신 구성을 통해 부트로더를 자동으로 업데이트

bootupd 로 부트로더를 자동으로 업데이트하는 또 다른 방법은 부팅할 때마다 필요에 따라 부트로더를 업데이트하는 systemd 서비스 단위를 만드는 것입니다. 이 장치는 부팅 프로세스 중에 bootupctl update 명령을 실행하고 머신 구성을 통해 노드에 설치됩니다.

참고

이 구성은 기본적으로 활성화되어 있지 않습니다. 업데이트 작업이 예기치 않게 중단되면 노드를 부팅할 수 없게 될 수 있기 때문입니다. 이 구성을 활성화하는 경우 부트로더 업데이트가 진행되는 동안 부팅 프로세스 중에 노드가 중단되지 않도록 주의하세요. 부트로더 업데이트 작업은 일반적으로 빠르게 완료되므로 위험은 낮습니다.

  1. bootupctl-update.service systemd 유닛의 내용을 포함하여 Butane 구성 파일 99-worker-bootupctl-update.bu 를 만듭니다.

    참고

    구성 파일에서 지정하는 Butane 버전은 OpenShift Container Platform 버전과 일치해야 하며 항상 0 으로 끝나야 합니다. 예를 들어, 4.19.0입니다. Butane에 대한 자세한 내용은 “Butane 을 사용하여 머신 구성 생성”을 참조하십시오.

    출력 예

    variant: openshift
    version: 4.19.0
    metadata:
      name: 99-worker-chrony 
    1
    
      labels:
        machineconfiguration.openshift.io/role: worker 
    2
    
    systemd:
      units:
      - name: bootupctl-update.service
        enabled: true
        contents: |
          [Unit]
          Description=Bootupd automatic update
    
          [Service]
          ExecStart=/usr/bin/bootupctl update
          RemainAfterExit=yes
    
          [Install]
          WantedBy=multi-user.target
    Copy to Clipboard Toggle word wrap

    1 2
    컨트롤 플레인 노드에서 두 위치에 있는 masterworker로 대체합니다.
  2. Butane을 사용하여 노드에 전달할 구성을 포함하는 MachineConfig 개체 파일 99-worker-bootupctl-update.yaml을 생성합니다.

    $ butane 99-worker-bootupctl-update.bu -o 99-worker-bootupctl-update.yaml
    Copy to Clipboard Toggle word wrap
  3. 다음 두 가지 방법 중 하나로 설정을 적용하십시오.

    • 클러스터가 아직 실행되지 않은 경우 매니페스트 파일을 생성한 후 <installation_directory>/openshift 디렉터리에 MachineConfig 개체 파일을 추가한 다음 클러스터를 계속 작성합니다.
    • 클러스터가 이미 실행중인 경우 다음과 같은 파일을 적용합니다.

      $ oc apply -f ./99-worker-bootupctl-update.yaml
      Copy to Clipboard Toggle word wrap

4장. 클러스터 업데이트 문제 해결

4.1. 클러스터 업데이트에 대한 데이터 수집

업데이트 문제로 Red Hat 지원팀에 문의할 경우, 실패한 클러스터 업데이트 문제를 해결하는 데 사용할 수 있는 데이터를 제공하는 것이 중요합니다.

4.1.1. 지원 사례에 대한 로그 데이터 수집

로그 데이터를 포함한 클러스터에서 데이터를 수집하려면 oc adm must-gather 명령을 사용합니다. 클러스터에 대한 데이터 수집을 참조하세요.

클러스터를 업데이트할 때 oc adm upgrade 명령은 업데이트 상태에 대한 제한된 정보를 반환합니다. oc adm upgrade status 명령을 사용하면 oc adm upgrade 명령에서 상태 정보를 분리하고 제어 평면 및 작업자 노드 업데이트 상태를 포함하여 클러스터 업데이트에 대한 특정 정보를 반환할 수 있습니다.

oc adm upgrade status 명령은 읽기 전용이며 클러스터의 어떤 상태도 변경하지 않습니다.

중요

oc adm upgrade status 명령은 Technology Preview 기능에만 해당됩니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

oc adm upgrade status 명령은 버전 4.12부터 최신 지원 릴리스까지의 클러스터에 사용할 수 있습니다.

참고

oc adm upgrade status 명령을 사용하려면 클러스터가 Technology Preview가 활성화된 클러스터일 필요는 없습니다.

프로세스

  1. 다음 명령을 실행하여 OC_ENABLE_CMD_UPGRADE_STATUS 환경 변수를 true 로 설정합니다.

    $ export OC_ENABLE_CMD_UPGRADE_STATUS=true
    Copy to Clipboard Toggle word wrap
  2. oc adm upgrade status 명령을 실행합니다.

    $ oc adm upgrade status
    Copy to Clipboard Toggle word wrap

    업데이트가 성공적으로 진행됨에 대한 예시 출력

    = Control Plane =
    Assessment:      Progressing
    Target Version:  4.17.1 (from 4.17.0)
    Updating:        machine-config
    Completion:      97% (32 operators updated, 1 updating, 0 waiting)
    Duration:        54m (Est. Time Remaining: <10m)
    Operator Status: 32 Healthy, 1 Unavailable
    
    Control Plane Nodes
    NAME                                        ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-53-40.us-east-2.compute.internal    Progressing   Draining   4.17.0    +10m
    ip-10-0-30-217.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    ip-10-0-92-180.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    
    = Worker Upgrade =
    
    WORKER POOL   ASSESSMENT    COMPLETION   STATUS
    worker        Progressing   0% (0/2)     1 Available, 1 Progressing, 1 Draining
    infra         Progressing   50% (1/2)    1 Available, 1 Progressing, 1 Draining
    
    Worker Pool Nodes: Worker
    NAME                                       ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-4-159.us-east-2.compute.internal   Progressing   Draining   4.17.0    +10m
    ip-10-0-99-40.us-east-2.compute.internal   Outdated      Pending    4.17.0    ?
    
    Worker Pool Nodes: infra
    NAME                                             ASSESSMENT    PHASE      VERSION   EST    MESSAGE
    ip-10-0-4-159-infra.us-east-2.compute.internal   Progressing   Draining   4.17.0    +10m
    ip-10-0-20-162.us-east-2.compute.internal        Completed     Updated    4.17.1    -
    
    = Update Health =
    SINCE   LEVEL   IMPACT   MESSAGE
    54m4s   Info    None     Update is proceeding well
    Copy to Clipboard Toggle word wrap

4.1.3. ClusterVersion 기록 수집

클러스터 버전 운영자(CVO)는 클러스터에 대한 업데이트를 기록하며 이를 ClusterVersion 기록이라고 합니다. 항목은 클러스터 동작의 변화와 잠재적 요인 간의 상관관계를 보여줄 수 있지만, 상관관계가 인과관계를 의미하는 것은 아닙니다.

참고

초기, 마이너 및 z-stream 버전 업데이트는 ClusterVersion 기록에 저장됩니다. 하지만 ClusterVersion 기록에는 크기 제한이 있습니다. 한도에 도달하면 이전 마이너 버전의 가장 오래된 z-stream 업데이트가 한도를 수용하도록 정리됩니다.

OpenShift Container Platform 웹 콘솔이나 OpenShift CLI( oc )를 사용하여 ClusterVersion 기록을 볼 수 있습니다.

4.1.3.1. OpenShift Container Platform 웹 콘솔에서 ClusterVersion 기록 수집

OpenShift Container Platform 웹 콘솔에서 ClusterVersion 기록을 볼 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.

절차

  • 웹 콘솔에서 AdministrationCluster Settings을 클릭하고 Details 탭의 내용을 확인합니다.
4.1.3.2. OpenShift CLI( oc )를 사용하여 ClusterVersion 기록 수집

OpenShift CLI( oc )를 사용하여 ClusterVersion 기록을 볼 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

절차

  1. 다음 명령을 입력하여 클러스터 업데이트 기록을 확인하세요.

    $ oc describe clusterversions/version
    Copy to Clipboard Toggle word wrap

    출력 예

      Desired:
        Channels:
          candidate-4.13
          candidate-4.14
          fast-4.13
          fast-4.14
          stable-4.13
        Image:    quay.io/openshift-release-dev/ocp-release@sha256:a148b19231e4634196717c3597001b7d0af91bf3a887c03c444f59d9582864f4
        URL:      https://access.redhat.com/errata/RHSA-2023:6130
        Version:  4.13.19
      History:
        Completion Time:    2023-11-07T20:26:04Z
        Image:              quay.io/openshift-release-dev/ocp-release@sha256:a148b19231e4634196717c3597001b7d0af91bf3a887c03c444f59d9582864f4
        Started Time:       2023-11-07T19:11:36Z
        State:              Completed
        Verified:           true
        Version:            4.13.19
        Completion Time:    2023-10-04T18:53:29Z
        Image:              quay.io/openshift-release-dev/ocp-release@sha256:eac141144d2ecd6cf27d24efe9209358ba516da22becc5f0abc199d25a9cfcec
        Started Time:       2023-10-04T17:26:31Z
        State:              Completed
        Verified:           true
        Version:            4.13.13
        Completion Time:    2023-09-26T14:21:43Z
        Image:              quay.io/openshift-release-dev/ocp-release@sha256:371328736411972e9640a9b24a07be0af16880863e1c1ab8b013f9984b4ef727
        Started Time:       2023-09-26T14:02:33Z
        State:              Completed
        Verified:           false
        Version:            4.13.12
      Observed Generation:  4
      Version Hash:         CMLl3sLq-EA=
    Events:                 <none>
    Copy to Clipboard Toggle word wrap

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat