다음을 통해 공유


Azure Local의 AKS에 대한 AKS(Azure Kubernetes Service) 기준 아키텍처

AKS(Azure Kubernetes Service)
Azure 로컬
Azure Arc

이 시나리오에서는 Azure Local에서 실행되는 AKS(Microsoft Azure Kubernetes Service)에 대한 기준 아키텍처를 디자인하고 구현하는 방법을 보여 줍니다.

이 문서에는 조직의 비즈니스 요구 사항에 따라 클러스터의 네트워킹, 보안, ID, 관리 및 모니터링에 대한 권장 사항이 포함되어 있습니다.

중요합니다

이 문서의 정보는 Azure 로컬의 AKS 및 Windows Server의 AKS에 적용됩니다. AKS의 최신 버전은 Azure Stack HCI 버전 23H2 운영 체제에서 실행됩니다. 최신 버전에 대한 자세한 내용은 Azure Local의 AKS를 참조하세요.

아키텍처

Azure Local의 Azure Kubernetes Service에 대한 기준 아키텍처를 보여 주는 다이어그램

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

구성 요소

  • 에지 또는 온-프레미스에 다음 구성 요소가 설치됩니다.

    • Azure Local 은 하이브리드 온-프레미스 환경에서 가상화된 Linux 및 Windows 워크로드 및 해당 스토리지를 호스트하는 HCI(하이퍼 컨버지드 인프라) 클러스터 솔루션입니다. Azure 로컬 인스턴스는 1~16개 노드의 범위를 지정할 수 있는 클러스터로 구성됩니다.

    • Azure Arc 리소스 브리지는 Azure Local에서 실행되는 고가용성 VM(가상 머신)입니다. 리소스 브리지는 여러 AKS 클러스터를 배포하고 관리하는 역할을 담당합니다.

    • Azure Local의 AKS 는 대규모로 컨테이너화된 애플리케이션 실행을 자동화하는 AKS의 온-프레미스 구현입니다. Azure 로컬 클러스터의 AKS에는 고가용성 컨트롤 플레인 노드 및 작업자 노드가 포함됩니다. 컨테이너화된 애플리케이션은 AKS 클러스터의 작업자 노드에서 실행됩니다. 애플리케이션 격리를 달성하기 위해 최대 32개의 AKS 클러스터를 배포할 수 있습니다. AKS 클러스터는 다음 구성 요소로 구성됩니다.

      • 컨트롤 플레인은 Azure Linux에서 실행되며 Kubernetes API와 상호 작용하는 API 서버 구성 요소를 포함합니다. 또한 분산 키-값 저장소인 etcd를 사용하여 클러스터의 모든 구성 및 데이터를 저장합니다.

      • 작업자 노드는 Azure Linux 운영 체제 또는 Windows Server 운영 체제에서 실행됩니다. 컨테이너화된 애플리케이션을 Pod에서 호스트합니다. Pod는 애플리케이션의 단일 인스턴스를 나타내며 일반적으로 컨테이너와 일대일로 매핑됩니다. 그러나 일부 Pod에는 여러 컨테이너가 포함됩니다. 배포는 하나 이상의 동일한 Pod로 구성됩니다. Pod 및 배포는 이러한 리소스 관리에 대한 액세스를 정의하는 네임스페이스로 논리적으로 그룹화됩니다.

  • 다음 구성 요소가 Azure에 설치됩니다.

    • Azure Arc는 Azure Resource Manager 기반 관리 모델을 비 Azure VM, Kubernetes 클러스터 및 컨테이너화된 데이터베이스를 비롯한 비 Azure 리소스로 확장하는 클라우드 기반 서비스입니다.

    • Azure Automation은 Azure 및 비 Azure 환경에서 일관된 관리를 지원하는 클라우드 기반 자동화 및 구성 서비스를 제공합니다.

    • Azure Monitor는 클라우드 및 온-프레미스 환경에서 원격 분석을 수집, 분석 및 작동하기 위한 종합적인 솔루션을 제공하여 애플리케이션 및 서비스의 가용성과 성능을 극대화하는 클라우드 기반 서비스입니다.

    • Azure Policy는 Azure Arc에서 사용하도록 설정된 리소스를 포함하여 해당 리소스의 속성을 비즈니스 규칙에 따라 평가하여 조직 표준을 적용하고 대규모로 규정 준수를 평가하는 데 도움이 되는 클라우드 기반 서비스입니다. 이러한 표준에는 클러스터 내에서 실행되는 워크로드에 정책을 적용하는 Kubernetes용 Azure Policy도 포함됩니다.

    • 클라우드용 Microsoft Defender 는 데이터 센터의 보안 태세를 강화하고 클라우드 및 온-프레미스의 하이브리드 워크로드에서 고급 위협 방지를 제공하는 통합 인프라 보안 관리 시스템입니다.

