ACK Serverless は、オンデマンドでバッチジョブを実行します。Pod のライフサイクルが終了すると課金が停止するため、バーストワークロードに対してノードを予約したりクラスターを拡張したりする必要はありません。コストに敏感なバッチタスクでは、プリエンプティブルインスタンスを使用することでさらにコストを削減できます。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
ジョブの実行
手順 1:ジョブマニフェストの作成
以下の内容で job.yaml という名前のファイルを作成します。
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
resources:
requests:
cpu: 16
memory: 32Gi
restartPolicy: Never
backoffLimit: 4この例では、16 CPU と 32 GiB のメモリを使用して円周率を小数点以下 2,000 桁まで計算します。
手順 2:ジョブのデプロイ
kubectl apply -f job.yaml手順 3:ジョブステータスの確認
次のコマンドを実行して Pod の状態を確認します。
kubectl get pod期待される出力:
NAME READY STATUS RESTARTS AGE
pi-4f7w5 0/1 Completed 0 80s次のコマンドを実行して、Pod の状態に関する詳細情報を表示します。
kubectl describe pod期待される出力:
Name: pi-4f7w5
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: virtual-kubelet-cn-hongkong-b/10.10.66.169
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulMountVolume 114s kubelet, eci MountVolume.SetUp succeeded for volume "default-token-8k4jz"
Normal Pulling 113s kubelet, eci pulling image "perl"
Normal Pulled 64s kubelet, eci Successfully pulled image "perl"
Normal Created 64s kubelet, eci Created container
Normal Started 64s kubelet, eci Started containerプリエンプティブルインスタンスの使用
プリエンプティブルインスタンスを使用すると、コンピューティングコストを削減できます。プリエンプティブルインスタンスを使用するには、Pod テンプレートにアノテーション k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo を追加します。
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
metadata:
annotations:
k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
resources:
requests:
cpu: 16
memory: 32Gi
restartPolicy: Never
backoffLimit: 4詳細については、「プリエンプティブルインスタンスの使用」をご参照ください。
次のステップ
並列処理、完了回数、障害処理を設定するために、「Kubernetes ジョブの概念」について学習してください。