1.14. ManagedClusterSets 생성 및 관리
ManagedClusterSet
은 관리형 클러스터 그룹입니다. 관리형 클러스터 세트를 사용하면 그룹의 모든 관리형 클러스터에 대한 액세스를 함께 관리할 수 있습니다. ManagedClusterSetBinding
리소스를 생성하여 ManagedClusterSet
리소스를 네임스페이스에 바인딩할 수도 있습니다.
각 관리 클러스터는 ManagedClusterSet
의 멤버여야 합니다. hub 클러스터를 설치하면 default
라고 하는 기본 ManagedClusterSet
이 생성됩니다. 관리형 클러스터 세트에 특별히 할당되지 않은 모든 관리형 클러스터는 기본
관리 클러스터 세트에 자동으로 할당됩니다. 기본 관리 클러스터 세트를 항상 사용할 수 있도록 하려면 기본
관리 클러스터 세트를 삭제하거나 업데이트할 수 없습니다.
참고: ManagedClusterSet에 특별히 추가되지 않은 클러스터 풀은 기본
에 추가되지 않습니다. 관리형 클러스터가 클러스터 풀에서 요청되면 다른 ManagedClusterSet
ManagedClusterSet
에 특별히 추가되지 않는 경우 기본 ManagedClusterSet
에 추가됩니다.
1.14.1. ManagedClusterSet 생성
관리형 클러스터에서 함께 관리 클러스터를 그룹화하여 관리형 클러스터에서 사용자 액세스를 제한할 수 있습니다.
필수 액세스: 클러스터 관리자
ManagedClusterSet
은 클러스터 범위 리소스이므로 ManagedClusterSet
을 생성하는 클러스터의 클러스터 관리 권한이 있어야 합니다. 관리 클러스터는 둘 이상의 ManagedClusterSet
에 포함할 수 없습니다. Kubernetes 콘솔의 Red Hat Advanced Cluster Management 또는 명령줄 인터페이스에서 관리형 클러스터 세트를 생성할 수 있습니다.
1.14.1.1. 콘솔을 사용하여 ManagedClusterSet 생성
Red Hat Advanced Cluster Management 콘솔을 사용하여 설정된 관리형 클러스터를 생성하려면 다음 단계를 완료합니다.
- 기본 콘솔 탐색에서 인프라 > 클러스터를 선택하고 클러스터 설정 탭이 선택되었는지 확인합니다.
- 클러스터 세트 만들기 를 선택하고 클러스터 세트의 이름을 입력합니다.
1.14.1.2. 명령줄을 사용하여 ManagedClusterSet 생성
관리형 클러스터 세트의 다음 정의를 yaml
파일에 추가하여 명령줄을 사용하여 관리되는 클러스터 세트를 생성합니다.
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: ManagedClusterSet metadata: name: <clusterset1>
clusterset1
을 관리 클러스터 세트의 이름으로 교체합니다.
1.14.2. ManagedClusterSet에 사용자 또는 그룹 역할 기반 액세스 제어 권한 할당
hub 클러스터에서 구성된 ID 공급자가 제공하는 사용자 또는 그룹을 클러스터에 할당할 수 있습니다.
필수 액세스 권한: 클러스터 관리자
ManagedClusterSet
API는 두 가지 수준의 RBAC 권한을 제공합니다.
클러스터 세트
관리자
- 관리 클러스터 세트에 할당된 모든 클러스터 및 클러스터 풀 리소스에 대한 전체 액세스 권한입니다.
- 클러스터를 생성하고, 클러스터를 가져오고, 클러스터 풀을 생성할 수 있는 권한입니다. 관리 클러스터 세트가 생성될 때 권한을 관리 클러스터에 할당해야 합니다.
클러스터 세트
보기
- 관리 클러스터 세트에 할당된 모든 클러스터 및 클러스터 풀 리소스에 대한 권한만 읽습니다.
- 클러스터를 생성하거나 클러스터를 가져오거나 클러스터 풀을 생성할 수 있는 권한이 없습니다.
Red Hat Advanced Cluster Management 콘솔에서 관리형 클러스터에 사용자 또는 그룹을 할당하려면 다음 단계를 완료합니다.
- 콘솔의 메인 탐색 메뉴에서 인프라 > 클러스터를 선택합니다.
- 클러스터 세트 탭을 선택합니다.
- 대상 클러스터 세트를 선택합니다.
- 액세스 관리 탭을 선택합니다.
- 사용자 또는 그룹 추가를 선택합니다.
- 액세스 권한을 검색하고 제공할 사용자 또는 그룹을 선택합니다.
- Cluster set admin 또는 Cluster set view 역할을 선택하여 선택한 사용자 또는 사용자 그룹에 제공합니다. 역할 권한에 대한 자세한 내용은 역할 개요 를 참조하십시오.
- 추가 를 선택하여 변경 사항을 제출합니다.
사용자 또는 그룹이 테이블에 표시됩니다. 모든 관리 클러스터 세트 리소스가 사용자 또는 그룹에 전파되도록 권한 할당에 대해 권한 할당이 몇 초 정도 걸릴 수 있습니다.
역할 기반 작업에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하십시오.
배치 정보는 ManagedClusterSets를 배치와 함께 사용을 참조하십시오.
1.14.2.1. ManagedClusterSetBinding 리소스 생성
ManagedClusterSetBinding
리소스를 생성하여 ManagedClusterSet
리소스를 네임스페이스에 바인딩합니다. 동일한 네임스페이스에서 생성되는 애플리케이션 및 정책은 바인딩된 관리형 클러스터 세트 리소스에 포함된 관리형 클러스터에만 액세스할 수 있습니다.
네임스페이스에 대한 액세스 권한은 해당 네임스페이스에 바인딩된 관리형 클러스터 세트에 자동으로 적용됩니다. 관리 클러스터 세트가 바인딩된 네임스페이스에 액세스할 수 있는 액세스 권한이 있는 경우 해당 네임스페이스에 바인딩된 모든 관리 클러스터 세트에 액세스할 수 있는 권한이 자동으로 부여됩니다. 그러나 관리형 클러스터 세트에 액세스할 수 있는 권한만 있는 경우 해당 네임스페이스의 다른 관리 클러스터 세트에 액세스할 수 있는 권한이 자동으로 없습니다. 관리형 클러스터 세트가 표시되지 않으면 이를 확인하는 데 필요한 권한이 없을 수 있습니다.
콘솔 또는 명령줄을 사용하여 관리형 클러스터 세트 바인딩을 생성할 수 있습니다.
1.14.2.1.1. 콘솔을 사용하여 ManagedClusterSetBinding 생성
Red Hat Advanced Cluster Management 콘솔을 사용하여 설정된 관리형 클러스터에서 클러스터를 제거하려면 다음 단계를 완료합니다.
- 기본 탐색에서 인프라 > 클러스터를 선택하고 클러스터 세트 탭을 선택하여 클러스터 페이지에 액세스합니다.
- 클러스터 세트 세부 정보를 보려면 바인딩을 생성할 클러스터 세트의 이름을 선택합니다.
- 작업 > 네임스페이스 바인딩 편집 을 선택합니다.
- 네임스페이스 바인딩 편집 페이지의 드롭다운 메뉴에서 클러스터 세트를 바인딩할 네임스페이스를 선택합니다. 클러스터 세트에 대한 바인딩이 있는 기존 네임스페이스가 이미 선택되어 있습니다.
1.14.2.1.2. 명령줄을 사용하여 ManagedClusterSetBinding 생성
명령줄을 사용하여 관리형 클러스터 세트 바인딩을 생성하려면 다음 단계를 완료합니다.
yaml
파일에ManagedClusterSetBinding
리소스를 생성합니다. 관리형 클러스터 세트 바인딩을 생성할 때 관리형 클러스터 세트 바인딩의 이름이 바인딩되도록 관리형 클러스터 세트의 이름과 일치해야 합니다.ManagedClusterSetBinding
리소스는 다음 정보와 유사합니다.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: ManagedClusterSetBinding metadata: namespace: project1 name: clusterset1 spec: clusterSet: clusterset1
대상 관리 클러스터에 대한 바인딩 권한이 설정되어 있는지 확인합니다. 사용자가
clusterset1
에 바인딩할 수 있는 규칙이 포함된ClusterRole
리소스의 다음 예제를 봅니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: clusterrole1 rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/bind"] resourceNames: ["clusterset1"] verbs: ["create"]
1.14.3. ManagedClusterSet에 클러스터 추가
ManagedClusterSet
을 생성한 후 하나 이상의 관리 클러스터를 추가해야 합니다. 콘솔 또는 명령줄을 사용하여 설정된 관리형 클러스터를 관리 클러스터에 추가할 수 있습니다.
1.14.3.1. 콘솔을 사용하여 ManagedClusterSet에 클러스터 추가
Red Hat Advanced Cluster Management 콘솔을 사용하여 설정된 관리형 클러스터에 클러스터를 추가하려면 다음 단계를 완료합니다.
- 관리형 클러스터 세트를 방금 만든 경우 리소스 할당 관리를 선택하여 리소스 할당 관리 페이지로 직접 이동합니다. 이 절차의 6단계를 계속 진행합니다.
- 클러스터가 이미 존재하는 경우 기본 탐색에서 인프라 > 클러스터를 선택하여 클러스터 페이지에 액세스합니다.
- 사용 가능한 클러스터 세트를 보려면 클러스터 세트 탭을 선택합니다.
- 클러스터 세트 세부 정보를 보려면 관리형 클러스터 세트에 추가할 클러스터 세트의 이름을 선택합니다.
- 작업 > 리소스 할당 관리를 선택합니다.
- 리소스 할당 관리 페이지에서 클러스터 세트에 추가할 리소스의 확인란을 선택합니다.
- 검토를 선택하여 변경 사항을 검토합니다.
저장 을 선택하여 변경 사항을 저장합니다.
참고: 관리 대상 클러스터에서 다른 클러스터로 설정된 관리형 클러스터를 이동하는 경우 두 관리 클러스터 세트 모두에서 필요한 RBAC 권한을 사용할 수 있어야 합니다.
1.14.3.2. 명령줄을 사용하여 ManagedClusterSet에 클러스터 추가
명령줄을 사용하여 설정된 관리형 클러스터에 클러스터를 추가하려면 다음 단계를 완료합니다.
managedclustersets/join
의 가상 하위 리소스에서 생성할 수 있는 RBACClusterRole
항목이 있는지 확인합니다. 이 권한이 없으면 관리 클러스터를ManagedClusterSet
에 할당할 수 없습니다.이 항목이 없으면
yaml
파일에 추가합니다. 샘플 항목은 다음 내용과 유사합니다.kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: clusterrole1 rules: - apiGroups: ["cluster.open-cluster-management.io"] resources: ["managedclustersets/join"] resourceNames: ["<clusterset1>"] verbs: ["create"]
clusterset1
을ManagedClusterSet
의 이름으로 교체합니다.참고: 관리 클러스터를 하나의
ManagedClusterSet
에서 다른 클러스터로 이동하는 경우 두 관리 클러스터 세트 모두에서 사용 가능한 권한이 있어야 합니다.yaml
파일에서 관리 클러스터의 정의를 찾습니다. 레이블을 추가하는 관리형 클러스터 정의의 섹션은 다음 내용과 유사합니다.apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true
이 예제에서
cluster1
은 관리 클러스터의 이름입니다.ManagedClusterSet
의 이름을cluster.open-cluster-management.io/clusterset: clusterset1
형식으로 지정하는 레이블을 추가합니다.코드는 다음 예와 유사합니다.
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 labels: cluster.open-cluster-management.io/clusterset: clusterset1 spec: hubAcceptsClient: true
이 예에서
cluster1
은 관리형 클러스터 세트 이름clusterset1
에 추가된 클러스터입니다.참고: 관리형 클러스터가 삭제된 관리형 클러스터 세트에 이전에 할당된 경우 관리 클러스터에 존재하지 않는 클러스터 세트에 이미 지정된 관리형 클러스터 세트가 있을 수 있습니다. 이 경우 이름을 새 이름으로 바꿉니다.
1.14.4. ManagedClusterSet에서 관리형 클러스터 제거
관리형 클러스터 세트에서 관리 클러스터를 제거하여 다른 관리 클러스터 세트로 이동하거나 세트의 관리 설정에서 제거할 수 있습니다. 콘솔 또는 명령줄 인터페이스를 사용하여 설정된 관리형 클러스터에서 관리형 클러스터를 제거할 수 있습니다.
참고: 관리되는 모든 클러스터는 관리형 클러스터 세트에 할당해야 합니다. ManagedClusterSet
에서 관리 클러스터를 제거하고 다른 ManagedClusterSet
에 할당하지 않으면 기본
관리형 클러스터 세트에 자동으로 추가됩니다.
1.14.4.1. 콘솔을 사용하여 ManagedClusterSet에서 관리 클러스터 제거
Red Hat Advanced Cluster Management 콘솔을 사용하여 설정된 관리형 클러스터에서 클러스터를 제거하려면 다음 단계를 완료합니다.
- 관리형 클러스터 세트를 방금 만든 경우 리소스 할당 관리를 선택하여 리소스 할당 관리 페이지로 직접 이동합니다. 이 절차의 5단계를 계속 진행합니다.
- 클러스터가 이미 존재하는 경우 기본 탐색에서 인프라 > 클러스터를 선택하고 클러스터 설정 탭이 선택되어 있는지 확인하여 클러스터 페이지에 액세스합니다.
- 클러스터 세트 세부 정보를 보려면 관리형 클러스터에서 제거할 클러스터 세트의 이름을 선택합니다.
- 작업 > 리소스 할당 관리를 선택합니다.
리소스 할당 관리 페이지에서 클러스터 세트에서 제거할 리소스의 확인란을 선택합니다.
이 단계에서는 이미 클러스터 세트의 멤버인 리소스를 제거하거나 클러스터 세트의 멤버가 아닌 리소스를 추가합니다. 관리 클러스터의 세부 정보를 확인하여 리소스가 이미 클러스터 세트의 멤버인지 확인할 수 있습니다.
참고: 관리 대상 클러스터에서 다른 클러스터로 설정된 관리 클러스터를 이동하는 경우 두 관리 클러스터 세트에 대해 필요한 RBAC 권한이 있어야 합니다.
1.14.4.2. 명령줄을 사용하여 ManagedClusterSet에서 클러스터 제거
명령줄을 사용하여 설정된 관리형 클러스터에서 관리형 클러스터를 제거하려면 다음 단계를 완료하십시오.
다음 명령을 실행하여 관리형 클러스터 세트의 관리형 클러스터 목록을 표시합니다.
oc get managedclusters -l cluster.open-cluster-management.io/clusterset=<clusterset1>
clusterset1
을 관리 클러스터 세트의 이름으로 교체합니다.- 제거할 클러스터의 항목을 찾습니다.
제거할 클러스터의
yaml
항목에서 레이블을 제거합니다. 레이블 예제는 다음 코드를 참조하십시오.labels: cluster.open-cluster-management.io/clusterset: clusterset1
참고: 관리 대상 클러스터에서 다른 클러스터로 설정된 관리 클러스터를 이동하는 경우 두 관리 클러스터 세트 모두에서 필요한 RBAC 권한을 사용할 수 있어야 합니다.
1.14.5. 배치와 함께 ManagedClusterSets 사용
배치 리소스는 배치
네임스페이스에 바인딩된 ManagedClusterSets
에서 ManagedClusters
세트를 선택하는 규칙을 정의하는 네임스페이스 범위 리소스입니다.
필수 액세스: 클러스터 관리자, 클러스터 세트 관리자
1.14.5.1. 배치 개요
관리형 클러스터의 배치 작동 방식에 대한 다음 정보를 참조하십시오.
-
Kubernetes 클러스터는 클러스터 범위의
ManagedClusters
로 허브 클러스터에 등록됩니다. -
ManagedClusters
는 클러스터 범위ManagedClusterSets
로 구성됩니다. -
ManagedClusterSets
는 워크로드 네임스페이스에 바인딩됩니다. -
네임스페이스 범위
배치는 잠재적인
의 작업 세트를 선택하는ManagedClusters
ManagedClusterSets
의 일부를 지정합니다. 배치는
레이블 및 클레임 선택기를 사용하여 해당 작업 세트에서 선택합니다.중요:
배치
네임스페이스에 바인딩된ManagedCluster
Set-
ManagedClusters
배치는 테인트 및 톨러레이션을 사용하여 제어할 수 있습니다. 자세한 내용은 테인트 및 허용 오차를 사용하여 관리 클러스터 배치를 참조하십시오.
배치
사양에는 다음 필드가 포함됩니다.
ClusterSets
는ManagedClusters
가 선택된ManagedClusterSets
를 나타냅니다.-
지정하지 않으면 배치 네임스페이스에 바인딩된
ManagedClusterSets
에서ManagedClusters
가 선택됩니다. -
지정된 경우 이 세트의 교집합에서
ManagedClusters
가 선택되고 placement 네임스페이스에 바인딩된ManagedClusterSets
가 선택됩니다.
-
지정하지 않으면 배치 네임스페이스에 바인딩된
NumberOfClusters
는 배치 요구 사항을 충족하는 원하는ManagedClusters
수를 나타냅니다.지정하지 않으면 배치 요구 사항을 충족하는 모든
ManagedClusters
가 선택됩니다.-
서술자
는 레이블 및 클레임 선택기가 있는ManagedClusters
를 선택하는 서술자 슬라이스를 나타냅니다. 서술자는 ORed입니다. prioritizerPolicy
는 우선순위 정책을 나타냅니다.모드는
Exact
,Additive
,""
입니다. 여기서""
는 기본적으로Additive
입니다.-
Additive
모드에서는 구성 값이 특별히 제공되지 않는 모든 우선순위가 기본 구성으로 활성화됩니다. 현재 기본 구성에서 CloudEvent ady 및 Balance 우선순위에는 가중치가 1이고 다른 우선순위는 0입니다. 나중에 기본 구성이 변경될 수 있으므로 우선순위가 변경될 수 있습니다.추가
모드에서는 우선순위를 모두 구성할 필요가 없습니다. -
Exact
모드에서 구성 값과 함께 특별히 제공되지 않는 모든 우선순위에는 가중치가 0입니다.exact
모드를 사용하려면 원하는 우선순위의 전체 세트를 입력해야 하지만 릴리스 간 동작 변경은 방지할 수 있습니다.
-
구성은
우선순위 지정자의 구성을 나타냅니다.scoreCoordinate는 우선순위 및 점수 소스의 구성을 나타냅니다.
-
type
은 우선순위가 높은 점수의 유형을 정의합니다. 유형은BuiltIn
,AddOn
," "
, 여기서" "
는 기본적으로BuiltIn
입니다. 유형이BuiltIn
인 경우 내장 우선 순위 이름 을 지정해야 합니다. 유형이AddOn
인 경우AddOn
에서 점수 소스를 구성해야 합니다. builtin은 BuiltIn
우선순위r의 이름을 정의합니다. 다음 목록에는 유효한BuiltIn
우선순위 지정자 이름이 포함되어 있습니다.- 균형: 클러스터 간 결정에 균형을 유지합니다.
- steady: 기존 결정이 안정되었는지 확인합니다.
- ResourceAllocatableCPU 및 ResourceAllocatableMemory: 할당 가능한 리소스를 기반으로 클러스터를 정렬합니다.
Addon
은 리소스 이름과 점수 이름을 정의합니다.AddOnPlacementScore
는 애드온 점수를 설명하기 위해 도입되었습니다. 자세한 내용은 확장 가능 예약을 참조하십시오.-
resourceName
은AddOnPlacementScore
의 리소스 이름을 정의합니다. 배치 우선순위는 이 이름으로AddOnPlacementScore
사용자 정의 리소스를 선택합니다. -
scoreName
은AddOnPlacementScore
내부의 점수 이름을 정의합니다.AddOnPlacementScore
에는 점수 이름 목록과 점수 값이 포함되어 있습니다.scoreName
은 우선순위에서 사용할 점수를 지정합니다.
-
-
-
weight
는 우선순위의 가중치를 정의합니다. 값은 [-10,10] 범위에 있어야 합니다. 각 우선순위는 [-100, 100] 범위에서 클러스터의 정수 점수를 계산합니다. 클러스터의 최종 점수는 다음 공식합계(weight * priorityr_score)
에 따라 결정됩니다. 가중치가 높아지면 우선 순위가 클러스터 선택에서 더 높은 가중치를 수신하지만 가중치 0은 우선순위가 비활성화되었음을 나타냅니다. 음수 가중치는 마지막 선택된 항목 중 하나임을 나타냅니다.
참고: configurations.name
파일은 v1beta1에서 제거되고 scoreCoordinate.builtIn
파일로 대체됩니다. name
및 scoreCoordinate.builtIn
이 모두 정의된 경우 scoreCoordinate.builtIn
의 값을 사용하여 선택을 결정합니다.
1.14.5.2. 배치 예
해당 네임스페이스에서
을 생성하여 하나 이상의 ManagedClusterSet을 네임스페이스에 바인딩해야 합니다. 참고: ManagedClusterSet
Bindingmanagedclustersets/bind
의 가상 하위 리소스에서 CREATE
에 대한 역할 기반 액세스가 필요합니다. 다음 예제를 참조하십시오.
labelSelector
를 사용하여ManagedClusters
를 선택할 수 있습니다.labelSelector
만 라벨공급 업체의 클러스터와 일치하는 다음 샘플을 참조하십시오. OpenShift :
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement1 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift
claimSelector
를 사용하여ManagedClusters
를 선택할 수 있습니다.claimSelector
만region.open-cluster-management.io
와us-west-1
과 일치하는 다음 샘플을 참조하십시오.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement2 namespace: ns1 spec: predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
특정
clusterSets
에서ManagedClusters
를 선택할 수 있습니다.claimSelector
만clusterSets:
clusterset1
clusterset2
와 일치하는 다음 샘플을 참조하십시오.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement3 namespace: ns1 spec: clusterSets: - clusterset1 - clusterset2 predicates: - requiredClusterSelector: claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
원하는 수의
ManagedClusters
를 선택합니다.numberOfClusters
가3
인 다음 샘플을 참조하십시오.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement4 namespace: ns1 spec: numberOfClusters: 3 predicates: - requiredClusterSelector: labelSelector: matchLabels: vendor: OpenShift claimSelector: matchExpressions: - key: region.open-cluster-management.io operator: In values: - us-west-1
가장 큰 할당 가능 메모리가 있는 클러스터를 선택합니다.
참고: Kubernetes Node Allocatable 과 달리 '모든 할당 가능'은 각 클러스터의 Pod에 사용할 수 있는 컴퓨팅 리소스의 양으로 정의됩니다.
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement6 namespace: ns1 spec: numberOfClusters: 1 prioritizerPolicy: configurations: - scoreCoordinate: builtIn: ResourceAllocatableMemory
할당 가능한 가장 큰 CPU 및 메모리가 있는 클러스터를 선택하고 리소스 변경에 민감하게 배치합니다.
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement7 namespace: ns1 spec: numberOfClusters: 1 prioritizerPolicy: configurations: - scoreCoordinate: builtIn: ResourceAllocatableCPU weight: 2 - scoreCoordinate: builtIn: ResourceAllocatableMemory weight: 2
할당 가능한 가장 큰 메모리와 가장 큰 애드온 점수 cpu 비율이 있는 두 클러스터를 선택하고 배치 결정을 고정합니다.
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement8 namespace: ns1 spec: numberOfClusters: 2 prioritizerPolicy: mode: Exact configurations: - scoreCoordinate: builtIn: ResourceAllocatableMemory - scoreCoordinate: builtIn: Steady weight: 3 - scoreCoordinate: type: AddOn addOn: resourceName: default scoreName: cpuratio
1.14.5.3. 배치 결정
cluster.open-cluster-management.io/placement name}
레이블이 있는 하나 이상의
를 나타냅니다.
Placement
Decision s
가 생성되어 배치에서 선택한 ManagedCluster
ManagedCluster
를 선택하고
에 추가하면 이 배치를 사용하는 구성 요소가 이 Placement
DecisionManagedCluster
에 워크로드를 적용할 수 있습니다. ManagedCluster
가 더 이상 선택되지 않고 PlacementDecisions
에서 제거된 후 이 ManagedCluster
에 적용되는 워크로드를 적절하게 제거해야 합니다.
다음 PlacementDecision
샘플을 참조하십시오.
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: PlacementDecision metadata: labels: cluster.open-cluster-management.io/placement: placement1 name: placement1-kbc7q namespace: ns1 ownerReferences: - apiVersion: cluster.open-cluster-management.io/v1beta1 blockOwnerDeletion: true controller: true kind: Placement name: placement1 uid: 05441cf6-2543-4ecc-8389-1079b42fe63e status: decisions: - clusterName: cluster1 reason: '' - clusterName: cluster2 reason: '' - clusterName: cluster3 reason: ''
1.14.5.4. 애드온 상태
배포된 애드온의 상태에 따라 배치에 사용할 관리 클러스터를 선택할 수 있습니다. 예를 들어 클러스터에 활성화된 특정 추가 기능이 있는 경우에만 배치용으로 관리 클러스터를 선택하려고 합니다.
배치를 생성할 때 애드온의 라벨과 필요한 경우 상태를 지정하여 이 작업을 수행할 수 있습니다. 클러스터에서 애드온이 활성화된 경우 ManagedCluster
리소스에 레이블이 자동으로 생성됩니다. 애드온이 비활성화된 경우 라벨이 자동으로 제거됩니다.
각 애드온은 feature.open-cluster-management.io/addon-<addon-<addon_name>=<status_of_addon
> 형식의 레이블로 표시됩니다.
addon_name
을 선택할 관리 클러스터에서 활성화해야 하는 애드온의 이름으로 바꿉니다.
클러스터를 선택한 경우 status_of_addon
을 애드온에 보유해야 하는 상태로 교체합니다. status_of_addon
의 가능한 값은 다음 목록에 있습니다.
-
사용 가능
: 애드온이 활성화되어 사용 가능합니다. -
비정상
: 애드온이 활성화되어 있지만 리스가 지속적으로 업데이트되지 않습니다. -
unreachable
: 애드온이 활성화되어 있지만 리스가 없습니다. 이는 관리 클러스터가 오프라인 상태일 때도 발생할 수 있습니다.
예를 들어 사용 가능한 application-manager
애드온은 다음과 같은 관리 대상 클러스터의 레이블로 표시됩니다.
feature.open-cluster-management.io/addon-application-manager: available
애드온 및 해당 상태를 기반으로 배치를 생성하는 다음 예제를 참조하십시오.
다음 YAML 콘텐츠를 추가하여
application-manager
가 활성화된 모든 관리 클러스터를 포함하는 배치를 생성할 수 있습니다.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement1 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: feature.open-cluster-management.io/addon-application-manager operator: Exists
다음 YAML 콘텐츠를 추가하여
application-manager
가사용 가능한
상태로 활성화된 모든 관리 클러스터를 포함하는 배치를 생성할 수 있습니다.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement2 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchLabels: "feature.open-cluster-management.io/addon-application-manager": "available"
다음 YAML 콘텐츠를 추가하여
application-manager
가 비활성화된 모든 관리 클러스터를 포함하는 배치를 생성할 수 있습니다.apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement3 namespace: ns1 spec: predicates: - requiredClusterSelector: labelSelector: matchExpressions: - key: feature.open-cluster-management.io/addon-application-manager operator: DoesNotExist
1.14.5.5. 확장 가능한 예약
배치 리소스 기반 예약에서 우선순위에는 관리 클러스터의 점수를 계산하기 위해 MananagedCluster
리소스에서 제공하는 기본값보다 더 많은 데이터가 필요한 경우가 있습니다. 예를 들어 모니터링 시스템을 통해 가져온 클러스터의 CPU 또는 메모리 사용량 데이터를 기반으로 클러스터를 예약합니다.
API AddOnPlacementScore
는 사용자 정의 점수를 기반으로 보다 확장 가능한 일정을 설정하는 방법을 지원합니다.
-
placement.yaml
파일의 점수를 지정하여 클러스터를 선택할 수 있습니다. -
점수 제공자로서 타사 컨트롤러는 허브 클러스터 또는 관리 클러스터에서 실행되어
AddOnPlacementScore
의 라이프사이클을 유지하고 이에 대한 업데이트 점수를 유지할 수 있습니다.
자세한 내용은 오픈 클러스터 관리
리포지토리에서 확장 가능한 스케줄링 기능 배치를 참조하십시오.
1.14.6. 테인트 및 허용 오차를 사용하여 관리 클러스터 배치
테인트 및 톨러레이션을 사용하여 관리 클러스터 또는 관리형 클러스터 세트의 배치를 제어할 수 있습니다. 테인트 및 허용 오차는 관리 클러스터가 특정 배치에 대해 선택되지 않도록 하는 방법을 제공합니다. 특정 관리 클러스터가 일부 배치에 포함되지 않도록 하려면 이 제어가 유용할 수 있습니다. 관리형 클러스터에 테인트를 추가하고 배치에 허용 오차를 추가할 수 있습니다. 테인트 및 허용 오차가 일치하지 않으면 해당 배치에 대해 관리 클러스터가 선택되지 않습니다.
1.14.6.1. 관리형 클러스터에 테인트 추가
테인트는 관리형 클러스터의 속성에 지정되며, 배치가 관리 클러스터 또는 관리되는 클러스터 집합을 거절할 수 있습니다. 다음 예와 유사한 명령을 입력하여 관리형 클러스터에 테인트를 추가할 수 있습니다.
kubectl taint ManagedCluster <managed_cluster_name> key=value:NoSelect
테인트 사양에는 다음 필드가 포함됩니다.
-
필수 키 - 클러스터에 적용되는 테인트 키입니다. 이 값은 해당 배치에 추가되는 기준을 충족하는 관리형 클러스터의 허용 오차 값과 일치해야 합니다. 이 값을 확인할 수 있습니다. 예를 들어 이 값은
bar
또는foo.example.com/bar
일 수 있습니다. -
선택사항 값 - taint 키의 taint 값입니다. 이 값은 해당 배치에 추가되는 기준을 충족하는 관리형 클러스터의 허용 오차 값과 일치해야 합니다. 예를 들어 이 값은
value
일 수 있습니다. 필수 Effect - 테인트를 허용하지 않는 배치 또는 배치의 허용 오차가 일치하지 않을 때 발생하는 항목에 대한 테인트의 영향입니다. 효과 값은 다음 값 중 하나여야 합니다.
-
NoSelect
- 배치는 이 테인트를 허용하지 않는 한 클러스터를 선택할 수 없습니다. 테인트를 설정하기 전에 배치에 의해 클러스터를 선택하면 배치 결정에서 클러스터가 제거됩니다. -
NoSelectIfNew
- 스케줄러가 새 클러스터인 경우 클러스터를 선택할 수 없습니다. 배치는 테인트를 허용하고 클러스터가 이미 클러스터가 결정되도록 하는 경우에만 클러스터를 선택할 수 있습니다.
-
-
필수
TimeAdded
- 테인트가 추가된 시간입니다. 이 값은 자동으로 설정됩니다.
1.14.6.2. 관리형 클러스터의 상태를 반영하기 위해 기본 제공 테인트 식별
관리형 클러스터에 액세스할 수 없는 경우 클러스터를 배치에 추가하지 않도록 합니다. 다음 테인트는 액세스할 수 없는 관리형 클러스터에 자동으로 추가됩니다.
cluster.open-cluster-management.io/unavailable
- 이 테인트는 클러스터에False
상태의ManagedClusterConditionAvailable
조건이 있는 경우 관리 클러스터에 추가됩니다. 테인트는NoSelect
의 효과가 있으며, 사용할 수 없는 클러스터가 예약되지 않도록 하는 빈 값이 비어 있습니다. 이 테인트의 예는 다음 콘텐츠에 제공됩니다.apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unavailable timeAdded: '2022-02-21T08:11:54Z'
cluster.open-cluster-management.io/unreachable
- 이 테인트는ManagedClusterConditionAvailable
조건의 상태가Unknown
이거나 조건이 없는 경우 관리형 클러스터에 추가됩니다. 테인트는NoSelect
의 효과가 있으며 연결할 수 없는 클러스터가 예약되지 않도록 하는 빈 값이 비어 있습니다. 이 테인트의 예는 다음 콘텐츠에 제공됩니다.apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unreachable timeAdded: '2022-02-21T08:11:06Z'
1.14.6.3. 배치에 허용 오차 추가
허용 오차는 배치에 적용되며 배치 허용 오차와 일치하는 테인트가 없는 관리형 클러스터를 배치할 수 있습니다. 허용 오차 사양에는 다음 필드가 포함됩니다.
- 선택 사항 키 - 키가 배치를 허용하는 taint 키와 일치합니다.
- 선택 사항 - 허용 오차의 값은 배치를 허용하려면 허용 오차의 테인트 값과 일치해야 합니다.
선택적 Operator - 연산자는 키와 값 간의 관계를 나타냅니다. 유효한 연산자는
동일
하고존재합니다
. 기본값은동일합니다
. 키가 동일하고 효과가 동일할 때 허용 오차가 테인트와 일치하며 Operator는 다음 값 중 하나입니다.-
equal
- Operator가동일
하고 값은 테인트 및 허용 오차에서 동일합니다. -
exists
- 값의 와일드카드로, 배치가 특정 카테고리의 모든 테인트를 허용할 수 있습니다.
-
-
선택사항 Effect - 일치시킬 테인트 효과입니다. 비워 두면 모든 테인트 효과와 일치합니다. 지정된 경우 허용되는 값은
NoSelect
또는NoSelectIfNew
입니다. -
선택 사항 TolerationSeconds - 관리 클러스터를 새 배치로 이동하기 전에 허용 오차가 테인트를 허용하는 시간(초)입니다. 효과 값이
NoSelect
또는PreferNoSelect
가 아닌 경우 이 필드는 무시됩니다. 기본값은nil
로, 시간 제한이 없음을 나타냅니다.TolerationSeconds
의 계산 시작 시간은 클러스터 예약 시간 값 또는TolerationSeconds
추가 시간이 아닌 테인트의TimeAdded
값으로 자동으로 나열됩니다.
다음 예제에서는 테인트가 있는 클러스터를 허용하는 허용 오차를 구성하는 방법을 보여줍니다.
이 예에는 관리형 클러스터의 테인트가 있습니다.
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: gpu value: "true" timeAdded: '2022-02-21T08:11:06Z'
테인트를 허용할 수 있는 배치에 대한 허용 오차
apiVersion: cluster.open-cluster-management.io/v1beta1 kind: Placement metadata: name: placement1 namespace: default spec: tolerations: - key: gpu value: "true" operator: Equal
허용 오차 예제를 정의하면
key: gpu
및value: "true"
가 일치하므로 배치에서cluster1
을 선택할 수 있습니다.
참고: 관리형 클러스터는 테인트에 대한 허용 오차가 포함된 배치에 배치할 수 없습니다. 다른 배치에 동일한 허용 오차가 포함된 경우 관리형 클러스터가 해당 배치 중 하나에 배치될 수 있습니다.
1.14.6.4. 임시 허용 오차 지정
TolerationSeconds
값은 허용 오차가 테인트를 허용하는 기간을 지정합니다. 이 임시 허용 오차는 관리 클러스터가 오프라인 상태이고 허용되는 시간 동안 이 클러스터에 배포된 애플리케이션을 다른 관리형 클러스터로 전송할 수 있는 경우 유용할 수 있습니다.
예를 들어 다음 테인트가 있는 관리형 클러스터에 연결할 수 없게 됩니다.
apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: cluster1 spec: hubAcceptsClient: true taints: - effect: NoSelect key: cluster.open-cluster-management.io/unreachable timeAdded: '2022-02-21T08:11:06Z'
다음 예와 같이 TolerationSeconds
값을 사용하여 배치를 정의하는 경우 워크로드는 5분 후에 사용 가능한 다른 관리 클러스터로 전송됩니다.
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: Placement metadata: name: demo4 namespace: demo1 spec: tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists tolerationSeconds: 300 ----
관리 클러스터에 5분 동안 연결할 수 없는 후 애플리케이션을 다른 관리형 클러스터로 이동합니다.