AWS에서 클러스터

이 항목에서는 AWS에만 해당되고 클러스터의 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격에서 완전히 구성할 수 없는 기능을 사용하도록 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다.

구성 파일 및 개체 규격을 사용하여 AWS에서 워크로드 클러스터를 구성하는 방법에 대한 자세한 내용은 AWS 클러스터 구성 파일을 참조하십시오.

기존 VPC의 서브넷 태그 추가

클러스터에서 LoadBalancer 유형의 서비스를 생성하려면 워크로드 클러스터에 사용하려는 공용 서브넷 또는 서브넷에 kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared 태그를 추가해야 합니다.

kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared 태그를 공용 서브넷 또는 서브넷에 추가하면 클러스터를 배포한 후 LoadBalancer 유형의 서비스를 생성할 수 있습니다. 이 태그를 추가한 다음 클러스터를 배포하려면 아래 단계를 따르십시오.

  1. 클러스터에 사용할 VPC 내에서 공용 서브넷 또는 서브넷의 ID를 수집합니다. prod 워크로드 클러스터를 배포하려면 세 개의 서브넷을 제공해야 합니다.

  2. 다음 명령을 실행하여 필수 태그를 생성합니다.

    aws ec2 create-tags --resources YOUR-PUBLIC-SUBNET-ID-OR-IDS --tags Key=kubernetes.io/cluster/YOUR-CLUSTER-NAME,Value=shared
    

    형식 설명:

    • YOUR-PUBLIC-SUBNET-ID-OR-IDS는 이전 단계에서 수집한 공용 서브넷 또는 서브넷의 ID입니다.
    • YOUR-CLUSTER-NAME은 생성하려는 워크로드 클러스터의 이름입니다.

    예:

    aws ec2 create-tags --resources subnet-00bd5d8c88a5305c6 subnet-0b93f0fdbae3436e8 subnet-06b29d20291797698 --tags Key=kubernetes.io/cluster/my-cluster,Value=shared
    
  3. 클러스터를 구성합니다.

  4. 클러스터를 생성합니다. 예:

    tanzu cluster create my-cluster -f my-cluster-config.yaml
    

GPU 지원 클러스터 배포

AWS에서 사용할 수 있는 NVIDIA GPU 기반 VM을 활용하는 워크로드 클러스터를 배포하려면 다음을 수행합니다.

  1. 클러스터용 구성 파일에서 Worker 노드에 NODE_MACHINE_TYPE을 설정하여 g4dn.8xlarge와 같은 GPU 호환 VM 유형으로 설정합니다.

  2. 클러스터 구성 파일을 사용하여 클러스터를 배포합니다.

    tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
    
  3. 클러스터에 GPU 클러스터 정책 및 GPU 연산자를 설치합니다.

    1. 현재 컨텍스트가 아닌 경우 kubectl context를 클러스터로 설정합니다.

    2. 클러스터 API 제공자 AWS 저장소에서 필요한 NVIDIA GPU 리소스를 다운로드하고 현재 디렉토리에 저장합니다.

    3. 클러스터 정책을 적용합니다.

      kubectl apply clusterpolicy-crd.yaml
      
    4. GPU 연산자를 적용합니다.

      kubectl apply gpu-operator-components.yaml
      
  4. kubectl get pods -A를 실행합니다. default 네임스페이스의 gpu-operator- 포드 및 gpu-operator-resources 네임스페이스의 nvidia- 포드 목록이 표시됩니다.

  5. GPU 지원 클러스터를 테스트하려면 NVIDIA 설명서의 CUDA VectorAdd 벡터 추가 테스트를 실행합니다.

  6. GPU 연산자를 테스트하려면 다음을 수행합니다.

    1. 워크로드 클러스터의 Worker 노드 수를 스케일 업합니다.

      tanzu cluster scale MY-GPU-CLUSTER -w 2
      
    2. kubectl get pods -A를 다시 실행합니다. 추가된 노드에 대해 추가 gpu-operator-nvidia- 포드가 표시됩니다.

