AKS(Azure Kubernetes Services)의 클러스터 격리 모범 사례

AKS(Azure Kubernetes Service)에서 클러스터를 관리할 경우 종종 팀 및 워크로드를 격리해야 합니다. AKS를 사용하면 유연하게 다중 테넌트 클러스터를 실행하고 리소스를 격리할 수 있습니다. Kubernetes에 대한 투자를 최대화하려면 먼저 AKS 다중 테넌시 및 격리 기능을 이해하는 것이 중요합니다.

이 모범 사례 문서는 클러스터 운영을 위한 격리를 중점적으로 설명합니다. 이 문서에서는 다음 방법을 설명합니다.

  • 다중 테넌트 클러스터 및 리소스 격리를 계획합니다.
  • AKS 클러스터에서 논리적 또는 물리적 격리를 사용합니다.

다중 테넌트용 클러스터 설계

Kubernetes를 사용하면 팀과 워크로드를 동일한 클러스터에 논리적으로 격리할 수 있습니다. 목표는 각 팀이 필요로 하는 리소스로 범위가 지정된 권한을 최소한의 수로 제공하는 것입니다. Kubernetes 네임스페이스는 논리적 격리 경계를 만듭니다. 격리 및 다중 테넌트에 대한 다른 Kubernetes 기능 및 고려 사항에는 다음 영역이 포함됩니다:

일정 예약

일정은 리소스 할당량 및 Pod 중단 예산과 같은 기본 기능을 사용합니다. 이러한 기능에 대한 자세한 내용은 AKS의 기본 스케줄러 기능 모범 사례를 참조하세요.

고급 스케줄러 기능은 다음과 같습니다.

  • Taints 및 toleration
  • 노드 선택기
  • 노드 및 Pod 선호도 또는 선호도 방지.

이러한 기능에 대한 자세한 내용은 AKS의 고급 스케줄러 기능 모범 사례를 참조하세요.

네트워킹

네트워킹은 네트워크 정책을 사용하여 Pod 내외부의 트래픽 흐름을 제어합니다.

인증 및 권한 부여

인증 및 권한 부여는 다음을 사용합니다.

  • RBAC(역할 기반 액세스 제어).
  • Microsoft Entra 통합
  • Pod ID
  • Azure Key Vault의 비밀

이러한 기능에 대한 자세한 내용은 AKS의 인증 및 권한 부여 모범 사례를 참조하세요.

컨테이너

컨테이너에는 다음이 포함됩니다.

  • AKS용 Azure Policy 추가 기능으로 Pod 보안을 적용합니다.
  • Pod 보안 허용
  • 이미지 및 런타임에서 취약성 검사
  • App Armor 또는 Seccomp(보안 컴퓨팅)를 사용하여 컨테이너 액세스를 기본 노드로 제한합니다.

논리적으로 격리된 클러스터

모범 사례 지침

논리적 격리를 사용하여 팀과 프로젝트를 분리합니다. 팀 또는 애플리케이션에 배포하는 물리적 AKS 클러스터 수를 최소화합니다.

논리적 격리를 사용하면 여러 워크로드, 팀 또는 환경에 단일 AKS 클러스터를 사용할 수 있습니다. Kubernetes 네임스페이스는 워크로드 및 리소스의 논리적 격리 경계를 형성합니다.

Logical isolation of a Kubernetes cluster in AKS

클러스터의 논리적 분리는 일반적으로 물리적으로 격리된 클러스터보다 더 높은 Pod 밀도를 제공하며, 과도한 컴퓨팅 용량이 클러스터에서 유휴 상태로 유지됩니다. Kubernetes 클러스터 자동 크기 조정기와 결합된 경우에는 요구에 맞게 노드 수를 강화 또는 규모 축소할 수 있습니다. 이 모범 사례 방법은 필요한 수의 노드만 실행하여 비용을 최소화합니다.

Kubernetes 환경은 악의적인 다중 테넌트 사용에 대해 아주 안전하지는 않습니다. 다중 테넌트 환경에서 여러 테넌트는 공유 인프라에서 작동합니다. 모든 테넌트를 신뢰할 수 없는 경우 테넌트가 다른 테넌트의 보안 및 서비스에 영향을 미치지 않도록 추가 계획이 필요합니다.

노드에 대한 Kubernetes RBAC 등의 다른 보안 기능은 악용을 효율적으로 차단합니다. 악의적인 다중 테넌트 작업을 실행할 때 진정한 보안이 적용되도록 하려면 하이퍼바이저만 신뢰해야 합니다. Kubernetes의 보안 도메인은 개별 노드가 아닌 전체 클러스터가 됩니다.

이러한 유형의 악의적인 다중 테넌트 워크로드의 경우 물리적으로 격리된 클러스터를 사용해야 합니다.

물리적으로 격리된 클러스터

모범 사례 지침

각 개별 팀 또는 애플리케이션 배포에 대한 물리적 격리 사용을 최소화하고 대신 논리적 격리를 사용합니다.

AKS 클러스터를 물리적으로 분리하는 것은 클러스터 격리에 대한 일반적인 접근 방식입니다. 이 격리 모델에서는 팀 또는 워크로드에 자체 AKS 클러스터가 할당됩니다. 물리적 격리는 워크로드 또는 팀을 격리하는 가장 쉬운 방법처럼 보일 수 있지만 관리 및 재무 오버헤드를 추가합니다. 물리적으로 격리된 클러스터를 사용하면 여러 클러스터를 유지 관리하고 개별적으로 액세스를 제공하고 권한을 할당해야 합니다. 또한 각 개별 노드에 대한 요금이 청구됩니다.

Physical isolation of individual Kubernetes clusters in AKS

물리적으로 격리된 클러스터는 일반적으로 Pod 밀도가 낮습니다. 각 팀 또는 워크로드에는 고유한 AKS 클러스터가 있으므로 클러스터는 대개 컴퓨팅 리소스를 사용하여 초과 프로비저닝됩니다. 종종 해당 노드에서 소수의 Pod가 예약됩니다. 요청되지 않은 노드 용량은 다른 팀에서 개발한 애플리케이션 또는 서비스에 사용할 수 없습니다. 이러한 초과 리소스는 물리적으로 격리된 클러스터에서 추가 비용을 발생합니다.

다음 단계

이 문서에서는 클러스터 격리를 중점적으로 설명했습니다. AKS의 클러스터 작업에 대한 자세한 내용은 다음 모범 사례 문서를 참조하세요.