시나리오 정보

잠재적인 사용 사례

  • AKS의 온-프레미스 Kubernetes 구현에서 고가용성 컨테이너 기반 워크로드를 구현합니다.

  • 컨테이너화된 애플리케이션의 실행을 대규모로 자동화합니다.

  • Microsoft 인증 솔루션, 클라우드 기반 자동화, 중앙 집중식 관리 및 중앙 집중식 모니터링을 사용하여 TCO(총 소유 비용)를 낮춥니다.

인증 하드웨어

보안 부팅, UEFI(United Extensible Firmware Interface) 및 TPM(신뢰할 수 있는 플랫폼 모듈) 설정을 기본적으로 제공하는 Azure 로컬 인증 하드웨어를 사용합니다. 컴퓨팅 요구 사항은 Azure Local에서 실행되는 모든 AKS 클러스터의 애플리케이션 및 총 제어 평면 노드 및 작업자 노드 수에 따라 달라집니다. Azure Local 배포에 여러 물리적 노드를 사용하여 고가용성을 달성합니다. 모든 서버는 동일한 제조업체 및 모델이어야 하며 2단계 주소 변환을 지원하는 64비트 Intel Nehalem 등급, AMD EPYC 등급 이상 호환 프로세서를 사용해야 합니다.

네트워크 요구 사항

Kubernetes는 Kubernetes 노드를 가상 오버레이 네트워크에 연결하여 네트워킹에 추상화 계층을 제공합니다. 또한, kube-proxy 구성 요소를 통해 Pod에 대한 인바운드 및 아웃바운드 연결을 제공합니다.

이 아키텍처는 고정 IP 주소 네트워킹을 사용하여 IP 주소를 할당하는 가상 오버레이 네트워크를 사용합니다. 이 아키텍처는 컨테이너 네트워크 인터페이스 공급자로 Calico 를 사용합니다. 고정 IP 주소 네트워킹에는 배포의 모든 개체에 대해 미리 정의된 주소 풀이 필요합니다. 추가적인 이점을 추가하고 워크로드 및 애플리케이션에 항상 연결할 수 있도록 보장합니다. 별도의 IP 주소 풀은 Kubernetes 서비스에 IP 주소를 할당하는 데 사용됩니다.

네트워크 사양은 Azure Local에서 논리 네트워크 로 정의됩니다. Azure Local에서 논리 네트워크를 만들기 전에 네트워크 요구 사항IP 주소 계획을 참조하세요.

저장소 요구 사항

클러스터의 모든 서버에 크기 및 모델이 같은 유형의 드라이브를 사용합니다. Azure Local은 직접 연결된 직렬 고급 기술 첨부 파일, 직렬 연결된 작은 컴퓨터 시스템 인터페이스, 비휘발성 메모리 익스프레스 또는 각각 하나의 서버에 물리적으로 연결된 영구 메모리 드라이브에서 작동합니다. 클러스터 볼륨의 경우 HCI는 스토리지 공간 다이렉트와 같은 소프트웨어 정의 스토리지 기술을 사용하여 내결함성, 확장성 및 성능을 위해 스토리지 풀의 물리적 드라이브를 결합합니다. Azure Local의 AKS에서 실행되는 애플리케이션에는 다음과 같은 스토리지 옵션을 사용할 수 있는 경우가 많습니다.

  • 볼륨은 Pod 간 및 애플리케이션 수명 주기를 통해 데이터를 저장, 검색 및 유지하는 방법을 나타냅니다.

  • 영구 볼륨은 Kubernetes API가 만들고 관리하는 스토리지 리소스입니다. 개별 Pod의 수명 외에 존재할 수 있습니다.

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

