Container Compute Service (ACS) は、分散クラウド コンテナ プラットフォーム for Kubernetes (ACK One) 登録済みクラスターに統合されています。ACK One 登録済みクラスターを使用すると、ACS が提供する計算能力を迅速に利用できます。このトピックでは、ACK One の登録済みクラスターで ACS の計算能力を使用する方法について説明します。
ACK One 登録済みクラスターで ACS の計算能力を使用する方法
Container Compute Service (ACS) は、Kubernetes のコンテナ仕様に準拠したコンテナ計算リソースを提供するクラウド コンピューティング サービスです。ACS は、階層型アーキテクチャを採用して Kubernetes の制御と計算能力を実装しています。計算リソース層は、ポッドにリソースをスケジュールおよび割り当てます。Kubernetes 制御層は、デプロイメント、サービス、ステートフルセット、CronJob などのワークロードを管理します。
ACS の計算能力は、仮想ノードを使用して Kubernetes クラスターに実装できます。このようにして、Kubernetes クラスターは高い弾力性を備え、クラスターノードの計算能力によって制限されなくなります。ACS を使用してポッドのインフラストラクチャ管理を引き継いだ後、Kubernetes クラスターは個々のポッドをスケジュールまたは起動する必要がなくなります。さらに、Kubernetes クラスターは、基盤となる VM のリソースを気にする必要がなくなります。ACS は、いつでもポッドのリソース要件を満たすことができます。
ACK One 登録済みクラスターでは、ack-virtual-node コンポーネントをインストールして仮想ノードをデプロイし、ACS ポッドを作成する必要があります。クラスターをスケールアウトする必要がある場合は、ノードのリソース容量を計画することなく、仮想ノードに ACS ポッドを作成できます。ACS ポッドは、クラスター内の物理ノード上のポッドと通信できます。リソースを効率的に使用し、スケーリング時間を短縮し、コストを削減するには、長時間実行され、仮想ノードへのエラスティック トラフィックを持つ特定のワークロードをスケジュールすることをお勧めします。ビジネストラフィックの数が減少すると、仮想ノード上のポッドを迅速に解放して使用コストを削減できます。仮想ノード上のポッドは、ACS 上に構築された安全で隔離された環境で実行されます。この場合、ポッドは ACS ポッドと呼ばれます。詳細については、「登録済みクラスターの概要」をご参照ください。
前提条件
ACK One 登録済みクラスターを作成する、およびクラスターをデータセンターまたは別のクラウド サービス プロバイダー (CSP) の Kubernetes クラスター (Kubernetes 1.24 以降を推奨) に接続します。
ACK 仮想ノードコンポーネントがインストールされており、コンポーネントのバージョンが 2.13.0 以降であること。詳細については、「ack-virtual-node に RAM 権限を付与する」および「ack-virtual-node をインストールする」をご参照ください。
ACK One 登録済みクラスターで ACS の CPU 計算能力を使用する方法
必要なバージョンの [ACK 仮想ノード] をインストールするか、コンポーネントをバージョン 2.13.0 以降に更新すると、ACS ポッドとエラスティック コンテナ インスタンスを作成できます。
ポッドを仮想ノードにスケジュールするときに、ポッドの計算クラスを指定しないと、デフォルトでポッドのスケジューリングにエラスティック コンテナ インスタンスが優先されます。
ACK クラスターで ACS の計算能力を使用するには、次の手順を実行します。
次の内容を含む nginx.yaml という名前のファイルを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx alibabacloud.com/acs: "true" # ACS の計算能力を使用します。 alibabacloud.com/compute-class: general-purpose # ACS ポッドの計算クラス。 alibabacloud.com/compute-qos: default # ACS ポッドの QoS クラス。 spec: containers: - name: nginx image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine ports: - containerPort: 80 protocol: TCP resources: limits: cpu: 2 requests: cpu: 2次のコマンドを実行して、NGINX アプリケーションを作成します。
kubectl apply -f nginx.yaml次のコマンドを実行して、NGINX アプリケーションがデプロイされているかどうかを確認します。
kubectl get pods -o wide予期される出力:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-54bcbc9b66-**** 1/1 Running 0 3m29s 192.168.XX.XXX virtual-kubelet-cn-shanghai-l <none> <none> nginx-54bcbc9b66-**** 1/1 Running 0 3m29s 192.168.XX.XXX virtual-kubelet-cn-shanghai-l <none> <none>コマンド出力は、2 つのポッドが
type=virtual-kubeletラベルを持つノードにデプロイされていることを示しています。これは、デプロイメント構成のnodeSelectorパラメーターで指定されています。次のコマンドを実行して、NGINX アプリケーション用に作成されたポッドの詳細をクエリします。
kubectl describe pod nginx-54bcbc9b66-****予期される出力:
Annotations: ProviderCreate: done alibabacloud.com/instance-id: acs-uf6008giwgjxlvn***** alibabacloud.com/pod-ephemeral-storage: 30Gi alibabacloud.com/pod-use-spec: 2-2Gi kubernetes.io/pod-stream-port: 10250 network.alibabacloud.com/enable-dns-cache: false topology.kubernetes.io/region: cn-shanghaiコマンド出力は、ポッドの構成に
alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****アノテーションが含まれていることを示しています。これは、ポッドが ACS ポッドであることを示しています。
ACK One 登録済みクラスターで ACS の GPU 計算能力を使用する方法
ACS GPU 計算能力を使用する手順は、ACS CPU 計算能力を使用する手順と似ています。ただし、スケジューリングコンポーネントがバージョン要件を満たしていること、および追加の構成がいくつか追加されていることを確認する必要もあります。
アクティベーション
ACK クラスターで ACS GPU 計算能力を使用する機能は、招待プレビュー中です。この機能を使用するには、チケットを送信 してください。
ACK One の登録済みクラスターで ACS の計算能力を使用する方法
...
labels:
# ACS GPU リソースをリクエストするためのラベルを追加します。
alibabacloud.com/compute-class: gpu # GPU 計算能力を使用する場合は gpu に設定します。
alibabacloud.com/compute-qos: default # QoS クラス。通常の ACS 計算能力と同じです。
alibabacloud.com/gpu-model-series: example-model # GPU モデル。使用する実際のモデル (T4 など) を指定します。
...ACS 計算クラスと QoS クラスの関係の詳細については、「計算クラスと計算能力 QoS クラスのマッピング」をご参照ください。
gpu-model-seriesでサポートされている GPU モデルの詳細については、「ACS GPU アクセラレーション ポッドの GPU モデルとドライバーバージョンを指定する」をご参照ください。
次の内容を使用して GPU ワークロードを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: dep-node-selector-demo labels: app: node-selector-demo spec: replicas: 1 selector: matchLabels: app: node-selector-demo template: metadata: labels: app: node-selector-demo # ACS 属性。 alibabacloud.com/acs: "true" # ACS の計算能力を使用します。 alibabacloud.com/compute-class: gpu alibabacloud.com/compute-qos: default alibabacloud.com/gpu-model-series: example-model # GPU モデル。使用する実際のモデル (T4 など) を指定します。 spec: containers: - name: node-selector-demo image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4 command: - "sleep" - "1000h" resources: limits: cpu: 1 memory: 1Gi nvidia.com/gpu: "1" requests: cpu: 1 memory: 1Gi nvidia.com/gpu: "1"次のコマンドを実行して、GPU アクセラレーション ワークロードのステータスをクエリします。
kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyaml予期される出力:
phase: Running resources: limits: #その他のリソース nvidia.com/gpu: "1" requests: #その他のリソース nvidia.com/gpu: "1"