Azure Stack HCI의 AKS를 위한 기준 아키텍처

Azure Stack
Windows Server

이 시나리오는 AKS 하이브리드(Azure Stack HCI)에서 실행되는 Microsoft AKS(Azure Kubernetes Service)를 위한 기준 아키텍처를 설계하고 구현하는 방법을 보여 줍니다.

이 문서에는 조직의 비즈니스 요구 사항에 따라 클러스터의 네트워킹, 보안, ID, 관리 및 모니터링에 대한 권장 사항이 포함되어 있습니다. 이는 두 아티클의 아키텍처 기준 지침 집합의 일부입니다. 여기에서 네트워크 설계에 대한 권장 사항을 참조하세요.

아키텍처

다음 이미지는 Azure Stack HCI의 Azure Kubernetes Service 또는 Windows Server 2019/2022 데이터 센터 장애 조치(failover) 클러스터를 위한 기준 아키텍처를 보여줍니다.

Conceptual image of Baseline architecture for Azure Kubernetes Service on Azure Stack HCI.

이 아키텍처의 Visio 파일을 다운로드합니다.

아키텍처는 다음과 같은 구성 요소와 기능으로 구성됩니다.

  • Azure Stack HCI(20H2). 가상화된 Windows 및 Linux 워크로드를 호스트하는 하이퍼 컨버지드 인프라(HCI) 클러스터 솔루션과 하이브리드 온-프레미스 환경의 스토리지입니다. Azure Stack HCI 클러스터는 2-8 노드 클러스터로 구현됩니다.
  • Azure Stack HCI의 Azure Kubernetes Service(AKS 하이브리드) 컨테이너화된 애플리케이션의 대규모 실행을 자동화하는 AKS의 온-프레미스 구현입니다.
  • Azure Arc. Azure Resource Manager 기반 관리 모델을 비 Azure 가상 머신(VM), Kubernetes 클러스터, 컨테이너화된 데이터베이스를 포함한 비 Azure 리소스로 확장하는 클라우드 기반 서비스입니다.
  • Azure Policy Azure(Arc 지원 포함) 리소스를 비즈니스 규칙에 대한 리소스의 속성으로 평가하여 조직 표준을 적용하고 대규모 규정 준수를 평가하는 데 도움을 주는 클라우드 기반 서비스입니다. 이러한 표준에는 클러스터 내에서 실행되는 워크로드에 정책을 적용하는 Kubernetes에 대한 Azure Policy도 포함됩니다.
  • Azure Monitor 클라우드 및 온-프레미스 환경에서 원격 분석을 수집, 분석 및 작동하기 위한 포괄적인 솔루션을 제공하여 애플리케이션 및 서비스의 가용성과 성능을 극대화하는 클라우드 기반 서비스입니다.
  • 클라우드용 Microsoft Defender 클라우드 및 온 프레미스의 하이브리드 워크로드에 걸쳐 데이터 센터의 보안 상태를 강화하고 고급 위협 보호를 제공하는 통합 인프라 보안 관리 시스템입니다.
  • Azure Automation. Azure 및 Azure 이외의 환경에서 일관된 관리를 지원하는 클라우드 기반 자동화 및 구성 서비스를 제공합니다.
  • Velero. 주문형 백업 및 예약된 백업을 지원하고 Kubernetes 클러스터 안의 모든 개체를 복원하는 오픈 소스 도구입니다.
  • Azure Blob Storage. 클라우드 네이티브 워크로드, 보관, 데이터 레이크, 고성능 컴퓨팅 및 기계 학습을 위한 대규모 확장 가능하고 안전한 개체 스토리지입니다.

구성 요소

시나리오 정보

잠재적인 사용 사례

  • AKS의 온-프레미스 Kubernetes 구현에서 고가용성 컨테이너 기반 워크로드를 구현합니다.
  • 컨테이너화된 애플리케이션의 실행을 대규모로 자동화합니다.
  • Microsoft 인증 솔루션, 클라우드 기반 자동화, 중앙 집중식 관리 및 중앙 집중식 모니터링을 통해 TCO(총 소유 비용)를 낮춥니다.

인증 하드웨어