Azure Local에서 AKS 만들기 및 관리

관리하는 다른 Azure 리소스와 마찬가지로 Azure Local에서 AKS를 만들고 관리해야 합니다. Azure Portal, Azure CLI, ARM 템플릿(Azure Resource Manager 템플릿) 또는 Bicep을 사용할 수 있습니다.

Azure Arc 지원 Kubernetes 서비스는 Azure 로컬 인스턴스에서 AKS의 Resource Manager 표현을 제공합니다. Azure 로컬 클러스터에서 AKS를 만들면 Azure Arc 에이전트가 Kubernetes 네임스페이스에 자동으로 배포되어 로그 및 메트릭을 수집하고 클러스터 메타데이터, Kubernetes 버전 및 노드 수를 수집합니다.

대부분의 시나리오의 경우 다음 권장 사항을 적용합니다. 권장 사항을 재정의하라는 특정 요구 사항이 있는 경우가 아니면 따릅니다. AKS 클러스터와 동일한 Azure 지역에 다음 Azure 서비스를 배포해야 합니다.

  • MetalLB 확장을 사용하여 L2 부하 분산을 위해 AKS 클러스터에 MetalLB 부하 분산 장치를 배포합니다.

  • Azure Monitor Container Insights를 사용하도록 설정하여 Linux 및 Windows 노드 풀에서 실행되는 컨테이너 워크로드의 성능을 모니터링합니다. 메트릭 API를 통해 컨트롤러, 노드 및 컨테이너에서 메모리 및 프로세서 메트릭을 수집합니다. Container Insights를 사용하여 메모리 및 프로세서 사용량을 식별하고, 전반적인 Kubernetes 클러스터 성능을 검색하고, 클러스터 동작을 이해하고, 사전 모니터링을 위한 경고를 구성할 수 있습니다.

  • 엔드 투 엔드 관리에 사용 가능한 Automation 기능을 사용합니다. AKS는 OS 업데이트 및 Azure 로컬 공급업체 및 파트너의 펌웨어 및 드라이버와 같은 전체 스택 업데이트를 포함하여 광범위한 자동화 기능을 제공합니다. Azure 로컬 컴퓨터 중 하나에서 로컬로 또는 관리 컴퓨터에서 원격으로 Windows PowerShell을 실행할 수 있습니다. Azure Automation 및 Azure Arc와의 통합은 가상화컨테이너화된 워크로드에 대한 다양한 자동화 시나리오를 지원합니다.

  • Azure Policy를 사용하여 거버넌스를 적용하여 대규모 리소스 제어를 적용합니다. Azure Policy는 Open Policy 에이전트의 허용 컨트롤러 웹후크인 Gatekeeper v3를 확장하여 Pod, 컨테이너 및 네임스페이스와 같은 AKS 구성 요소에 대한 보호 장치를 중앙에서 적용합니다.

  • 확장 가능한 정책 기반 배포를 달성하기 위해 Flux v2 구성 및 Kubernetes용 Azure Policy를 사용하여 애플리케이션을 일관되게 배포합니다. 기본 제공 정책 정의를 선택하고 Flux 설정에 대한 특정 매개 변수가 있는 정책 할당을 만들 수 있습니다. 문제 분리를 지원하려면 클러스터 관리자를 위한 하나의 Git 리포지토리 및 애플리케이션 팀을 위한 다른 리포지토리와 같이 별도의 원본을 가리키는 다른 Flux 구성이 있는 여러 할당을 만듭니다.

고려 사항

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

안정성

