검색

1.14. ManagedClusterSets 생성 및 관리

download PDF

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. 기본 콘솔 탐색에서 인프라 > 클러스터를 선택하고 클러스터 설정 탭이 선택되었는지 확인합니다.
  2. 클러스터 세트 만들기 를 선택하고 클러스터 세트의 이름을 입력합니다.

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 콘솔에서 관리형 클러스터에 사용자 또는 그룹을 할당하려면 다음 단계를 완료합니다.

  1. 콘솔의 메인 탐색 메뉴에서 인프라 > 클러스터를 선택합니다.
  2. 클러스터 세트 탭을 선택합니다.
  3. 대상 클러스터 세트를 선택합니다.
  4. 액세스 관리 탭을 선택합니다.
  5. 사용자 또는 그룹 추가를 선택합니다.
  6. 액세스 권한을 검색하고 제공할 사용자 또는 그룹을 선택합니다.
  7. Cluster set admin 또는 Cluster set view 역할을 선택하여 선택한 사용자 또는 사용자 그룹에 제공합니다. 역할 권한에 대한 자세한 내용은 역할 개요 를 참조하십시오.
  8. 추가 를 선택하여 변경 사항을 제출합니다.

사용자 또는 그룹이 테이블에 표시됩니다. 모든 관리 클러스터 세트 리소스가 사용자 또는 그룹에 전파되도록 권한 할당에 대해 권한 할당이 몇 초 정도 걸릴 수 있습니다.

역할 기반 작업에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하십시오.

배치 정보는 ManagedClusterSets를 배치와 함께 사용을 참조하십시오.

1.14.2.1. ManagedClusterSetBinding 리소스 생성

ManagedClusterSetBinding 리소스를 생성하여 ManagedClusterSet 리소스를 네임스페이스에 바인딩합니다. 동일한 네임스페이스에서 생성되는 애플리케이션 및 정책은 바인딩된 관리형 클러스터 세트 리소스에 포함된 관리형 클러스터에만 액세스할 수 있습니다.

네임스페이스에 대한 액세스 권한은 해당 네임스페이스에 바인딩된 관리형 클러스터 세트에 자동으로 적용됩니다. 관리 클러스터 세트가 바인딩된 네임스페이스에 액세스할 수 있는 액세스 권한이 있는 경우 해당 네임스페이스에 바인딩된 모든 관리 클러스터 세트에 액세스할 수 있는 권한이 자동으로 부여됩니다. 그러나 관리형 클러스터 세트에 액세스할 수 있는 권한만 있는 경우 해당 네임스페이스의 다른 관리 클러스터 세트에 액세스할 수 있는 권한이 자동으로 없습니다. 관리형 클러스터 세트가 표시되지 않으면 이를 확인하는 데 필요한 권한이 없을 수 있습니다.

콘솔 또는 명령줄을 사용하여 관리형 클러스터 세트 바인딩을 생성할 수 있습니다.

1.14.2.1.1. 콘솔을 사용하여 ManagedClusterSetBinding 생성

Red Hat Advanced Cluster Management 콘솔을 사용하여 설정된 관리형 클러스터에서 클러스터를 제거하려면 다음 단계를 완료합니다.

  1. 기본 탐색에서 인프라 > 클러스터를 선택하고 클러스터 세트 탭을 선택하여 클러스터 페이지에 액세스합니다.
  2. 클러스터 세트 세부 정보를 보려면 바인딩을 생성할 클러스터 세트의 이름을 선택합니다.
  3. 작업 > 네임스페이스 바인딩 편집 을 선택합니다.
  4. 네임스페이스 바인딩 편집 페이지의 드롭다운 메뉴에서 클러스터 세트를 바인딩할 네임스페이스를 선택합니다. 클러스터 세트에 대한 바인딩이 있는 기존 네임스페이스가 이미 선택되어 있습니다.
1.14.2.1.2. 명령줄을 사용하여 ManagedClusterSetBinding 생성