보안 부팅, UEFI(United Extensible Firmware Interface) 및 TPM(Trusted Platform Module) 설정을 기본 제공하는 Azure Stack HCI 인증 하드웨어를 사용합니다. 컴퓨팅 요구 사항은 Azure Stack HCI의 AKS 클러스터에서 실행되는 애플리케이션 및 작업자 노드 수에 따라 달라집니다. 고가용성을 달성하려면 Azure Stack HCI 또는 두 개 이상의 노드 Windows Server Datacenter 장애 조치(failover) 클러스터 배포를 위해 여러 물리적 노드를 사용합니다. 모든 서버는 제조업체와 모델이 동일해야 하며 64비트 Intel Nehalem 등급, AMD EPYC 등급 또는 두 번째 수준 주소 변환(SLAT) 이상과 호환되는 프로세서를 사용해야 합니다.

클러스터 배포 전략

AKS는 Kubernetes 및 필수 Azure Stack HCI 추가 항목을 설정하는 데 사용할 수 있는 마법사 또는 PowerShell cmdlet을 제공하여 온-프레미스 Kubernetes 배포를 간소화합니다. Azure Kubernetes Service 클러스터에는 Azure Stack HCI 상에 다음과 같은 구성 요소가 있습니다.

  • 관리 클러스터. Azure Stack HCI 또는 Windows Server 2019/2022 Datacenter 장애 조치(failover) 클러스터에서 실행되는 고가용성 가상 머신(VM)에 관리 클러스터를 배포합니다. 관리 클러스터는 여러 워크로드 클러스터 배포 및 관리를 담당하며 다음 구성 요소를 포함합니다.
    • API 서버. 관리 도구와 상호 작용합니다.
    • 부하 분산 장치 관리 클러스터의 API 서버에 대한 부하 분산 규칙을 관리합니다.
  • 워크로드 클러스터. 고가용성 컨트롤 플레인 구성 요소 및 작업자 노드 구성 요소를 구현합니다. 컨테이너화된 애플리케이션은 워크로드 클러스터 상에서 실행됩니다. 애플리케이션 격리를 달성하기 위해 최대 8개의 워크로드 클러스터를 배포할 수 있습니다. 워크로드 클러스터는 다음 구성 요소로 구성됩니다.
    • 컨트롤 플레인입니다. Linux 배포판에서 실행되며 클러스터의 모든 구성 및 데이터를 저장하기 위한 Kubernetes API 및 분산 키-값 저장소, etcd와 상호 작용하기 위한 API 서버 구성 요소를 포함합니다.
    • 부하 분산 장치 Linux VM에서 실행되며 워크로드 클러스터를 위한 부하 분산 서비스를 제공합니다.
    • 작업자 노드. 컨테이너화된 애플리케이션을 호스트하는 Windows 또는 Linux 운영 체제에서 실행됩니다.
    • Kubernetes 리소스. Pod는 일반적으로 컨테이너와 1:1 매핑되는 애플리케이션의 단일 인스턴스를 나타내지만, 특정 Pod는 여러 컨테이너를 포함할 수 있습니다. 배포는 하나 이상의 동일한 Pod를 나타냅니다. Pod 및 배포는 논리적으로 리소스 관리에 대한 액세스를 제어하는 네임스페이스에 논리적으로 그룹화됩니다.

네트워크 요구 사항

Kubernetes는 Kubernetes 노드를 가상 네트워크에 연결하여 가상 네트워킹에 추상화 레이어를 제공합니다. 또한, kube-proxy 구성 요소를 통해 Pod에 대한 인바운드 및 아웃바운드 연결을 제공합니다. Azure Stack HCI 플랫폼은 HAProxy 부하 분산 장치 VM을 구성하여 배포를 더욱 간소화합니다.

참고

Azure Stack HCI 및 Windows Server 클러스터에 AKS 노드를 배포하기 위한 네트워크 개념을 설계하고 구현하는 방법에 대한 자세한 내용은 이 시리즈의 두 번째 아티클인 네트워크 아키텍처를 참조하세요.