안정성은 애플리케이션이 고객에 대한 약정을 충족할 수 있도록 하는 데 도움이 됩니다. 자세한 내용은 안정성에 대한 디자인 검토 검사 목록을 참조하세요.

  • 애플리케이션에 대한 최소 가용성 요구 사항을 충족하도록 Kubernetes 클러스터에서 3~5개의 컨트롤 플레인 노드와 여러 작업자 노드를 구현합니다.

  • 장애 조치(failover) 클러스터링에 대한 요구 사항을 검토합니다. AKS 배포는 고가용성 및 내결함성을 위해 장애 조치(failover) 클러스터링 및 실시간 마이그레이션을 사용합니다. 실시간 마이그레이션은 가동 중지 시간 없이 실행 중인 VM을 한 Hyper-V 호스트에서 다른 호스트로 투명하게 이동할 수 있는 Hyper-V 기능입니다.

  • 배포, 선호도 매핑 및 ReplicaSets와 같은 Kubernetes 기능을 사용하여 배포를 구성하여 중단 시나리오에서 Pod의 복원력을 보장합니다.

  • 공용 컨테이너 이미지의 사용을 제한하고 Azure Container Registry와 같은 서비스 수준 계약을 제어할 수 있는 컨테이너 레지스트리에서만 끌어오세요.

보안

보안은 의도적인 공격 및 중요한 데이터 및 시스템의 오용에 대한 보증을 제공합니다. 자세한 내용은 보안성에 대한 디자인 검토 검사 목록을 참조하세요.

호스트와 해당 컨테이너를 모두 보호하여 전체 스택에 집중합니다.

인프라 보안

  • 기본 제공 보안 부팅, UEFI 및 TPM 설정을 제공하는 Azure 로컬 인증 하드웨어를 사용합니다. 이러한 기술은 가상화 기반 보안과 결합되어 보안에 민감한 워크로드를 보호하는 데 도움이 됩니다. 유효성이 검사된 솔루션에 대한 자세한 내용은 Azure 로컬 솔루션을 참조하세요.

  • 보안 부팅을 사용하여 원래 장비 제조업체가 신뢰하는 소프트웨어만 서버에서 부팅하도록 합니다.

  • UEFI를 사용하여 서버의 부팅 프로세스를 제어합니다.

  • TPM을 사용하여 암호화 키를 저장하고 모든 하드웨어 기반 보안 관련 기능을 격리합니다.

  • BitLocker 드라이브 암호화를 사용하여 미사용 스토리지 공간 다이렉트 볼륨을 암호화합니다.

  • Defender for Cloud를 사용하여 서버 및 클러스터에 대한 보안 설정을 관리합니다. Azure Arc 지원 Kubernetes 클러스터에 대한 위협 방지 기능을 제공합니다. Defender for Cloud 확장은 클러스터의 노드에서 데이터를 수집하고 추가 분석을 위해 클라우드의 Azure Defender for Kubernetes 백 엔드로 보냅니다.

  • 역할 할당에 Azure RBAC(Azure 역할 기반 액세스 제어) 를 사용하고 AKS 클러스터에 대한 액세스를 관리합니다.

  • 워크로드 ID를 사용하여 ID를 보호 및 관리하여 워크로드 Pod에서 Azure 리소스에 액세스합니다.

  • AKS는 KMS(키 관리 서비스) 플러그 인을 사용하여 etcd 비밀 암호화와 함께 제공됩니다. 모든 AKS 클러스터에는 기본적으로 사용하도록 설정된 기본 제공 KMS 플러그 인이 있습니다. 이 플러그 인은 암호화 키를 생성하고 30일마다 자동으로 회전합니다.

애플리케이션 보안

  • Azure 로컬 인스턴스의 AKS에서 Azure Key Vault 비밀 공급자 확장을 사용하여 다른 애플리케이션이 Key Vault에 저장하여 사용하는 비밀을 추가로 보호합니다.

  • Kubernetes용 Azure Policy를 사용하여 권한 있는 Pod 없음과 같은 클러스터 보안 정책을 적용합니다.

  • 컨테이너 리포지토리에 취약성 검사가 포함된 Container Registry 인스턴스를 사용합니다.