명령줄을 사용하여 관리형 클러스터 세트 바인딩을 생성하려면 다음 단계를 완료합니다.

  1. yaml 파일에 ManagedClusterSetBinding 리소스를 생성합니다. 관리형 클러스터 세트 바인딩을 생성할 때 관리형 클러스터 세트 바인딩의 이름이 바인딩되도록 관리형 클러스터 세트의 이름과 일치해야 합니다. ManagedClusterSetBinding 리소스는 다음 정보와 유사합니다.

    apiVersion: cluster.open-cluster-management.io/v1beta1
    kind: ManagedClusterSetBinding
    metadata:
      namespace: project1
      name: clusterset1
    spec:
      clusterSet: clusterset1
  2. 대상 관리 클러스터에 대한 바인딩 권한이 설정되어 있는지 확인합니다. 사용자가 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 콘솔을 사용하여 설정된 관리형 클러스터에 클러스터를 추가하려면 다음 단계를 완료합니다.

  1. 관리형 클러스터 세트를 방금 만든 경우 리소스 할당 관리를 선택하여 리소스 할당 관리 페이지로 직접 이동합니다. 이 절차의 6단계를 계속 진행합니다.
  2. 클러스터가 이미 존재하는 경우 기본 탐색에서 인프라 > 클러스터를 선택하여 클러스터 페이지에 액세스합니다.
  3. 사용 가능한 클러스터 세트를 보려면 클러스터 세트 탭을 선택합니다.
  4. 클러스터 세트 세부 정보를 보려면 관리형 클러스터 세트에 추가할 클러스터 세트의 이름을 선택합니다.
  5. 작업 > 리소스 할당 관리를 선택합니다.
  6. 리소스 할당 관리 페이지에서 클러스터 세트에 추가할 리소스의 확인란을 선택합니다.
  7. 검토를 선택하여 변경 사항을 검토합니다.
  8. 저장 을 선택하여 변경 사항을 저장합니다.

    참고: 관리 대상 클러스터에서 다른 클러스터로 설정된 관리형 클러스터를 이동하는 경우 두 관리 클러스터 세트 모두에서 필요한 RBAC 권한을 사용할 수 있어야 합니다.

1.14.3.2. 명령줄을 사용하여 ManagedClusterSet에 클러스터 추가

명령줄을 사용하여 설정된 관리형 클러스터에 클러스터를 추가하려면 다음 단계를 완료합니다.

  1. managedclustersets/join 의 가상 하위 리소스에서 생성할 수 있는 RBAC ClusterRole 항목이 있는지 확인합니다. 이 권한이 없으면 관리 클러스터를 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"]

    clusterset1ManagedClusterSet 의 이름으로 교체합니다.

    참고: 관리 클러스터를 하나의 ManagedClusterSet 에서 다른 클러스터로 이동하는 경우 두 관리 클러스터 세트 모두에서 사용 가능한 권한이 있어야 합니다.

  2. yaml 파일에서 관리 클러스터의 정의를 찾습니다. 레이블을 추가하는 관리형 클러스터 정의의 섹션은 다음 내용과 유사합니다.

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      name: cluster1
    spec:
      hubAcceptsClient: true

    이 예제에서 cluster1 은 관리 클러스터의 이름입니다.

  3. 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 콘솔을 사용하여 설정된 관리형 클러스터에서 클러스터를 제거하려면 다음 단계를 완료합니다.

  1. 관리형 클러스터 세트를 방금 만든 경우 리소스 할당 관리를 선택하여 리소스 할당 관리 페이지로 직접 이동합니다. 이 절차의 5단계를 계속 진행합니다.
  2. 클러스터가 이미 존재하는 경우 기본 탐색에서 인프라 > 클러스터를 선택하고 클러스터 설정 탭이 선택되어 있는지 확인하여 클러스터 페이지에 액세스합니다.
  3. 클러스터 세트 세부 정보를 보려면 관리형 클러스터에서 제거할 클러스터 세트의 이름을 선택합니다.
  4. 작업 > 리소스 할당 관리를 선택합니다.
  5. 리소스 할당 관리 페이지에서 클러스터 세트에서 제거할 리소스의 확인란을 선택합니다.

    이 단계에서는 이미 클러스터 세트의 멤버인 리소스를 제거하거나 클러스터 세트의 멤버가 아닌 리소스를 추가합니다. 관리 클러스터의 세부 정보를 확인하여 리소스가 이미 클러스터 세트의 멤버인지 확인할 수 있습니다.

참고: 관리 대상 클러스터에서 다른 클러스터로 설정된 관리 클러스터를 이동하는 경우 두 관리 클러스터 세트에 대해 필요한 RBAC 권한이 있어야 합니다.

1.14.4.2. 명령줄을 사용하여 ManagedClusterSet에서 클러스터 제거

명령줄을 사용하여 설정된 관리형 클러스터에서 관리형 클러스터를 제거하려면 다음 단계를 완료하십시오.

  1. 다음 명령을 실행하여 관리형 클러스터 세트의 관리형 클러스터 목록을 표시합니다.

    oc get managedclusters -l cluster.open-cluster-management.io/clusterset=<clusterset1>

    clusterset1 을 관리 클러스터 세트의 이름으로 교체합니다.

  2. 제거할 클러스터의 항목을 찾습니다.
  3. 제거할 클러스터의 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 이 없는 경우 ManagedCluster를 선택하지 않습니다.

  • ManagedClusters 배치는 테인트 및 톨러레이션을 사용하여 제어할 수 있습니다. 자세한 내용은 테인트 및 허용 오차를 사용하여 관리 클러스터 배치를 참조하십시오.