이 아키텍처는 다음 네트워킹 옵션 중 하나를 사용하여 IP 주소를 할당하는 가상 네트워크를 사용합니다.

  • 고정 IP 네트워킹. 배포에 포함된 모든 개체를 위해 정의된 고정 주소 풀을 사용합니다. 이는 추가 혜택을 추가하고 워크로드 및 애플리케이션에 항상 연결할 수 있도록 보장합니다. 이것이 권장된 방법입니다.
  • DHCP 네트워킹. DHCP(동적 호스트 구성 프로토콜) 서버를 사용하여 Kubernetes 노드, 기본 VM 및 부하 분산 장치에 동적 IP 주소를 할당합니다.

가상 IP 풀은 Kubernetes 클러스터 API 서버 및 Kubernetes 서비스에 IP 주소를 할당하는 데 사용되는 예약된 IP 주소의 범위입니다.

Kubernetes용 Project Calico를 사용하여 네트워크 정책 및 흐름 제어와 같은 다른 네트워크 기능을 가져옵니다.

저장소 요구 사항

클러스터의 모든 서버에 크기 및 모델이 같은 유형의 드라이브를 사용합니다. Azure Stack HCI는 직접 연결된 SATA(Serial Advanced Technology Attachment), SAS(Serial Attached SCSI), NVMe(Non-Volatile Memory Express) 또는 각각 하나의 서버에 물리적으로 연결된 영구 메모리 드라이브에서 작동합니다. 클러스터 볼륨의 경우 HCI는 소프트웨어 정의 스토리지 기술(저장소 공간 다이렉트)을 사용하여 내결함성, 확장성 및 성능을 위해 스토리지 풀 안에서 물리적 드라이브를 결합합니다. Azure Stack HCI의 Kubernetes에서 실행되는 애플리케이션에서는 다음과 같은 스토리지 옵션을 사용할 수 있는 경우가 많습니다.

  • 볼륨 Pod 전반에서 애플리케이션 수명 주기에 걸쳐 데이터를 저장, 검색 및 유지하는 방법을 나타냅니다.
  • 영구적 볼륨. Kubernetes API에 의해 만들어지고 관리되는 스토리지 리소스이며 개별 Pod의 수명보다 더 오래 존재할 수 있습니다.

비용과 성능을 최적화하기 위해 다양한 계층 및 위치에 대한 스토리지 클래스를 정의하는 것이 좋습니다. 스토리지 클래스는 영구적 볼륨의 동적 프로비저닝을 지원하고, Pod가 삭제되면 영구적 볼륨을 관리하기 위한 기본 스토리지 리소스의 작업을 지정하는 reclaimPolicy를 정의합니다.

Azure Stack HCI의 AKS 관리

다음 관리 옵션을 사용하여 Azure Stack HCI의 AKS를 관리할 수 있습니다.

  • Windows Admin Center. Kubernetes 운영자가 Azure Stack HCI의 Azure Kubernetes Service 클러스터의 수명 주기를 관리할 수 있는 직관적인 UI를 제공합니다.
  • PowerShell. Azure Stack HCI의 AKS를 쉽게 다운로드, 구성 및 배포하도록 해줍니다. PowerShell 모듈은 다른 워크로드 클러스터의 배포 및 구성, 기존 워크로드 클러스터의 재구성도 지원합니다.

Active Directory 요구 사항

최적의 관리를 위해 Azure Stack HCI의 AKS 또는 Windows Server Datacenter 장애 조치(failover) 클러스터를 AD DS(Active Directory Domain Services) 환경과 통합합니다. 가능한 경우, Azure Stack HCI의 AKS 서버 및 서비스에 대해 별도의 조직 구성 단위를 사용하여 보다 세분화된 제어 액세스 및 권한을 제공합니다. Active Directory를 Azure Stack HCI의 Azure Kubernetes Service와 통합하면 Windows 도메인에 가입된 컴퓨터의 사용자가 SSO(Single Sign-On) 자격 증명을 사용하여 API 서버에 연결할 수 있습니다(kubectl 사용).

권장 사항

대부분의 시나리오의 경우 다음 권장 사항을 적용합니다. 권장 사항을 재정의하라는 특정 요구 사항이 있는 경우가 아니면 따릅니다.

Azure Arc와 AKS 하이브리드 배포 통합

