GKE Node Pool Upgrade TIP!!
새로운 시스템이나 서비스를 만들 때 우선 고려하는 것 중 하나가 컨테이너입니다. 요즘에는 레거시 조차도 일부 기능을 마이크로서비스 형태로 애플리케이션 현대화를 하는 것을 고려할 정도입니다.
가상 머신과 함께 컨테이너는 이제 애플리케이션 운영을 위한 기본 단위로 자리를 잡았습니다. 관리하는 컨테이너 수가 많다면 한번쯤 업그레이드 방식을 고민하게 됩니다.
이번 포스팅에서는 구글 클라우드가 제공하는 관리형 쿠버네티스(Kubernetes) 서비스인 👉 GKE(Google Kubernetes Engine)의 노드 풀 업그레이드 팁👈을 정리해 보았습니다. 🙂
😃 GKE 노드 풀을 업그레이드해야 하는 시기
GKE에서 노드 풀(Node Pool)은 컨테이너와 워크로드를 실행하는 워커 노드 그룹을 뜻합니다.
노드 풀은 언제 업그레이드를 할까요?
✔️ 먼저 노드 풀에 사용되는 쿠버네티스 버전에 사용 가능한 보안 패치가 있는 경우입니다.
✔️ 다음은 새로운 쿠버네티스 버전에 유용한 기능이 추가되었을 때 입니다.
✔️ 이외에, 기존 버전에서 발생한 문제의 버그 해결책으로 업그레이드를 생각합니다.
😃 업그레이드 전에 고려해야 할 사항은?
업그레이드는 간단한 듯 보이지만 그렇지 않은 작업 중 하나입니다. 만약의 사태에 대비해 늘 롤백을 가정하고 해야 하는 다소 민감한 작업입니다. GKE 노드 풀을 업그레이드할 때 관리자는 다운타임, 비용, 작업 시간, 워크로드의 특성 등 여러 가지 요소를 따져봐야 합니다. 하나하나 자세히 알아보겠습니다.
✔️ 노드 풀을 업그레이드하면 실행 중인 워크로드에 일시적인 중단이 발생할 수 있습니다. 관리자는 유지 보수 기간 또는 야간이나 휴일같이 사용량이 적은 기간을 잡아야 합니다. 노드 풀을 업그레이드하려면 새 노드를 생성해 기존 노드를 종료해야 합니다. 잠시이긴 하지만 노드 수가 늘기 때문에 클러스터 실행 비용이 일시적으로 증가할 수 있습니다. 관리자는 이러한 비용 증가를 고려하고 그에 따라 업그레이드를 계획하는 것이 좋습니다.
✔️ 업그레이드를 완료하는 데 필요한 시간은 노드 풀의 크기, 워크로드의 복잡성, 현재 버전과 올리려는 쿠버네티스 버전 등 여러 가지 이유로 다를 수 있습니다. 관리자는 업그레이드 프로세스에 충분한 시간을 할당하고 진행 상황을 모니터링해야 합니다.
✔️ 다음으로 관리자는 업그레이드 계획을 세울 때 워크로드의 특성도 잘 살펴야 합니다. 가령 상태 저장(Stateful) 워크로드는 데이터 일관성 및 가용성을 유지해야 하므로 업그레이드 프로세스 중에 보다 신중한 계획과 실행이 필요합니다. 상대적으로 상태 비저장(Stateless) 워크로드는 업그레이드 중에 관리하기가 더 쉽습니다.
✔️ 이외에도 대상 쿠버네티스 버전과 업그레이드된 노드 풀이 CPU, 메모리 및 스토리지와 같은 워크로드의 리소스 요구 사항을 충족하는지, 그리고 업그레이드하려는 버전의 쿠버네티스 버전의 릴리스 노트를 검토하고 중요한 변경 사항, 알려진 문제 또는 호환성 문제도 확인해야 합니다.
✔️ 마지막으로 롤백 계획도 잘 세워야 합니다. 업그레이드를 롤백해야 할 경우를 대비하여 클러스터의 데이터와 구성을 백업해야 합니다.
😃 Surge or Blue-green 업그레이드
GKE 노드 풀 업그레이드 계획에 따라 서지(Surge) 또는 블루 그린(Blue-green) 업그레이드 방식을 선택할 수 있습니다. 서지 업그레이드와 블루그린 업그레이드는 모두 실행 중인 워크로드에 미치는 영향을 최소화하면서 GKE 노드 풀을 업데이트하는 방법입니다. 두 상식은 각각 잘 맞는 시나리오가 있습니다. 즉, 장점과 단점이 분명하다는 것이죠. 각각의 장점과 단점을 짚어 보겠습니다.
😃 Surge 업그레이드
서지 업그레이드는 롤링 업데이트라고도 합니다. 이 방식은 노드 풀의 노드를 하나씩 점진적으로 업그레이드하는 것입니다. 서지 업그레이드 중에는 업데이트된 버전이 포함된 새 노드가 생성되고, 이전 노드에서 실행 중인 워크로드가 새 노드로 조정된 다음 이전 노드가 종료됩니다. 이 프로세스는 노드 풀의 모든 노드가 업그레이드될 때까지 반복됩니다.
👉 서지 업그레이드의 장점
✔️ 점진적으로 작업이 이루어지므로 문제가 발생할 위험이 상대적으로 적다는 것입니다.
✔️ 블루그린 업그레이드에 비해 추가 인프라와 리소스가 덜 필요한 것도 장점입니다.
다운타임을 어느 정도 확보할 수 있다면 이 방식이 잘 맞을 것입니다.
👉 서지 업그레이드의 단점
✔️ 노드 단위로 업그레이드가 진행되어 작업 시간이 길 수 있다는 것입니다.
참고로 서지 업그레이드의 단점은 설정을 통해 어느 정도 만회할 수 있습니다. 다음 예와 같이 작업 시간과 비용 간의 균형점을 설정으로 찾을 수 있습니다.
😃 Blue-green 업그레이드
이제 블루 그린 업그레이드의 장단점을 알아볼까요? 블루 그린 업그레이드는 현재 노드 풀(‘청색’ 노드 풀)이 워크로드를 계속 실행하는 동안 업데이트된 버전으로 별도의 노드 풀(‘녹색’ 노드 풀)을 생성하는 방식입니다. 녹색 노드 풀이 준비되고 필요한 모든 테스트를 통과하면 워크로드가 녹색 노드 풀로 전환되고 파란색 노드 풀은 폐기됩니다.
👉 블루 그린 업그레이드의 장점
✔️ 뭐니 해도 다운타임 최소화입니다. 워크로드가 업데이트된 노드 풀로 거의 즉시 전환되므로 다운타임이 거의 없습니다. 또한, 워크로드를 전환하기 전에 업데이트된 버전을 철저히 테스트하고 검증할 수 있습니다.
✔️ 롤백 프로세스가 더 빨라서 문제가 발생하면 파란색 노드 풀로 다시 전환하는 것도 장점으로 빼놓을 수 없습니다.
👉 블루 그린 업그레이드의 단점
업그레이드 프로세스 중에 두 개의 노드 풀을 동시에 유지 관리해야 하므로 추가 인프라와 리소스가 필요합니다. 그리고 서지 업그레이드에 비해 설정 및 관리가 더 복잡합니다.
😃 Tip! 워크로드에 맞는 방식 고르기
정리하자면 다운타임을 최소화하는 것이 중요하고 추가 인프라를 관리할 리소스가 있다면 <블루그린 업그레이드>가 더 나은 선택일 수 있습니다.
다운타임을 어느 정도 감내할 수 있고 더 간단하고 리소스 효율적인 접근 방식을 선호한다면 <서지 업그레이드>가 더 적합할 수 있습니다.
이상으로 『 Google Kubernetes Engine Node Pool Upgrade TIP! 』 에 대해 알아보았습니다. 😎🤗🤗
더 자세한 내용은 메가존소프트로 문의 바랍니다. 👉 메가존소프트 문의 바로가기