배치 사양에는 다음 필드가 포함됩니다.

  • ClusterSetsManagedClusters 가 선택된 ManagedClusterSets 를 나타냅니다.

    • 지정하지 않으면 배치 네임스페이스에 바인딩된 ManagedClusterSets 에서 ManagedClusters 가 선택됩니다.
    • 지정된 경우 이 세트의 교집합에서 ManagedClusters 가 선택되고 placement 네임스페이스에 바인딩된 ManagedClusterSets 가 선택됩니다.
  • NumberOfClusters 는 배치 요구 사항을 충족하는 원하는 ManagedClusters 수를 나타냅니다.

    지정하지 않으면 배치 요구 사항을 충족하는 모든 ManagedClusters 가 선택됩니다.

  • 서술자 는 레이블 및 클레임 선택기가 있는 ManagedClusters 를 선택하는 서술자 슬라이스를 나타냅니다. 서술자는 ORed입니다.
  • prioritizerPolicy 는 우선순위 정책을 나타냅니다.

    • 모드는 Exact,Additive, "" 입니다. 여기서 "" 는 기본적으로 Additive 입니다.

      • Additive 모드에서는 구성 값이 특별히 제공되지 않는 모든 우선순위가 기본 구성으로 활성화됩니다. 현재 기본 구성에서 CloudEvent adyBalance 우선순위에는 가중치가 1이고 다른 우선순위는 0입니다. 나중에 기본 구성이 변경될 수 있으므로 우선순위가 변경될 수 있습니다. 추가 모드에서는 우선순위를 모두 구성할 필요가 없습니다.
      • Exact 모드에서 구성 값과 함께 특별히 제공되지 않는 모든 우선순위에는 가중치가 0입니다. exact 모드를 사용하려면 원하는 우선순위의 전체 세트를 입력해야 하지만 릴리스 간 동작 변경은 방지할 수 있습니다.
    • 구성은 우선순위 지정자의 구성을 나타냅니다.

      • scoreCoordinate는 우선순위 및 점수 소스의 구성을 나타냅니다.

        • type 은 우선순위가 높은 점수의 유형을 정의합니다. 유형은 BuiltIn,AddOn, " ", 여기서 " " 는 기본적으로 BuiltIn 입니다. 유형이 BuiltIn 인 경우 내장 우선 순위 이름 을 지정해야 합니다. 유형이 AddOn 인 경우 AddOn 에서 점수 소스를 구성해야 합니다.
        • builtin은 BuiltIn 우선순위r의 이름을 정의합니다. 다음 목록에는 유효한 BuiltIn 우선순위 지정자 이름이 포함되어 있습니다.

          • 균형: 클러스터 간 결정에 균형을 유지합니다.
          • steady: 기존 결정이 안정되었는지 확인합니다.
          • ResourceAllocatableCPU 및 ResourceAllocatableMemory: 할당 가능한 리소스를 기반으로 클러스터를 정렬합니다.
        • Addon 은 리소스 이름과 점수 이름을 정의합니다. AddOnPlacementScore 는 애드온 점수를 설명하기 위해 도입되었습니다. 자세한 내용은 확장 가능 예약을 참조하십시오.

          • resourceNameAddOnPlacementScore 의 리소스 이름을 정의합니다. 배치 우선순위는 이 이름으로 AddOnPlacementScore 사용자 정의 리소스를 선택합니다.
          • scoreNameAddOnPlacementScore 내부의 점수 이름을 정의합니다. AddOnPlacementScore 에는 점수 이름 목록과 점수 값이 포함되어 있습니다. scoreName 은 우선순위에서 사용할 점수를 지정합니다.
      • weight 는 우선순위의 가중치를 정의합니다. 값은 [-10,10] 범위에 있어야 합니다. 각 우선순위는 [-100, 100] 범위에서 클러스터의 정수 점수를 계산합니다. 클러스터의 최종 점수는 다음 공식 합계(weight * priorityr_score) 에 따라 결정됩니다. 가중치가 높아지면 우선 순위가 클러스터 선택에서 더 높은 가중치를 수신하지만 가중치 0은 우선순위가 비활성화되었음을 나타냅니다. 음수 가중치는 마지막 선택된 항목 중 하나임을 나타냅니다.

참고: configurations.name 파일은 v1beta1에서 제거되고 scoreCoordinate.builtIn 파일로 대체됩니다. namescoreCoordinate.builtIn 이 모두 정의된 경우 scoreCoordinate.builtIn 의 값을 사용하여 선택을 결정합니다.

1.14.5.2. 배치 예

해당 네임스페이스에서 ManagedClusterSet Binding 을 생성하여 하나 이상의 ManagedClusterSet을 네임스페이스에 바인딩해야 합니다. 참고: managedclustersets/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 를 선택할 수 있습니다. claimSelectorregion.open-cluster-management.ious-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 를 선택할 수 있습니다. claimSelectorclusterSets: 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 를 선택합니다. numberOfClusters3 인 다음 샘플을 참조하십시오.

    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 Decision 에 추가하면 이 배치를 사용하는 구성 요소가 이 ManagedCluster 에 워크로드를 적용할 수 있습니다. 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: gpuvalue: "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분 동안 연결할 수 없는 후 애플리케이션을 다른 관리형 클러스터로 이동합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.