암호화된 Confidential Google Kubernetes Engine 노드에서 워크로드를 실행하여 사용 중인 GPU 워크로드 데이터를 암호화할 수 있습니다. 이 페이지에서는 보안 엔지니어와 운영자가 AI/ML 작업과 같은 가속화된 워크로드의 데이터 보안을 개선하는 방법을 보여줍니다. 다음 개념을 잘 알고 있어야 합니다.
Confidential GKE Node에서 GPU 워크로드 실행 정보
다음 방법 중 하나를 사용하여 GPU 워크로드에 대해 Confidential GKE Node를 요청할 수 있습니다.
- GKE ComputeClasses를 사용하여 GPU 워크로드용 Confidential GKE Node를 자동으로 프로비저닝합니다. 이 방법은 Autopilot 클러스터와 Standard 클러스터에서 사용할 수 있습니다. 자세한 내용은 ComputeClass를 사용하여 Confidential GKE Node에서 GPU 워크로드 실행 섹션을 참고하세요.
- Standard 클러스터 또는 노드 풀에 대해 Confidential GKE Node를 수동으로 구성합니다. 자세한 내용은 GKE Standard에서 Confidential GKE Node 수동 구성 섹션을 참고하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
요구사항 및 제한사항
선택한 Confidential GKE Node 구성 방법에 관계없이 다음 요구사항을 모두 충족해야 합니다.
- 노드는 NVIDIA 컨피덴셜 컴퓨팅을 지원하는 영역에 있어야 합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
- 노드는 NVIDIA H100 80GB GPU 1개와
a3-highgpu-1g
머신 유형만 사용해야 합니다. - 노드는 Intel TDX 컨피덴셜 컴퓨팅 기술을 사용해야 합니다.
- 노드 위치에 선점형 H100 80GB GPU(
compute.googleapis.com/preemptible_nvidia_h100_gpus
) 할당량이 있어야 합니다. 할당량 관리에 관한 자세한 내용은 할당량 보기 및 관리를 참고하세요.
이러한 요구사항 외에도 다음 표에 설명된 대로 선택한 Confidential GKE Node 구성 방법에 따라 특정 조건을 충족해야 합니다.
구성 방법 | 요구사항 | 제한사항 |
---|---|---|
ComputeClasses |
|
|
표준 모드에서 수동 구성 |
|
|
필요한 역할
컨피덴셜 GKE 노드를 만드는 데 필요한 권한을 얻으려면 관리자에게 Google Cloud 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Confidential GKE Node 만들기: Kubernetes Engine 클러스터 관리자 (
roles/container.clusterAdmin
) -
GPU 워크로드 배포:
Kubernetes Engine 개발자 (
roles/container.developer
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
ComputeClasses를 사용하여 컨피덴셜 GPU 워크로드 실행
ComputeClass에서 Confidential GKE Node 구성을 정의할 수 있습니다. ComputeClass는 GKE 자동 확장 및 예약의 노드 구성을 선언적으로 설정할 수 있는 Kubernetes 커스텀 리소스입니다. GKE 버전 1.33.3-gke.1392000 이상을 실행하는 Autopilot 또는 Standard 클러스터에서 이 섹션의 단계를 따를 수 있습니다.
ComputeClass를 사용하여 Confidential GKE Node에서 GPU 워크로드를 실행하려면 다음 단계를 따르세요.
다음 ComputeClass 매니페스트를 YAML 파일로 저장합니다.
apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: COMPUTECLASS_NAME spec: nodePoolConfig: confidentialNodeType: TDX priorityDefaults: location: zones: ['ZONE1','ZONE2'] priorities: - gpu: type: nvidia-h100-80gb count: 1 driverVersion: default spot: true activeMigration: optimizeRulePriority: true nodePoolAutoCreation: enabled: true whenUnsatisfiable: DoNotScaleUp
다음을 바꿉니다.
COMPUTECLASS_NAME
: ComputeClass의 이름입니다.ZONE1,ZONE2
: 노드를 생성할 영역의 쉼표로 구분된 목록입니다(예:['us-central1-a','us-central1-b']
). Intel TDX 컨피덴셜 컴퓨팅 기술을 지원하는 영역을 지정합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.
ComputeClass를 만듭니다.
kubectl apply -f PATH_TO_MANIFEST
PATH_TO_MANIFEST
를 ComputeClass 매니페스트 파일의 경로로 바꿉니다.Confidential GKE Node에서 GPU 워크로드를 실행하려면 워크로드 매니페스트에서 ComputeClass를 선택합니다. 예를 들어 ComputeClass와 GPU를 선택하는 다음 배포 매니페스트를 YAML 파일로 저장합니다.
apiVersion: apps/v1 kind: Deployment metadata: name: confidential-gpu-deployment labels: app: conf-gpu spec: selector: matchLabels: app: conf-gpu replicas: 1 template: metadata: labels: app: conf-gpu spec: nodeSelector: cloud.google.com/compute-class: COMPUTECLASS_NAME containers: - name: example-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 resources: limits: cpu: "4" memory: "16Gi" nvidia.com/gpu: 1 requests: cpu: "4" memory: "16Gi"
COMPUTECLASS_NAME
을 생성한 ComputeClass의 이름으로 바꿉니다.배포를 만듭니다.
kubectl apply -f PATH_TO_DEPLOYMENT_MANIFEST
PATH_TO_DEPLOYMENT_MANIFEST
을 배포 매니페스트의 경로로 바꿉니다.
GPU 워크로드를 만들면 GKE는 ComputeClass의 구성을 사용하여 연결된 GPU가 있는 Confidential GKE Node를 만듭니다.
GKE Standard에서 Confidential GKE Node 수동 구성
Standard 모드 클러스터 또는 노드 풀의 Confidential GKE Node에서 GPU 워크로드를 실행할 수 있습니다. GPU 워크로드의 경우 Confidential GKE Node는 Intel TDX 컨피덴셜 컴퓨팅 기술을 사용해야 합니다.
새 Standard 클러스터에서 Confidential GKE Node 사용 설정
전체 표준 클러스터에 대해 Confidential GKE Node를 사용 설정하여 생성하는 모든 GPU 노드 풀이 동일한 컨피덴셜 컴퓨팅 기술을 사용하도록 할 수 있습니다. GPU 워크로드에 컨피덴셜 GKE 노드를 사용하는 새 Standard 모드 클러스터를 만들 때는 다음 클러스터 설정을 지정해야 합니다.
- 위치: NVIDIA 컨피덴셜 컴퓨팅을 지원하는 리전 또는 영역 자세한 내용은 지원되는 영역 보기를 참고하세요.
- 컨피덴셜 컴퓨팅 유형: Intel TDX
클러스터 버전: GPU 드라이버를 설치하려는 방식에 따라 다음 버전 중 하나입니다.
- 수동 GPU 드라이버 설치: 1.32.2-gke.1297000 이상
- 자동 GPU 드라이버 설치: 1.33.3-gke.1392000 이상
원하는 경우 GKE가 클러스터에서 만드는 기본 노드 풀에 GPU를 구성할 수 있습니다. 하지만 클러스터의 하나 이상의 노드 풀에서 모든 워크로드를 실행할 수 있도록 GPU에 별도의 노드 풀을 사용하는 것이 좋습니다.
자세한 내용은 Standard 클러스터에서 Confidential GKE Node 사용 설정을 참고하세요.
Standard 노드 풀에서 GPU와 함께 Confidential GKE Node 사용
클러스터에서 Confidential GKE Node가 사용 설정되지 않은 경우 특정 신규 또는 기존 GPU 노드 풀에서 Confidential GKE Node를 사용 설정할 수 있습니다. 컨트롤 플레인과 노드 풀은 가용성 섹션의 요구사항을 충족해야 합니다. 노드 풀을 구성할 때 GPU 드라이버를 자동으로 또는 수동으로 설치할 수 있습니다.
Confidential GKE Node를 사용하는 새 GPU 노드 풀을 만들려면 다음 옵션 중 하나를 선택하세요.
콘솔
Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.
수정할 표준 모드 클러스터의 이름을 클릭합니다.
노드 풀 추가를 클릭합니다. 노드 풀 추가 페이지가 열립니다.
노드 풀 세부정보 창에서 다음을 수행합니다.
탐색 메뉴에서 노드를 클릭합니다.
노드 설정 구성 창에서 다음을 수행합니다.
- 머신 구성 섹션에서 GPU를 클릭합니다.
- GPU 유형 메뉴에서 NVIDIA H100 80GB를 선택합니다.
- GPU 수 메뉴에서 1을 선택합니다.
- GPU 공유 사용 설정이 선택되지 않았는지 확인합니다.
GPU 드라이버 설치 섹션에서 다음 옵션 중 하나를 선택합니다.
Google 관리형: GKE가 드라이버를 자동으로 설치합니다. 이 옵션을 선택하는 경우 버전 드롭다운 목록에서 다음 드라이버 버전 중 하나를 선택합니다.
- 기본값: 노드 GKE 버전의 기본 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.
- 최신: 노드 GKE 버전의 최신 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.
사용자 관리형: 자동 드라이버 설치를 건너뜁니다. 이 옵션을 선택하는 경우 호환되는 GPU 드라이버를 수동으로 설치해야 합니다. 1.32.2-gke.1297000 이상이 필요합니다.
머신 유형 섹션에서 머신 유형이
a3-highgpu-1g
인지 확인합니다.스팟 VM에 노드 사용 설정을 선택하거나 큐에 추가된 프로비저닝으로 flex-start를 구성합니다.
노드 풀을 만들 준비가 되면 만들기를 클릭합니다.
gcloud
스팟 VM에서 또는 대기열에 추가된 프로비저닝으로 유연하게 시작을 사용하여 Confidential GKE Node를 실행하는 GPU 노드 풀을 만들 수 있습니다.
스팟 VM에서 컨피덴셜 GKE 노드를 실행하는 GPU 노드 풀을 만듭니다.
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --confidential-node-type=tdx --location=LOCATION \ --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \ --spot --accelerator=type=nvidia-h100-80gb,count=1,gpu-driver-version=DRIVER_VERSION \ --machine-type=a3-highgpu-1g
다음을 바꿉니다.
NODE_POOL_NAME
: 새 노드 풀의 이름입니다.CLUSTER_NAME
: 기존 클러스터의 이름입니다.LOCATION
: 새 노드 풀의 위치입니다. 위치에서 Confidential GKE Node의 GPU 사용을 지원해야 합니다.NODE_LOCATION1,NODE_LOCATION2,...
: 노드를 실행할 영역의 쉼표로 구분된 목록입니다. 이러한 영역은 NVIDIA 컨피덴셜 컴퓨팅 사용을 지원해야 합니다. 자세한 내용은 지원되는 영역 보기를 참고하세요.DRIVER_VERSION
: 설치할 GPU 드라이버 버전입니다. 다음 값 중 하나를 지정합니다.default
: 노드 GKE 버전의 기본 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.latest
: 노드 GKE 버전의 최신 드라이버 버전을 설치합니다. GKE 버전 1.33.3-gke.1392000 이상이 필요합니다.disabled
: 자동 드라이버 설치를 건너뜁니다. 이 값을 지정하는 경우 호환되는 GPU 드라이버를 수동으로 설치해야 합니다. 1.32.2-gke.1297000 이상이 필요합니다.
큐에 추가된 프로비저닝을 통한 flex-start를 사용하여 Confidential GKE Node를 실행하는 GPU 노드 풀을 만듭니다.
gcloud container node-pools create NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-locations=NODE_LOCATION1,NODE_LOCATION2,... \ --machine-type=a3-highgpu-1g --confidential-node-type=tdx \ --location=LOCATION \ --flex-start --enable-queued-provisioning \ --enable-autoscaling --num-nodes=0 --total-max-nodes=TOTAL_MAX_NODES \ --location-policy=ANY --reservation-affinity=none --no-enable-autorepair \ --accelerator=type=nvidia-h100-80gb,count=1,gpu-driver-version=DRIVER_VERSION
TOTAL_MAX_NODES
를 노드 풀이 자동으로 확장할 수 있는 최대 노드 수로 바꿉니다.큐에 추가된 프로비저닝을 통한 flex-start의 구성 옵션에 대한 자세한 내용은 큐에 추가된 프로비저닝을 통한 flex-start로 대규모 워크로드 실행을 참고하세요.
Intel TDX 컨피덴셜 컴퓨팅 기술을 사용하도록 기존 노드 풀을 업데이트하려면 기존 노드 풀 업데이트를 참고하세요.
Confidential GKE Node를 지원하는 GPU 드라이버 수동 설치
노드 풀을 만들거나 업데이트할 때 자동 드라이버 설치를 사용 설정하지 않은 경우 컨피덴셜 GKE 노드를 지원하는 GPU 드라이버를 수동으로 설치해야 합니다.
이 변경사항을 적용하려면 노드를 다시 만들어야 하므로 실행 중인 워크로드가 중단될 수 있습니다. 이 특정 변경사항에 관한 자세한 내용은 유지보수 정책을 준수하지 않고 노드 업그레이드 전략을 사용하여 노드를 다시 만드는 수동 변경사항 표에서 해당 행을 찾으세요. 노드 업데이트에 대한 자세한 내용은 노드 업데이트 중단 계획을 참조하세요.
자세한 내용은 NVIDIA GPU 드라이버 수동 설치의 'COS' 탭을 참고하세요.
문제 해결
문제 해결 정보는 GKE에서 GPU 문제 해결을 참고하세요.