TCO를 최소화하려면 AKS 하이브리드 배포를 Azure Arc와 통합합니다. 다음 Azure 서비스를 사용하는 것이 좋습니다.

  • Azure Monitor 컨테이너 인사이트. Linux 및 Windows 클러스터에서 실행되는 컨테이너 워크로드의 성능을 모니터링합니다. Metric API를 통해 컨트롤러, 노드 및 컨테이너의 메모리 및 프로세서 메트릭을 수집합니다. 컨테이너 인사이트를 통해 메모리 및 프로세서 사용률을 식별하고, 전체 Pod의 성능을 검색하고, 클러스터의 동작을 이해하고, 사전 모니터링을 위한 경고를 구성할 수 있습니다.
  • 자동화 기능. AKS 하이브리드는 Azure Stack HCI 공급업체 및 파트너가 제공하는 펌웨어 및 드라이버를 비롯한 전체 스택 업데이트와 결합된 OS 업데이트와 함께 광범위한 자동화 기능을 제공합니다. Azure Stack HCI 서버 중 하나에서 로컬로 또는 관리 컴퓨터에서 원격으로 Windows PowerShell을 실행할 수 있습니다. Azure Automation 및 Azure Arc와의 통합은 가상화컨테이너화된 워크로드에 대한 광범위한 자동화 시나리오를 용이하게 합니다.
  • Velero와 Azure Blob Storage. Velero는 Kubernetes CRD(사용자 지정 리소스 정의)로 etcd 데이터베이스에 정의되고 저장된 리소스에 대해 Kubernetes 클러스터에 있는 모든 개체의 주문형 백업, 예약된 백업 및 복원을 지원하는 오픈 소스 도구입니다. 네임스페이스 또는 레이블 선택기를 사용하여 클러스터 전체 또는 일부에 대한 Kubernetes 리소스 및 볼륨의 백업을 제공합니다. Velero 도구를 사용하여 만든 백업 집합을 Blob 컨테이너의 Azure 스토리지 계정에 저장합니다.
  • Azure Arc 지원 Kubernetes 서비스. Azure Stack HCI의 AKS 클러스터의 Azure Resource Manager 표현을 제공합니다. Kubernetes 네임스페이스에 Azure Arc 지원 에이전트를 배포하여 로그 및 메트릭, 클러스터 메타데이터, 클러스터 버전 및 노드 수를 수집하고 에이전트가 최적의 성능을 발휘하는지 확인합니다.
  • Azure Policy Azure Policy를 사용하여 AKS 클러스터에 기본 제공 보안 정책을 배포하고 적용합니다. 사용자 지정 정책 정의를 사용하여 Git 리포지토리에서 원하는 Kubernetes 구성 상태(배포, 네임스페이스 등)를 선언하는 방식인 GitOps를 적용할 수도 있습니다.
  • Kubernetes에 대한 Azure Policy. Gatekeeper에 의해 구현된 내부 클러스터 정책을 관리하고, 정책 정의를 제약 조건 템플릿으로 클러스터에 배포하고, Kubernetes 클러스터의 준수 상태를 보고하는 작업을 한 곳에서 할 수 있습니다.
  • Azure RBAC. 역할을 할당하고 Azure Arc 지원 Kubernetes에 대한 액세스를 관리하기 위해 사용합니다.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

안정성

  • 워크로드에 대한 최소 수준의 가용성을 충족하도록 관리 클러스터를 위한 고가용성 VM 및 Kubernetes 클러스터 안의 여러 호스트를 구현합니다.
  • Velero 및 Azure Blob Storage를 사용하여 워크로드 클러스터를 백업 및 복원합니다. 비즈니스 요구 사항을 충족하도록 가용성 및 복구 목표를 정의합니다.
  • AKS 하이브리드 배포는 고가용성 및 내결함성을 위해 장애 조치(failover) 클러스터링 및 실시간 마이그레이션을 사용합니다. 실시간 마이그레이션은 가동 중지 시간을 인식하지 않고 실행 중인 가상 머신을 하나의 Hyper-V 호스트에서 다른 호스트로 투명하게 이동할 수 있는 Hyper-V 기능입니다.
  • 배포, 선호도 매핑 및 ReplicaSets와 같은 Kubernetes 기능을 사용하여 중단 시나리오에서 Pod가 복원력을 갖도록 배포를 구성하세요.
  • 아키텍처 섹션에 언급된 서비스들이 Azure Arc가 배포되는 지역에서 지원되는지 확인해야 합니다.
  • 공용 컨테이너 이미지의 사용을 제한하고 ACR과 같이 SLA를 제어할 수 있는 컨테이너 레지스트리에서만 풀하는 것이 좋습니다.