서로 다른 AWS 계정에 클러스터 배포

Kubernetes 클러스터가 인터넷에 연결되거나 VPC 피어링 또는 AWS Transit Gateway를 통해 피어링된 VPC에 배포된 경우 여러 AWS 계정에 워크로드 클러스터를 배포할 수 있습니다.

워크로드 클러스터 배포를 위한 보조 AWS 계정을 준비하려면 보조 계정을 준비하고 다음과 같이 보조 계정과 관리 클러스터 계정 간에 신뢰 관계를 설정합니다.

IAM 역할 생성

먼저 보조 AWS 계정에서 IAM 역할을 설정해야 합니다.

이렇게 하려면 tanzu mc permissions aws 명령을 사용합니다. 구성 파일에서 관리 클러스터 배포IAM 리소스 생성 섹션에 설명된 프로세스를 따릅니다.

계정 간 신뢰 사용

하나의 AWS 계정에서 관리 클러스터를 사용하도록 설정하여 워크로드 클러스터를 보조 AWS 계정에 배포하려면 먼저 보조 계정에서 신뢰 정책을 설정해야 합니다.

이렇게 하려면 보조 계정에서 tanzu mc permissions aws에 의해 생성된 controllers.tkg.cloud.vmware.com을 찾습니다. 그런 다음 다음과 같이 신뢰 관계를 편집합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Principal": {
        "AWS": "arn:aws:iam::MANAGEMENT-ACCOUNT-ID:root"
      },
    }
  ]
}

여기서 MANAGEMENT-ACCOUNT-ID는 관리 클러스터가 배포된 AWS 계정 ID입니다.

관리 클러스터가 IAM 역할을 수행하도록 설정

신뢰 정책을 설정한 후 관리 클러스터 계정의 control-plane.tkg.cloud.vmware.com IAM 역할을 사용하도록 설정하여 보조 계정에서 controllers.tkg.cloud.vmware.com IAM 역할을 수행하도록 합니다.

이렇게 하려면 다음과 같이 새 정책을 연결하거나 인라인 정책을 추가합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
    }
  ]
}

여기서 SECONDARY-ACCOUNT-ID는 보조 계정의 AWS 계정 ID입니다.

관리 클러스터에 AWSClusterRoleIdentity 리소스 생성

관리 클러스터에서 새 계정 간 IAM 역할을 설정하려면 다음과 같이 Kubernetes에서 새 AWSClusterRoleIdentity 리소스 개체를 생성해야 합니다.

apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: AWSClusterRoleIdentity
metadata:
  name: IDENTITY-NAME
spec:
  allowedNamespaces: {}
  durationSeconds: 900
  roleARN: "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
  sourceIdentityRef:
    kind: AWSClusterControllerIdentity
    name: default

형식 설명:

  • IDENTITY-NAME은 리소스를 식별하는 데 사용됩니다. 예를 들어 비즈니스 개발 계정(LOB-dev)의 약칭입니다.
  • SECONDARY-ACCOUNT-ID는 이전 설정 단계의 ID입니다.

AWSClusterRoleIdentity 리소스는 범위가 전역입니다. 값을 명시적 네임스페이스 목록 또는 선택기로 설정하여 IAM 역할을 사용하여 클러스터를 관리할 수 있는 네임스페이스를 제한하도록 allowedNamespaces 필드를 설정할 수 있습니다. 클러스터 API 북ID에 보안 액세스를 참조하십시오.

보조 계정에 워크로드 클러스터 배포

AWSClusterRoleIdentity 리소스를 생성한 후 이를 사용하여 보조 AWS 계정에 워크로드 클러스터를 배포할 수 있습니다.

이렇게 하려면 클러스터 구성 파일에 다음 줄을 포함하고 표준 옵션과 함께 tanzu cluster create를 실행합니다.

AWS_IDENTITY_REF_NAME: IDENTITY-NAME

여기서 IDENTITY-NAME은 이전 단계에서 생성된 AWSClusterRoleIdentity의 이름입니다.

check-circle-line exclamation-circle-line close-line
Scroll to top icon