이 문서에서는 ResourcePlacement Azure Kubernetes Fleet Manager를 사용하여 멤버 클러스터에서 네임스페이스 범위 Kubernetes 리소스를 세밀하게 제어할 수 있는 API에 대해 설명합니다.
중요합니다
Azure Kubernetes Fleet Manager 미리 보기 기능은 셀프 서비스, 옵트인 기반으로 제공됩니다. 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. Azure Kubernetes Fleet Manager 미리 보기의 일부는 고객 지원팀에서 최선을 다해 지원합니다. 따라서 이러한 기능은 프로덕션 용도로 사용할 수 없습니다.
개요
ResourcePlacement 는 네임스페이스 범위 리소스의 동적 선택 및 다중 클러스터 전파를 가능하게 하는 네임스페이스 범위 API입니다. 네임스페이스 내의 특정 리소스가 플릿의 멤버 클러스터에 분산되는 방식을 세밀하게 제어할 수 있습니다.
중요합니다
ResourcePlacement 는 placement.kubernetes-fleet.io/v1beta1 API 버전을 사용하며 현재 미리 보기로 제공됩니다. 이 문서에서 설명한 일부 기능(예: selectionScopeClusterResourcePlacementv1beta1 API)도 v1beta1 API의 일부이며 v1 API에서 사용할 수 없습니다.
주요 특징:
-
네임스페이스 범위: 관리하는 개체와 리소스가 모두
ResourcePlacement동일한 네임스페이스 내에 있습니다. - 선택적: 전체 네임스페이스가 아닌 형식, 이름 또는 레이블별로 특정 리소스를 대상으로 지정할 수 있습니다.
-
선언적: 일관된 동작과
ClusterResourcePlacement동일한 배치 패턴을 사용합니다.
A는 ResourcePlacement 세 가지 핵심 구성 요소로 구성됩니다.
- 리소스 선택기: 포함할 네임스페이스 범위 리소스를 정의합니다.
-
배치 정책:
PickAllPickFixed또는PickN전략을 사용하여 대상 클러스터를 결정합니다. - 롤아웃 전략: 선택한 클러스터에서 변경 내용이 전파되는 방식을 제어합니다.
ResourcePlacement를 사용하는 경우
ResourcePlacement 는 네임스페이스 범위 리소스를 세부적으로 제어해야 하는 시나리오에 적합합니다.
- 선택적 리소스 배포: 전체 네임스페이스에 영향을 주지 않고 특정 ConfigMaps, 비밀 또는 서비스를 배포합니다.
- 다중 테넌트 환경: 서로 다른 팀이 공유 네임스페이스 내에서 독립적으로 리소스를 관리할 수 있도록 허용합니다.
- 구성 관리: 다양한 클러스터 환경에 환경별 구성을 배포합니다.
- 규정 준수 및 거버넌스: 동일한 네임스페이스 내의 다양한 리소스 종류에 다른 정책을 적용합니다.
- 점진적 출시: 가동 중지 시간 전략이 없는 클러스터 간에 리소스 업데이트를 안전하게 배포합니다.
다중 클러스터 환경에서 워크로드는 종종 서로 다른 클러스터에 분산되어야 하는 클러스터 범위 및 네임스페이스 범위 리소스로 구성됩니다. CRP는 클러스터 범위 리소스 및 전체 네임스페이스와 그 내용을 효과적으로 처리할 수 있지만, 기존 네임스페이스 내에서 네임스페이스 범위 리소스를 보다 세부적으로 제어해야 하는 경우도 있습니다.
ResourcePlacement (RP)는 다음을 제공하여 이 격차를 해결하도록 설계되었습니다.
- 네임스페이스 범위 리소스 관리: 전체 네임스페이스에 영향을 주지 않고 네임스페이스 내의 특정 리소스를 대상으로 합니다.
- 운영 유연성: 팀이 동일한 네임스페이스 내에서 서로 다른 리소스를 독립적으로 관리할 수 있도록 허용합니다.
- 보완 기능: CRP와 함께 작동하여 완전한 다중 클러스터 리소스 관리 솔루션을 제공합니다.
비고
ResourcePlacement 는 네임스페이스 전용 모드에서 함께 ClusterResourcePlacement 사용할 수 있습니다. 예를 들어 CRP를 사용하여 네임스페이스를 배포하는 한편, 환경별 ConfigMaps 또는 해당 네임스페이스 내의 비밀과 같은 특정 리소스를 세밀하게 관리하기 위해 RP를 사용할 수 있습니다.
실제 네임스페이스 사용 패턴
CRP는 네임스페이스가 애플리케이션 경계를 나타낸다고 가정하지만 실제 사용 패턴은 더 복잡한 경우가 많습니다. 조직에서는 애플리케이션 경계가 아닌 팀 경계로 네임스페이 ResourcePlacement 스를 자주 사용하므로 다음과 같은 몇 가지 문제가 직접 해결됩니다.
다중 애플리케이션 네임스페이스: 많은 조직에서 단일 네임스페이스는 동일한 팀이 소유한 여러 독립 애플리케이션을 포함합니다. 이러한 애플리케이션에는 다음이 있을 수 있습니다.
- 다양한 수명 주기 요구 사항(한 애플리케이션은 자주 업데이트해야 하는 반면 다른 애플리케이션은 안정적으로 유지됨).
- 클러스터 배치 요구 사항(개발 및 프로덕션 애플리케이션)이 다릅니다.
- 독립적인 크기 조정 및 리소스 요구 사항.
- 규정 준수 또는 거버넌스 요구 사항을 구분합니다.
개별 일정 결정: 많은 워크로드, 특히 AI/ML 작업에는 개별 일정 결정이 필요합니다.
- AI 작업: 기계 학습 워크로드는 클러스터 리소스 가용성, GPU 가용성 또는 데이터 지역성에 따라 예약해야 하는 수명이 짧은 리소스 집약적 작업으로 구성되는 경우가 많습니다.
- 일괄 처리 워크로드: 동일한 네임스페이스 내의 다른 일괄 처리 작업은 계산 요구 사항에 따라 서로 다른 클러스터 유형을 대상으로 할 수 있습니다.
완전한 애플리케이션 팀 제어: ResourcePlacement 플랫폼 팀의 개입 없이도 애플리케이션 팀이 리소스 배치를 직접 제어할 수 있도록 합니다.
- 셀프 서비스 운영: 팀은 자체 리소스 배포 전략을 관리할 수 있습니다.
- 독립 배포 주기: 네임스페이스 내의 다른 애플리케이션에는 독립적인 롤아웃 일정이 있을 수 있습니다.
- 세분화된 재정의 기능: Teams는 네임스페이스의 다른 애플리케이션에 영향을 주지 않고 클러스터당 리소스 구성을 사용자 지정할 수 있습니다.
이 세분화된 접근 방식을 통해 ResourcePlacement Fleet 일정 프레임워크의 단순성과 기능을 유지하면서 다양한 조직 구조 및 워크로드 패턴에 적응할 수 있습니다.
ResourcePlacement와 ClusterResourcePlacement의 주요 차이점
다음 표에서는 다음과 같은 주요 차이점을 강조 표시합니다ResourcePlacement.ClusterResourcePlacement
| 측면 | ResourcePlacement(RP) | 클러스터리소스배치(CRP) |
|---|---|---|
| Scope | 네임스페이스로 범위가 지정된 리소스만 | 클러스터 범위 리소스(특히 네임스페이스 및 해당 콘텐츠) |
| Resource | 네임스페이스로 범위 지정된 API 객체 | 클러스터 스코프 API 오브젝트 |
| 선택 경계 | RP와 동일한 네임스페이스 내의 리소스로 제한됨 | 클러스터 범위 리소스를 선택할 수 있습니다. |
| 일반적인 사용 사례 | AI/ML 작업, 개별 워크로드, 독립적인 배치 결정이 필요한 특정 ConfigMaps/비밀 | 애플리케이션 번들, 전체 네임스페이스, 클러스터 전체 정책 |
| 팀 소유권 | 네임스페이스 소유자/개발자가 관리할 수 있습니다. | 일반적으로 플랫폼 운영자가 관리 |
ResourcePlacement 둘 다 ClusterResourcePlacement 차이점 테이블에 나열되지 않은 다른 모든 측면에 대해 동일한 핵심 기능을 공유합니다.
ClusterResourcePlacement와 함께 작업하기
ResourcePlacement 는 완전한 다중 클러스터 리소스 관리 솔루션을 제공하기 위해 CRP(와)와 ClusterResourcePlacement 함께 작동하도록 설계되었습니다. 이 관계를 이해하는 것은 효과적인 함대 관리에 매우 중요합니다.
네임스페이스 필수 구성 요소
중요합니다
ResourcePlacement 는 이미 대상 네임스페이스가 있는 클러스터에만 네임스페이스 범위 리소스를 배치할 수 있습니다. 네임스페이스 설정에 사용하는 ClusterResourcePlacement 것이 좋습니다.
일반적인 워크플로:
-
플랫폼 관리자: 플릿 전체에 네임스페이스를 배포하는 데 사용합니다
ClusterResourcePlacement. -
애플리케이션 팀: 설정된 네임스페이스 내에서 특정 리소스를 관리하는 데 사용합니다
ResourcePlacement.
다음 예제에서는 CRP 및 RP를 조정하는 방법을 보여 줍니다.
비고
다음 예제에서는 API 버전을 사용합니다 placement.kubernetes-fleet.io/v1beta1 . 이 selectionScope: NamespaceOnly 필드는 v1beta1에서 사용할 수 있는 미리 보기 기능이며 v1 API에서는 사용할 수 없습니다.
플랫폼 관리자: 먼저 다음을 사용하여 ClusterResourcePlacement네임스페이스를 만듭니다.
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: app-namespace-crp
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
selectionScope: NamespaceOnly # only namespace itself is placed, no resources within the namespace
policy:
placementType: PickAll # If placement type is not PickAll, the application teams needs to know what are the clusters they can place their applications.
애플리케이션 팀: 다음을 사용하여 네임스페이스 내의 특정 리소스를 ResourcePlacement관리합니다.
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: app-configs-rp
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
모범 사례
ResourcePlacement와 ClusterResourcePlacement를 사용할 때 다음 모범 사례를 따르세요.
-
먼저 네임스페이스 설정: 개체를 만들기
ResourcePlacement전에 항상 CRP를 통해 네임스페이스를 배포해야 합니다. - 종속성 모니터링: 종속 RP를 배포하기 전에 플릿 모니터링을 사용하여 네임스페이스 수준 CRP가 정상인지 확인합니다.
- 좌표 정책: 충돌을 방지하기 위해 CRP 및 RP 배치 정책을 정렬합니다(예: CRP가 클러스터 A, B, C, RP에 네임스페이스를 배치하는 경우 해당 클러스터의 하위 집합을 대상으로 지정할 수 있습니다).
- 팀 경계: 플랫폼 관리 리소스(네임스페이스, RBAC)에 CRP를 사용하고, 애플리케이션 관리 리소스(앱 구성, 비밀)에는 RP를 사용합니다.
이 조정된 접근 방식은 플랫폼 운영자가 ResourcePlacement 관리하는 기본 인프라를 유지하면서 팀이 필요로 하는 유연성을 제공합니다.
리소스 선택, 배치 및 롤아웃
ResourcePlacement는 다음과 동일한 배치 패턴을 사용합니다.ClusterResourcePlacement
-
배치 유형:
PickAll,PickFixed및PickN전략은 두 API에 대해 동일하게 작동합니다. - 롤아웃 전략: 동일한 롤링 업데이트 메커니즘을 사용하여 업데이트가 클러스터 간에 전파되는 방식을 제어합니다.
-
상태 및 관찰 가능성: 를 사용하여
kubectl describe resourceplacement <name> -n <namespace>배포 진행률을 모니터링합니다. - 고급 기능: 톨러레이션, 리소스 재정의, 토폴로지 확산 제약 조건 및 선호도 규칙을 사용합니다.
주요 차이점은 리소스 선택 범위입니다. 일반적으로 전체 네임스페이스 및 해당 콘텐츠를 ClusterResourcePlacement 선택하지만 ResourcePlacement 개별 네임스페이스 범위 리소스에 대한 세분화된 제어를 제공합니다.
이러한 기능에 대한 자세한 내용은 ClusterResourcePlacement 설명서를 참조하세요.