보안

호스트 및 컨테이너를 보호하여 전체 스택에 집중하세요.

인프라 보안

  • 기본 제공 보안 부팅, UEFI 및 TPM 설정을 제공하는 Azure Stack HCI 인증 하드웨어를 사용하세요. 이러한 기술은 가상화 기반 보안(VBS)과 결합되어 보안에 민감한 워크로드를 보호하는 데 도움이 됩니다. 유효성이 검사된 솔루션은 Azure Stack HCI 솔루션을 참조하세요.
  • 보안 부팅을 사용하여 OEM(주문자 상표 부착 제조업체)에서 신뢰하는 소프트웨어만 서버에서 부팅되도록 합니다.
  • UEFI를 사용하여 서버의 부팅 프로세스를 제어합니다.
  • TPM을 사용하여 암호화 키를 저장하고 모든 하드웨어 기반 보안 관련 기능을 격리합니다.
  • BitLocker 드라이브 암호화를 사용하면 미사용 저장소 공간 다이렉트 볼륨을 암호화할 수 있습니다.
  • 컨테이너 간의 네트워크 격리 규칙을 정의하도록 Calico 네트워크 정책을 구성합니다.
  • 보안 요구 사항이 엄격한 경우, 전용 Windows 서버에 워크로드 클러스터를 배포하는 것이 좋습니다.
  • Windows Admin Center를 통해 사용할 수 있는 클라우드용 Microsoft Defender를 사용하여 서버 및 클러스터에 대한 보안 설정을 중앙에서 관리합니다. Arc 지원 Kubernetes 클러스터에 대한 위협 방지 기능을 제공합니다. 클라우드용 Microsoft Defender 확장은 클러스터의 노드에서 데이터를 수집하고 추가적인 분석을 위해 클라우드의 Kubernetes용 Azure Defender 백 엔드로 보냅니다.
  • 인증서를 통한 안전한 통신.
  • Key Management Server(KMS) 플러그 인을 사용하여 Kubernetes 비밀 저장소(etcd)의 암호화 키를 순환시킵니다.

애플리케이션 보안

  • Azure Stack HCI의 AKS에서 Azure Key Vault 비밀 공급자 확장을 사용해 다양한 애플리케이션에 의해 사용되는 비밀을 Azure Key Vault 서비스에 저장하여 보호를 강화합니다.
  • Open Service Mesh AKS 추가 항목을 사용하여 상호 TLS(mTLS)를 사용하도록 설정해 서비스 사이의 통신을 보호합니다. 이 추가 항목을 사용하여 서비스를 위한 세분화된 액세스 제어 정책을 정의하고 실행할 수도 있습니다.
  • Kubernetes용 Azure Policy를 사용하여 권한 있는 Pod 없음과 같은 클러스터 보안 정책을 적용합니다.
  • 컨테이너 리포지토리에 취약성 검사가 포함된 Azure Container Registry를 사용합니다.
  • 도메인 미가입 호스트가 있는 Windows 워크로드에 그룹 관리 보안 계정을 사용합니다. (Windows Server에만 해당됩니다.)

컨테이너 보안

  • 불필요한 서비스를 제거하여 호스트 및 디먼 환경을 강화합니다.
  • 이미지에 비밀이 포함되지 않도록 하고 컨테이너 오케스트레이션 엔진을 통해서만 탑재합니다.
  • 취약성 검사 및 RBAC를 지원하는 Azure Container Registry 내의 이미지를 보호합니다.
  • 컨테이너 격리를 사용하고 권한 있는 모드에서 컨테이너를 실행하지 않도록 하여 컨테이너가 손상된 경우에 공격자가 권한을 에스컬레이션하지 못하도록 합니다.

비용 최적화