컨테이너 보안

  • 불필요한 서비스를 제거하여 호스트 및 디먼 환경을 강화합니다.

  • 이미지에 비밀이 포함되지 않도록 하고 컨테이너 오케스트레이션 엔진을 통해서만 탑재합니다.

  • 취약성 검사 및 Azure RBAC를 지원하는 Container Registry 인스턴스에서 이미지를 보호합니다.

  • 컨테이너 격리를 사용하고 권한 있는 모드에서 컨테이너를 실행하지 않도록 하여 컨테이너가 손상된 경우 공격자가 권한을 에스컬레이션하지 못하도록 방지합니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 개선하는 방법에 중점을 둡니다. 자세한 내용은 비용 최적화를 위한 디자인 검토 검사 목록을 참조하세요.

운영 효율성

운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 Operational Excellence에 대한 디자인 검토 검사 목록을 참조하세요.

  • 코드로서의 인프라: ARM 템플릿, Bicep 또는 Terraform을 사용하여 대규모 클러스터 배포를 자동화합니다. Azure Portal을 사용하여 클러스터 만들기에 사용할 수 있고 지원되는 옵션을 탐색하고 선택 항목을 템플릿으로 내보냅니다. 확장 가능한 배포 옵션 에 대한 Azure 확인된 모듈 을 검토합니다. 자세한 내용은 GitHub의 하이브리드 컨테이너 서비스 모듈 을 참조하세요.

  • Azure Arc: 추가 관리, 유지 관리 및 복원력 기능을 제공하는 Azure Arc 또는 Azure 서비스(예: Azure Monitor 및 Log Analytics)와 통합합니다.

  • GitOps: Kubernetes 구성 요소를 수동으로 구성하는 대신 자동화된 도구를 사용하여 Kubernetes 클러스터에 구성을 적용합니다. 이러한 구성은 원본 리포지토리에 체크 인되기 때문입니다. 이 프로세스를 GitOps라고도 합니다. Kubernetes에 대한 일반적인 GitOps 솔루션에는 Flux 및 Argo CD가 포함됩니다. 이 아키텍처에서는 Flux를 기반으로 하는 Microsoft 제공 GitOps 확장을 사용하는 것이 좋습니다.

성능 효율성

성능 효율성은 사용자 요구를 효율적으로 충족하기 위해 워크로드의 크기를 조정하는 기능을 의미합니다. 자세한 내용은 성능 효율성에 대한 디자인 검토 검사 목록을 참조하세요.

  • Azure 로컬 인증 하드웨어를 사용하여 애플리케이션 작동 시간 및 성능 향상, 간소화된 관리 및 작업 및 낮은 TCO를 수행할 수 있습니다.

  • Azure Local에서 AKS의 제한을 이해합니다. Microsoft는 클러스터당 최대 16개의 물리적 서버, 32개의 Kubernetes 클러스터 및 200개의 VM이 있는 Azure 로컬 배포에서 AKS를 지원합니다.

  • 제어 평면 노드, 작업자 노드 및 AKS 클러스터 수에 따라 Azure 로컬 요구 사항에서 AKS를 결정합니다. 하드웨어 크기를 적절하게 조정하려면 각 AKS 클러스터에 필요한 Pod, 컨테이너 및 작업자 노드 수를 예상합니다. 계획된 오류와 계획되지 않은 오류를 모두 수용하기 위해 Azure 로컬 용량의% 이상을 예약합니다.

    성능 효율성을 위해 시스템 요구 사항을 충족하는 방식으로 컴퓨팅 리소스를 사용하고 수요 변화 및 기술이 발전함에 따라 효율성을 유지합니다. 일반적으로 유지 관리 또는 예기치 않은 오류로 인해 노드가 오프라인 상태가 되면 나머지 노드에는 증가된 부하를 처리할 수 있는 충분한 용량이 있어야 합니다.

  • AKS 노드 배치 논리를 검토합니다. Azure Local의 AKS는 가용성 집합을 통해 Azure 로컬 배치 논리를 사용하여 AKS 클러스터의 각 노드 풀에 대한 작업자 노드를 배포합니다.

  • IP 주소 예약을 계획하여 AKS 클러스터 및 Kubernetes 서비스를 구성합니다.

  • 트래픽 대역폭 할당을 위한 네트워크 성능 최적화를 구현합니다.

  • 광범위한 워크로드에 그래픽 처리 단위 가속을 사용합니다.

참가자

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

주요 작성자:

기타 기여자:

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계