您可以在容器上啟用及管理圖形處理器 (GPU) 資源。舉例來說,您可能偏好在 GPU 環境中執行人工智慧 (AI) 和機器學習 (ML) 筆記本。如要執行 GPU 容器工作負載,您必須擁有支援 GPU 裝置的 Kubernetes 叢集。如果 Kubernetes 叢集已佈建 GPU 機器,系統預設會啟用 GPU 支援。
本文適用於應用程式運算子群組中的應用程式開發人員,負責為所屬機構建立應用程式工作負載。詳情請參閱 GDC air-gapped 的目標對象說明文件。
事前準備
如要將 GPU 部署至容器,您必須具備下列條件:
具有 GPU 機器類別的 Kubernetes 叢集。如要瞭解叢集機器的設定選項,請參閱「支援的 GPU 卡」一節。
使用者叢集管理員角色 (
user-cluster-admin):檢查共用叢集中的 GPU。專案命名空間中的命名空間管理員角色 (namespace-admin):將 GPU 工作負載部署至共用叢集。標準叢集管理員角色 (
standard-cluster-admin):檢查標準叢集中的 GPU。標準叢集中的叢集開發人員角色 (cluster-developer):將 GPU 工作負載部署至標準叢集。如要對 Kubernetes 叢集執行指令,請確認您具備下列資源:
找出 Kubernetes 叢集名稱,或向平台管理員群組成員詢問叢集名稱。
如果沒有 Kubernetes 叢集的 kubeconfig 檔案,請登入並產生該檔案。
請使用 Kubernetes 叢集的 kubeconfig 路徑,替換這些操作說明中的
KUBERNETES_CLUSTER_KUBECONFIG。
代管 Kubernetes 叢集的區域管理 API 伺服器 kubeconfig 路徑。登入並產生 kubeconfig 檔案 (如果沒有)。
可用區中機構基礎架構叢集的 kubeconfig 路徑,該可用區預計會代管 GPU。登入並產生 kubeconfig 檔案 (如果沒有)。
設定容器以使用 GPU 資源
如要在容器中使用這些 GPU,請完成下列步驟:
確認 Kubernetes 叢集是否具備支援 GPU 的節點集區:
kubectl describe clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER更改下列內容:
KUBERNETES_CLUSTER_NAME:叢集名稱。KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用platform命名空間。如果是標準叢集,請使用叢集的專案命名空間。MANAGEMENT_API_SERVER:區域 API 伺服器的 kubeconfig 路徑,Kubernetes 叢集即是代管於此。如果您尚未在目標區域中為 API 伺服器產生 kubeconfig 檔案,請參閱「登入」。
相關輸出內容會與下列程式碼片段類似:
# Several lines of code are omitted here. spec: nodePools: - machineTypeName: a2-ultragpu-1g-gdc nodeCount: 2 # Several lines of code are omitted here.如需支援的 GPU 機器類型和多重執行個體 GPU (MIG) 設定檔完整清單,請參閱叢集節點機器類型。
將
.containers.resources.requests和.containers.resources.limits欄位新增至容器規格。每個資源名稱會因機器類別而異。檢查 GPU 資源分配情形,找出 GPU 資源名稱。舉例來說,下列容器規格會從
a2-ultragpu-1g-gdc節點要求三個 GPU 分區:... containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 ...容器也需要額外權限才能存取 GPU。針對要求 GPU 的每個容器,請在容器規格中新增下列權限:
... securityContext: seLinuxOptions: type: unconfined_t ...套用容器資訊清單檔案:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG更改下列內容:
CONTAINER_MANIFEST_FILE:容器工作負載的 YAML 資訊清單檔案。KUBERNETES_CLUSTER_NAMESPACE:叢集的命名空間。如果是共用叢集,請使用platform命名空間。如果是標準叢集,請使用叢集的專案命名空間。KUBERNETES_CLUSTER_KUBECONFIG:叢集的 kubeconfig 路徑。
檢查 GPU 資源分配
如要檢查 GPU 資源分配情形,請使用下列指令:
kubectl describe nodes NODE_NAME --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG更改下列內容:
NODE_NAME:管理要檢查的 GPU 的節點。KUBERNETES_CLUSTER_KUBECONFIG:叢集的 kubeconfig 路徑。
相關輸出內容會與下列程式碼片段類似:
# Several lines of code are omitted here. Capacity: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 # Several lines of code are omitted here.
請記下 GPU 的資源名稱,設定容器使用 GPU 資源時必須指定這些名稱。