11장. 카나리아 롤아웃 업데이트 수행
카나리아 업데이트는 작업자 노드 업데이트가 모든 작업자 노드를 동시에 업데이트하지 않고 순차적 단계로 수행되는 업데이트 전략입니다. 이 전략은 다음 시나리오에서 유용할 수 있습니다.
- 업데이트 프로세스로 인해 애플리케이션이 실패하더라도 전체 업데이트 중에 미션 크리티컬 애플리케이션을 계속 사용할 수 있도록 작업자 노드 업데이트 롤아웃을 보다 제어해야 합니다.
- 작업자 노드의 작은 하위 집합을 업데이트하고 일정 기간 동안 클러스터 및 워크로드 상태를 평가한 다음 나머지 노드를 업데이트하려고 합니다.
- 호스트 재부팅이 필요한 작업자 노드 업데이트에 맞게 한 번에 전체 클러스터를 업데이트할 수 없는 경우 정의된 더 작은 유지 관리 창으로 전환해야 합니다.
이러한 시나리오에서는 클러스터를 업데이트할 때 특정 작업자 노드가 업데이트되지 않도록 여러 MCP(사용자 정의 머신 구성 풀)를 생성할 수 있습니다. 나머지 클러스터가 업데이트되면 적절한 시간에 배치로 해당 작업자 노드를 업데이트할 수 있습니다.
11.1. Canary 업데이트 전략의 예
다음 예에서는 초과 용량이 10%인 클러스터가 있고 4시간을 초과해서는 안 되는 유지 관리 기간이 있으며 작업자 노드를 드레이닝하고 재부팅하는 데 8분 이상 걸리는 카나리아 업데이트 전략을 설명합니다.
이전 값은 예제일 뿐입니다. 노드를 드레이닝하는 데 걸리는 시간은 워크로드와 같은 요인에 따라 다를 수 있습니다.
사용자 정의 머신 구성 풀 정의
작업자 노드 업데이트를 별도의 단계로 구성하기 위해 다음 MCP를 정의하여 시작할 수 있습니다.
- workerpool-canary 10 nodes
- 30개의 노드가 있는 workerpool-A
- 30개의 노드가 있는 workerpool-B
- 30개의 노드가 있는 workerpool-C
카나리아 작업자 풀 업데이트
첫 번째 유지 관리 기간 동안 workerpool-A,workerpool-B, workerpool-C 에 대한 MCP를 일시 중지한 다음 클러스터 업데이트를 시작합니다. 이렇게 하면 OpenShift Container Platform에서 실행되는 구성 요소와 일시 중지되지 않은 workerpool-canary MCP의 일부인 10개의 노드가 업데이트되었습니다. 나머지 3개의 MCP는 일시 중지되었으므로 업데이트되지 않습니다.
나머지 작업자 풀 업데이트를 진행할지 여부 확인
어떤 이유로 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 인증서가 만료되고 MCO가 인증서를 자동으로 갱신하려고 할 때 MCP가 일시 중지되면 MCO는 새로 순환된 인증서를 해당 노드로 푸시할 수 없습니다. 이로 인해 oc debug
,
,oc
logsoc 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로 업데이트하지 마십시오. 이 시나리오는 테스트되지 않아 정의되지 않은 클러스터 상태가 될 수 있습니다.