AKS(Azure Kubernetes Service)는 Kubernetes 의 배포, 관리 및 작업을 간소화하는 관리되는 컨테이너 오케스트레이션 서비스입니다.
Azure를 사용하는 경우 안정성은 공유 책임입니다. Microsoft는 복원력 및 복구를 지원하는 다양한 기능을 제공합니다. 이러한 기능이 사용하는 모든 서비스 내에서 작동하는 방식을 이해하고 비즈니스 목표 및 가동 시간 목표를 충족하는 데 필요한 기능을 선택할 책임이 있습니다.
이 문서에서는 임시 오류, 가용성 영역 중단 및 지역 중단을 포함하여 다양한 잠재적인 중단 및 문제에 대해 AKS(Azure Kubernetes Service)를 복원할 수 있도록 하는 방법을 설명합니다. 또한 백업을 사용하여 다른 유형의 문제를 복구하는 방법을 설명하고 AKS(Azure Kubernetes Service) SLA(서비스 수준 계약)에 대한 몇 가지 주요 정보를 강조 표시합니다.
프로덕션 배포 권장 사항
AKS에서 신뢰할 수 있는 프로덕션 워크로드를 배포하는 방법에 대한 권장 사항은 다음 문서를 참조하세요.
안정성 아키텍처 개요
AKS 클러스터를 만들 때 Azure 플랫폼은 자동으로 다음을 만들고 구성합니다.
API 서버, etcd, 스케줄러 및 워크로드 관리를 위해 필요한 기타 포드들이 포함된 컨트롤 플레인입니다.
구독에 포함되어 있는 시스템 노드 풀은 kube-system 네임스페이스에서 실행되는 추가 기능과 기타 Pod를 호스트합니다.
이 초기 노드 풀 설정이 완료되면 사용자 워크로드에 대한 노드 풀을 추가하거나 삭제 할 수 있습니다. AKS는 안정성을 위해 노드 풀을 관리하지 않으며 워크로드가 인프라 오류에 복원력이 있는지 확인해야 합니다.
복원력은 사용자와 Microsoft 간의 공동 책임입니다. 컴퓨팅 서비스로서 AKS는 클러스터 안정성의 일부 측면을 관리하지만 다른 측면을 관리할 책임이 있습니다.
Microsoft는 AKS의 컨트롤 플레인 및 기타 관리되는 구성 요소를 관리합니다.
다음을 수행해야 합니다.
서비스에 연결하는 노드 풀 및 부하 분산 장치를 포함한 구성 요소를 안정성 요구 사항을 충족하도록 구성하는 방법을 정의합니다. 구성 요소를 정의한 후 Microsoft는 사용자를 대신하여 구성 요소를 배포하고 관리합니다.
스토리지 및 데이터베이스를 포함하여 AKS 클러스터 외부의 모든 구성 요소를 관리합니다. 이러한 구성 요소가 안정성 요구 사항을 충족하는지 확인합니다. 워크로드를 배포할 때 해당 서비스에 대한 모범 사례를 따라 다른 Azure 구성 요소도 복원력에 맞게 구성되었는지 확인합니다.
일시적인 오류에 대한 복원력
일시적인 오류는 구성 요소에서 짧고 간헐적인 오류입니다. 클라우드와 같은 분산 환경에서 자주 발생하며 작업의 일반적인 부분입니다. 일시적인 오류는 짧은 시간 후에 스스로 수정됩니다. 일반적으로 영향을 받은 요청을 다시 시도하여 애플리케이션이 임시 오류를 처리할 수 있는 것이 중요합니다.
모든 클라우드 호스팅 애플리케이션은 클라우드 호스팅 API, 데이터베이스 및 기타 구성 요소와 통신할 때 Azure 임시 오류 처리 지침을 따라야 합니다. 자세한 내용은 임시 오류 처리를 위한 권장 사항을 참조하세요.
AKS를 사용하는 경우 애플리케이션 크래시, Pod 크기 조정 및 분산 작업, 노드 패치, 하드웨어 또는 네트워킹 문제와 같은 임시 인프라 오류 등 다양한 이유로 인해 일시적인 오류가 발생할 수 있습니다.
모든 일시적인 오류를 제거하는 것은 불가능하므로 AKS 호스팅 애플리케이션에 액세스하는 클라이언트는 실패한 요청을 다시 시도하고 다른 일시적인 오류 처리 권장 사항을 따르도록 준비해야 합니다. 일시적인 오류의 가능성을 최소화하고 배포에서 Kubernetes 및 Azure 모범 사례를 따라 발생할 수 있는 가동 중지 시간을 방지하거나 완화할 수 있습니다.
- Pod YAML에서 Pod 중단 예산(PDB)을 설정하여 특정 시간에
Ready상태에 있어야 하는 Pod 수를 지정합니다. PDB를 설정하면 AKS는 노드를 코돈하고 드레이닝하는 작업을 실행할 때 복제본의 최소 가용성을 보장합니다. 업그레이드와 같은 프로세스 중에 PDB를 충족할 수 없는 경우 Pod가 계속 작동하며 작업이 실패할 수 있습니다. 자세한 내용은 PDB를 참조하세요. - 지정된 시간에 사용할 수 없게 될 수 있는 최대 복제본 수를 정의하는 데 사용합니다
maxUnavailable. 예를 들어 롤링 재시작을 수행할 때, AKS는 한 번에 변동되는 Pod 수가maxUnavailable개를 넘지 않도록 보장합니다. 자세한 내용은 maxUnavailable을 참조하세요. - 배포 모범 사례를 따릅니다. 애플리케이션 문제로 인해 Pod 복제본이 실패할 수도 있습니다. 자세한 내용은 AKS 클러스터 안정성 에 대한 배포 수준 모범 사례를 참조하세요.
비고
AKS가 모범 사례를 준수하기 위해 배포의 유효성을 검사하고 차단 또는 경고 알림을 제공하려는 경우 배포 보호 기능을 사용할 수 있습니다. 배포 보호 기능은 코드가 클러스터에 배포되기 전에 제품 모범 사례를 적용하는 데 도움이 되는 관리되는 제품입니다.
가용성 영역 오류에 대한 복원력
가용성 영역은 Azure 지역 내에서 물리적으로 별도의 데이터 센터 그룹입니다. 한 영역이 실패하면 서비스가 나머지 영역 중 하나로 전환될 수 있습니다.
AKS 클러스터를 가용성 영역을 지원하는 지역에 배포하는 경우 구성 요소에 따라 다른 유형의 구성이 필요합니다.
AKS 컨트롤 플레인은 기본적으로 영역 복원력이 있습니다. 영역이 실패하면 제어 평면에 복원력을 얻기 위한 구성이나 관리가 필요하지 않습니다. 그러나 영역이 장애를 겪을 때 클러스터를 유지하기에는 컨트롤 플레인 복원력만으로는 충분하지 않습니다. 시스템 노드 풀 및 배포하는 모든 사용자 노드 풀의 경우 가용성 영역 지원을 사용하도록 설정하여 워크로드가 가용성 영역 오류에 탄력적이 되도록 해야 합니다.
요구 사항
지역 지원: 가용성 영역을 지원하는 모든 지역에 영역 복원력 있는 AKS 클러스터를 배포할 수 있습니다.
고려 사항
한 지역에서 AKS 프로덕션 워크로드의 안정성과 복원력을 향상하려면 다음 구성을 수행하여 영역 중복성을 위해 AKS를 구성해야 합니다.
여러 복제본을 배포합니다. Kubernetes는 노드 레이블에 따라 노드 간에 Pod를 분산합니다. 여러 영역에 워크로드를 분산하려면 Pod의 여러 복제본을 배포해야 합니다. 예를 들어 3개의 영역으로 노드 풀을 구성하지만 Pod의 단일 복제본만 배포하는 경우 배포는 영역 복원력이 없습니다.
자동 크기 조정을 사용하도록 설정합니다. Kubernetes 노드 풀은 수동 및 자동 크기 조정 옵션을 제공합니다. 수동 크기 조정을 사용하면 필요에 따라 노드를 추가하거나 삭제할 수 있으며 보류 중인 Pod는 노드 풀을 확장할 때까지 대기합니다. AKS 관리형 크기 조정은 클러스터 자동 크기 조정기 또는 NAP(노드 자동 프로비전)를 사용합니다. AKS는 구독의 SKU 할당량 및 용량 내에서 Pod의 요구 사항에 따라 노드 풀을 확장 또는 축소합니다. 이 방법을 사용하면 가용성 영역의 사용 가능한 노드에서 Pod가 예약되도록 할 수 있습니다.
Pod 토폴로지 제약 조건을 설정합니다. Pod 토폴로지 분산 제약 조건을 사용하여 Pod가 다른 노드 또는 영역에 분산되는 방식을 제어합니다. 제약 조건은 HA, 복원력 및 효율적인 리소스 사용을 달성하는 데 도움이 됩니다. Pod를 영역 간에 엄격하게 분산할 것을 선호하는 경우, Pod가 대기 상태로 들어가도록 강제 적용하여 영역 간의 Pod 균형을 유지할 수 있도록 제약 조건을 설정할 수 있습니다. 자세한 내용은 Pod 토폴로지 스프레드 제약 조건을 참조하세요.
영역 탄력 네트워크를 구성합니다. Pod가 외부 트래픽을 제공하는 경우 Azure Application Gateway, Azure Load Balancer 또는 AzureFront Door와 같은 서비스를 사용하여 클러스터 네트워크 아키텍처를 구성합니다.
종속성이 지리적 영역 내에서 안정적으로 유지되는지 확인합니다. 대부분의 AKS 애플리케이션은 스토리지, 보안 또는 네트워킹에 다른 서비스를 사용합니다. 해당 서비스에 대한 영역 복원력 권장 사항을 검토해야 합니다.
비용
AKS에서 가용성 영역 지원을 사용하도록 설정하는 데 추가 요금은 없습니다. 가용성 영역에 배포하는 VM(가상 머신) 및 기타 리소스에 대한 비용을 지불합니다.
가용성 영역 지원 구성
- 가용성 영역이 지원되는 새 AKS 클러스터를 만듭니 다. 가용성 영역 지원을 구성하려면 가용성 영역을 사용하는 AKS(Azure Kubernetes Service) 클러스터 만들기를 참조하세요.
- 이주: 클러스터를 만든 후에는 가용성 영역 지원을 사용하도록 설정할 수 없습니다. 대신 가용성 영역 지원이 사용하도록 설정된 새 클러스터를 만들고 기존 클러스터를 삭제해야 합니다.
- 가용성 영역 지원을 사용하지 않도록 설정합니다. 클러스터를 만든 후에는 가용성 영역 지원을 사용하지 않도록 설정할 수 없습니다. 대신 가용성 영역 지원이 비활성화된 새 클러스터를 만들고 기존 클러스터를 삭제해야 합니다.
모든 영역이 정상인 경우의 동작
이 섹션에서는 AKS 클러스터가 가용성 영역 지원을 위해 구성되고 모든 가용성 영역이 작동할 때 예상되는 사항에 대해 설명합니다.
영역 간의 트래픽 라우팅: 가용성 영역을 사용하는 AKS 클러스터를 배포하는 경우 네트워킹 구성 요소도 영역 복원력이 있는지 확인해야 합니다. 사용하는 부하 분산 장치 및 기타 네트워킹 구성 요소에 따라 트래픽을 올바른 영역의 올바른 노드로 라우팅하고 영역 중단에 응답하도록 구성 요소를 명시적으로 구성해야 할 수 있습니다. 자세한 내용은 AKS에 대한 영역 복원력 고려 사항을 참조하세요.
영역 간 데이터 복제: 상태 비저장 워크로드를 실행하는 경우 Azure 데이터베이스, AzureCache for Redis 또는 Azure Storage 와 같은 관리되는 Azure 서비스를 사용하여 애플리케이션 데이터를 저장해야 합니다. 이러한 서비스를 사용하여 데이터 손실의 위험을 감수하거나 사용자 환경에 영향을 주지 않고 노드 및 영역 간에 트래픽을 이동할 수 있도록 할 수 있습니다. Kubernetes Deployments, Services 및 Health Probes를 사용하면 상태 비저장 Pod를 관리하고 여러 영역에 걸쳐 균등하게 분산할 수 있습니다.
Azure 디스크를 사용하여 클러스터 내에 상태를 저장해야 하는 경우 Azure 영역 중복 스토리지를 사용하여 데이터가 여러 가용성 영역에서 복제되도록 합니다. 자세한 내용은 애플리케이션 요구 사항에 따라 올바른 디스크 유형 선택을 참조하세요.
영역 오류 중 동작
이 섹션에서는 AKS 클러스터가 가용성 영역 지원으로 구성된 동안 가용성 영역 중단이 발생할 때 예상되는 사항에 대해 설명합니다.
검색 및 응답: 영역 중단이 발생하면 컨트롤 플레인이 자동으로 장애 조치를 수행합니다. 노드 풀이 가용성 영역을 사용하고 영역 복원력 모범 사례를 따르는 경우 AKS가 작동하는 영역에서 노드 및 복제본을 불러올 것으로 예상할 수 있습니다. AKS는 클러스터 자동 크기 조정기 또는 NAP와 같은 관리형 솔루션을 사용하는 경우 이 작업을 자동으로 수행합니다. 자동 크기 조정이 없으면 노드 및 복제본이 보류 중 상태로 유지되고 수동 개입이 노드 풀을 확장할 때까지 기다립니다.
AKS는 또한 정상 영역 전체에서 Pod의 균형을 리밸런싱하려고 시도합니다. 영역 다운 시나리오에서 노드 풀의 크기를 수동으로 조정하도록 선택하는 경우 정상 영역에서 사용할 수 있는 노드가 없는 경우 Pod가 보류 중 상태로 유지될 수 있습니다. 나머지 영역에서 규모 확장은 사용하는 VM SKU에 대한 할당량 및 용량의 가용성도 적용됩니다.
알림: 영역이 다운된 경우 Microsoft는 자동으로 알리지 않습니다. 그러나 Azure Resource Health 를 사용하여 개별 리소스의 상태를 모니터링하고 Resource Health 경고를 설정하여 문제를 알릴 수 있습니다. 또한 Azure Service Health를 사용하여 영역 오류를 포함하여 서비스의 전반적인 상태를 파악할 수 있으며, 문제를 알리도록 Service Health 경고를 설정할 수 있습니다.
노드 또는 Pod 상태 메트릭을 사용하여 노드 및 Pod의 상태를 모니터링할 수도 있습니다.
활성 요청: 활성 요청은 중단이 발생할 수 있습니다. 일부 요청은 실패할 수 있으며 워크로드가 다른 영역으로 장애 조치되는 동안 대기 시간이 증가할 수 있습니다.
예상 데이터 손실: Azure 디스크를 사용하여 클러스터 내에 상태를 저장하고 영역 중복 스토리지를 사용하는 경우 영역 오류로 인해 데이터가 손실되지 않습니다.
예상 가동 중지 시간: 클러스터 및 Pod에 대한 영역 복원력을 올바르게 구성하는 경우 영역 오류로 인해 AKS 워크로드에 가동 중지 시간이 발생하지 않습니다.
트래픽 경로 변경: 부하 분산 장치는 정상 노드에서 실행되는 Pod에 들어오는 새 요청의 경로를 다시 지정합니다.
자세한 내용은 AKS에 대한 영역 복원력 고려 사항을 참조하세요.
영역 복구
가용성 영역이 복구되면 장애 복구 동작은 구성 요소에 따라 달라집니다.
컨트롤 플레인: AKS는 모든 가용성 영역에서 컨트롤 플레인 작업을 자동으로 복원합니다. 수동 개입이 필요하지 않습니다.
노드 풀 및 노드: 장애 복구 직후 노드는 이전에 정상 영역에 남아 있으며 복구된 영역에서 복원되지 않습니다. 그러나 노드 풀을 스케일 아웃할 때와 같이 다음에 노드 크기 조정 작업을 수행할 때 노드 풀은 복구된 영역에 노드를 만들 수 있습니다.
포드: 장애 복구(failback) 직후 Pod는 현재 실행 중인 노드에서 계속 실행됩니다. 새 Pod를 만들거나 기존 Pod를 다시 만들면 복구된 영역에서 노드를 사용할 수 있습니다.
보관: Pod에 연결된 모든 스토리지는 영역 중복 스토리지의 작동 방식에 따라 복구됩니다.
영역 오류 테스트
다음 방법을 사용하여 가용성 영역 오류에 대한 복원력을 테스트할 수 있습니다.
지역 전체 오류에 대한 복원력
AKS 클러스터는 단일 지역 리소스입니다. 지역을 사용할 수 없는 경우 AKS 클러스터도 사용할 수 없습니다.
복원력을 위한 사용자 지정 다중 지역 솔루션
Kubernetes 워크로드를 여러 Azure 지역에 배포해야 하는 경우 이러한 클러스터의 오케스트레이션을 관리하는 두 가지 옵션이 있습니다.
더 간단하고 관리되는 환경을 원하는 경우 Azure Kubernetes Fleet Manager 를 사용합니다. Azure Kubernetes Fleet Manager를 사용하여 다음을 수행할 수 있습니다.
AKS 클러스터 집합을 단일 단위로 관리하고 이러한 클러스터를 여러 Azure 지역에 분산할 수 있습니다.
클러스터 및 노드 이미지 업그레이드와 같은 클러스터 관리의 특정 측면을 자동화합니다.
트래픽 배포 기능을 활용하여 클러스터 간에 트래픽을 분산시키고, 지역이 이용할 수 없을 때 자동으로 장애 조치를 진행합니다.
워크로드에 지역 간 장애 조치의 다양한 구성 요소를 보다 세밀하게 제어해야 하는 경우 수동 액티브-액티브 또는 액티브-패시브 배포 모델을 사용하여 장애 조치를 오케스트레이션하세요. 자세한 내용은 AKS에 대한 HA 및 DR 개요를 참조하세요.
백업 및 복원
Azure Backup에는 AKS 클러스터 리소스 및 클러스터에 연결된 영구 볼륨을 백업하는 데 사용할 수 있는 확장이 있습니다. 백업 볼트는 확장을 통해 AKS 클러스터와 통신하여 백업 및 복원 작업을 수행합니다.
AKS 클러스터 가 쌍을 이루는 지역에 있는 경우 지역 중복 스토리지에 저장되도록 백업을 구성할 수 있습니다. 지역 중복 백업을 쌍을 이루는 지역으로 복원할 수 있습니다.
자세한 내용은 다음 문서를 참조하세요.
대부분의 솔루션의 경우 백업에만 의존해서는 안 됩니다. 대신 이 가이드에 설명된 다른 기능을 사용하여 복원력 요구 사항을 지원합니다. 그러나 백업은 다른 방법이 사용하지 않는 일부 위험으로부터 보호합니다. 자세한 내용은 중복도, 복제 및 백업이란?을 참조하세요.
백업의 필요성을 최소화하는 상태 비저장 클러스터를 사용하려고 노력합니다. 클러스터 내가 아닌 외부 스토리지 시스템 및 데이터베이스에 데이터를 저장합니다.
서비스 유지 관리에 대한 복원력
AKS는 클러스터 및 노드 이미지에 대한 업데이트를 포함하여 클러스터에서 유지 관리를 수행합니다. Kubernetes가 업그레이드 중에도 프로덕션 트래픽을 제공하는 데 필요한 최소 Pod 인스턴스 수를 유지하도록 하려면 Pod 중단 예산을 사용하도록 Pod를 구성해야 합니다.
AKS는 중요한 기간 동안 서비스 중단을 줄이기 위해 계획된 유지 관리 시간을 지정할 수 있도록 제어를 제공합니다. 자세한 내용은 계획된 유지 관리를 사용하여 Azure Kubernetes Service 클러스터에 대한 업그레이드를 예약하고 제어하는 방법을 참조하세요.
서비스 수준 약정
Azure 서비스의 SLA(서비스 수준 계약)는 각 서비스의 예상 가용성과 해당 가용성 예상 결과치를 달성하기 위해 솔루션이 충족해야 하는 조건을 설명합니다. 자세한 내용은 온라인 서비스 SLA를 참조하세요.
AKS는 클러스터 관리를 위한 세 가지 가격 책정 계층인무료, 표준 및 프리미엄을 제공합니다. 무료 계층을 사용하면 AKS를 사용하여 워크로드를 테스트할 수 있습니다. 표준 및 프리미엄 계층은 프로덕션 워크로드용으로 설계되었습니다. 가용성 영역을 사용하도록 설정된 AKS 클러스터를 배포하면 SLA에 정의된 가동 시간 비율이 증가합니다. 그러나 SLA는 표준 또는 프리미엄 가격 책정 계층에 클러스터를 배포하는 경우에만 적용됩니다.