이 항목에서는 AWS에만 해당되고 클러스터의 플랫 구성 파일 또는 Kubernetes 스타일 개체 규격에서 완전히 구성할 수 없는 기능을 사용하도록 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터를 구성하는 방법을 설명합니다.
구성 파일 및 개체 규격을 사용하여 AWS에서 워크로드 클러스터를 구성하는 방법에 대한 자세한 내용은 AWS 클러스터 구성 파일을 참조하십시오.
중요Tanzu Kubernetes Grid v2.4.x는 AWS에서 TKG 워크로드 클러스터 생성을 지원하는 마지막 TKG 버전입니다. AWS에서 TKG 워크로드 클러스터를 생성하는 기능은 Tanzu Kubernetes Grid v2.5 릴리스에서 제거됩니다.
지금부터는 VMware Tanzu Mission Control을 사용하여 AWS에서 새 TKG 워크로드 클러스터를 생성하는 대신 AWS EKS 클러스터를 생성하는 것이 좋습니다. Tanzu Mission Control을 사용하여 네이티브 AWS EKS 클러스터를 생성하는 방법에 대한 자세한 내용은 Tanzu Mission Control 설명서에서 AWS EKS 클러스터의 수명 주기 관리를 참조하십시오.
자세한 내용은 VMware Tanzu Kubernetes Grid v2.4 Release Notes에서 AWS 및 Azure에서 TKG 관리 및 워크로드 클러스터의 사용 중단을 참조하십시오.
클러스터에서 LoadBalancer
유형의 서비스를 생성하려면 워크로드 클러스터에 사용하려는 공용 서브넷 또는 서브넷에 kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
태그를 추가해야 합니다.
kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
태그를 공용 서브넷 또는 서브넷에 추가하면 클러스터를 배포한 후 LoadBalancer
유형의 서비스를 생성할 수 있습니다. 이 태그를 추가한 다음 클러스터를 배포하려면 아래 단계를 따르십시오.
클러스터에 사용할 VPC 내에서 공용 서브넷 또는 서브넷의 ID를 수집합니다. prod
워크로드 클러스터를 배포하려면 세 개의 서브넷을 제공해야 합니다.
다음 명령을 실행하여 필수 태그를 생성합니다.
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
클러스터를 구성합니다.
클러스터를 생성합니다. 예:
tanzu cluster create my-cluster -f my-cluster-config.yaml
AWS에서 사용할 수 있는 NVIDIA GPU 기반 VM을 활용하는 워크로드 클러스터를 배포하려면 다음을 수행합니다.
클러스터용 구성 파일에서 Worker 노드에 NODE_MACHINE_TYPE
을 설정하여 g4dn.8xlarge
와 같은 GPU 호환 VM 유형으로 설정합니다.
클러스터 구성 파일을 사용하여 클러스터를 배포합니다.
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
클러스터에 GPU 클러스터 정책 및 GPU 연산자를 설치합니다.
현재 컨텍스트가 아닌 경우 kubectl context
를 클러스터로 설정합니다.
클러스터 API 제공자 AWS 저장소에서 필요한 NVIDIA GPU 리소스를 다운로드하고 현재 디렉토리에 저장합니다.
클러스터 정책을 적용합니다.
kubectl apply clusterpolicy-crd.yaml
GPU 연산자를 적용합니다.
kubectl apply gpu-operator-components.yaml
kubectl get pods -A
를 실행합니다. default
네임스페이스의 gpu-operator-
포드 및 gpu-operator-resources
네임스페이스의 nvidia-
포드 목록이 표시됩니다.
GPU 지원 클러스터를 테스트하려면 NVIDIA 설명서의 CUDA VectorAdd 벡터 추가 테스트를 실행합니다.
GPU 연산자를 테스트하려면 다음을 수행합니다.
워크로드 클러스터의 Worker 노드 수를 스케일 업합니다.
tanzu cluster scale MY-GPU-CLUSTER -w 2
kubectl get pods -A
를 다시 실행합니다. 추가된 노드에 대해 추가 gpu-operator-
및 nvidia-
포드가 표시됩니다.
Kubernetes 클러스터가 인터넷에 연결되거나 VPC 피어링 또는 AWS Transit Gateway를 통해 피어링된 VPC에 배포된 경우 여러 AWS 계정에 워크로드 클러스터를 배포할 수 있습니다.
워크로드 클러스터 배포를 위한 보조 AWS 계정을 준비하려면 보조 계정을 준비하고 다음과 같이 보조 계정과 관리 클러스터 계정 간에 신뢰 관계를 설정합니다.
먼저 보조 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입니다.
신뢰 정책을 설정한 후 관리 클러스터 계정의 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
의 이름입니다.