5.4. 클러스터 업데이트 모범 사례
OpenShift Container Platform은 업데이트 중에 워크로드 중단을 최소화하는 강력한 업데이트 환경을 제공합니다. 업데이트 요청 시 클러스터가 업그레이드 가능 상태가 되지 않으면 업데이트가 시작되지 않습니다.
이 설계에서는 업데이트를 시작하기 전에 몇 가지 주요 조건을 적용하지만 클러스터 업데이트가 성공할 가능성을 높이기 위해 수행할 수 있는 여러 작업이 있습니다.
5.4.1. OpenShift Update Service에서 권장 버전 선택
OSUS(OpenShift Update Service)는 클러스터의 구독 채널과 같은 클러스터 특성을 기반으로 업데이트 권장 사항을 제공합니다. Cluster Version Operator는 이러한 권장 사항을 권장 또는 조건부 업데이트로 저장합니다. OSUS에서 권장하지 않는 버전을 업데이트할 수는 있지만 권장 업데이트 경로에 따라 사용자가 알려진 문제가 발생하거나 의도하지 않은 결과가 발생하지 않도록 보호합니다.
성공적인 업데이트를 위해 OSUS에서 권장하는 업데이트 대상만 선택합니다.
5.4.2. 클러스터의 모든 심각한 경고 해결
중요한 경고는 항상 가능한 한 빨리 처리해야 하지만 클러스터 업데이트를 시작하기 전에 이러한 경고를 해결하고 문제를 해결하는 것이 특히 중요합니다. 업데이트를 시작하기 전에 중요한 경고를 해결하지 못하면 클러스터에 문제가 발생할 수 있습니다.
웹 콘솔의 관리자 화면에서 모니터링
5.4.3. 클러스터가 Upgradable 상태인지 확인합니다.
하나 이상의 Operator에서 Upgradeable
조건을 1시간 이상 True
로 보고하지 않으면 클러스터에서 ClusterNotUpgradeable
경고 경고가 트리거됩니다. 대부분의 경우 이 경고는 패치 업데이트를 차단하지 않지만 이 경고를 해결하고 모든 Operator에서 Upgradeable
을 True
로 보고할 때까지 마이너 버전 업데이트를 수행할 수 없습니다.
Upgradeable
조건에 대한 자세한 내용은 추가 리소스 섹션의 "클러스터 Operator 상태 유형 이해"를 참조하십시오.
5.4.4. 충분한 예비 노드를 사용할 수 있는지 확인
특히 클러스터 업데이트를 시작할 때 예비 노드 용량이 거의 없는 클러스터를 실행하지 않아야 합니다. 실행 중이 아니며 사용 불가능한 노드는 클러스터 워크로드에 대한 중단을 최소화하여 클러스터 업데이트를 수행할 수 있는 기능을 제한할 수 있습니다.
클러스터의 maxUnavailable
사양의 구성된 값에 따라 사용 가능한 노드가 있는 경우 클러스터에서 머신 구성 변경 사항을 노드에 적용하지 못할 수 있습니다. 또한 컴퓨팅 노드에 여유 용량이 충분하지 않으면 첫 번째 노드가 오프라인 상태로 전환되는 동안 워크로드를 일시적으로 다른 노드로 전환하지 못할 수 있습니다.
노드 업데이트 가능성을 늘리려면 각 작업자 풀에 사용 가능한 노드와 컴퓨팅 노드에 충분한 예비 용량이 있는지 확인합니다.
maxUnavailable
의 기본 설정은 OpenShift Container Platform의 모든 머신 구성 풀에 대해 1
입니다. 이 값을 변경하지 않고 한 번에 하나의 컨트롤 플레인 노드를 업데이트하는 것이 좋습니다. 컨트롤 플레인 풀의 경우 이 값을 3
으로 변경하지 마십시오.
5.4.5. 클러스터의 PodDisruptionBudget이 올바르게 구성되었는지 확인합니다.
PodDisruptionBudget
오브젝트를 사용하여 언제든지 사용할 수 있어야 하는 최소 Pod 복제본 수 또는 백분율을 정의할 수 있습니다. 이 구성은 클러스터 업데이트와 같은 유지 관리 작업 중에 워크로드가 중단되지 않도록 보호합니다.
그러나 클러스터 업데이트 중에 노드가 드레이닝 및 업데이트되지 않도록 지정된 토폴로지에 대해 PodDisruptionBudget
을 구성할 수 있습니다.
클러스터 업데이트를 계획할 때 다음 요인에 대해 PodDisruptionBudget
오브젝트의 구성을 확인합니다.
-
고가용성 워크로드의 경우
PodDisruptionBudget
에서 금지하지 않고 일시적으로 오프라인으로 전환할 수 있는 복제본이 있는지 확인합니다. -
고가용성이 없는 워크로드의 경우
PodDisruptionBudget
에 의해 보호되지 않았거나 주기적으로 다시 시작 또는 보장된 최종 종료와 같이 이러한 워크로드를 드레이닝하기 위한 몇 가지 대체 메커니즘이 있는지 확인하십시오.
추가 리소스