운영 우수성

  • 클러스터 만들기 마법사. Windows Admin Center를 통해 간소화된 프로비저닝 및 관리 환경을 경험해 보세요. Windows Admin Center의 클러스터 만들기 마법사는 Azure Stack HCI 클러스터를 만드는 과정을 안내하는 마법사 기반 인터페이스를 제공합니다. 클러스터 만들기 마법사는 편이성과 여러 배포에 걸쳐 감사 및 반복성을 소스 제어할 수 있는 배포 스크립트를 만드는 것 사이의 절충안입니다. 이와 비슷하게 Windows Admin Center는 Azure Stack HCI VM의 관리 프로세스를 단순화합니다.
  • Azure Arc. Azure Arc 또는 추가적인 관리, 유지 관리 및 복원력 기능(예: Azure Monitor 및 로그 분석)을 제공하는 다양한 Azure 서비스와 통합합니다.
  • GitOps. Kubertnetes 구성 요소를 수동으로 구성하는 대신, 자동화된 도구를 사용하여 이러한 구성이 원본 리포지토리에 체크 인될 때 Kubernetes 클러스터에 구성을 적용합니다. 이 프로세스를 GitOps라고도 하며, Kubernetes에 많이 사용되는 GitOps 솔루션은 Flux 및 Argo CD입니다. 이 아키텍처에서는 Flux에 기반하는 Microsoft 제공 GitOps 확장을 사용하는 것이 좋습니다.
  • Azure Arc 지원 OSM(Open Service Mesh). 간단하고 확장 가능한 클라우드 네이티브 서비스 메시로 사용자가 매우 동적인 마이크로 서비스 환경을 일관되게 관리하고, 안전하게 만들도록 도움을 주고, 즉시 사용 가능한 가시성 기능을 사용할 수 있도록 해줍니다.

성능 효율성

  • Azure Stack HCI 인증 하드웨어를 사용하여 애플리케이션 작동 시간 및 성능을 개선하고 관리 및 운영을 간소화하며 총 소유 비용을 낮추세요.
  • Azure Stack HCI의 AKS 제한을 이해하세요. Microsoft는 클러스터당 최대 8개의 물리적 서버, 8개의 Kubernetes 클러스터 및 200개의 VM을 포함하는 Azure Stack의 AKS 배포를 지원합니다.
  • Azure Stack HCI의 AKS 크기 조정은 작업자 노드 및 대상 클러스터의 수에 따라 달라집니다. 작업자 노드의 하드웨어 크기를 적절하게 조정하려면 대상 클러스터의 Pod, 컨테이너 및 작업자 노드 수를 예상해야 합니다. Azure Stack HCI 용량의 15% 이상이 계획된 오류와 계획되지 않은 오류 모두에 대해 예약되어 있는지 확인해야 합니다. 성능 효율성을 위해 컴퓨팅 리소스를 효율적으로 사용하여 시스템 요구 사항을 충족하고 변화하는 수요와 발전하는 기술에 맞추어 효율성을 유지하세요. 일반적인 규칙은 유지 관리 또는 계획되지 않은 오류 중에 한 노드가 오프라인 상태가 되면 나머지 노드들이 증가한 부하를 관리하기 위한 충분한 용량을 가질 수 있다는 것입니다.
  • 각 대상 클러스터에서 많은 Kubernetes 서비스를 실행하는 경우 부하 분산 장치 VM의 크기를 늘리는 것이 좋습니다.
  • Azure Stack HCI의 AKS는 Azure Stack HCI 배치 논리를 사용하여 대상 클러스터의 각 노드 풀을 위한 작업자 노드를 배포합니다.
  • IP 주소 예약을 계획하여 AKS 호스트, 워크로드 클러스터, 클러스터 API 서버, Kubernetes Services 및 애플리케이션 서비스를 구성합니다. Microsoft는 Azure Stack HCI의 AKS 배포를 위해 최소 256개의 IP 주소를 예약할 것을 권장합니다.
  • 레이어 7에서 작동하고 보다 지능적인 규칙을 사용하여 애플리케이션 트래픽을 분산하는 수신 컨트롤러를 구현하는 것이 좋습니다.
  • 트래픽 대역폭 할당을 위한 네트워크 성능 최적화를 구현합니다.
  • 광범위한 워크로드에는 그래픽 처리 장치(GPU) 가속을 사용합니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

기타 기여자:

다음 단계