ACK Serverlessクラスターでは、ビジネス要件を満たすポッドを作成できます。 ポッドのライフサイクルが終了すると、システムはポッドへの課金を停止します。 ジョブを処理するためにコンピューティングリソースを予約する必要はありません。 これにより、不十分なコンピューティングリソースの問題が解決され、クラスターを拡張する必要がなくなります。 さらに、プリエンプティブルインスタンスを使用することで、コンピューティングコストを削減できます。 このトピックでは、ACK Serverlessを使用してビジネス要件を満たすジョブを作成する方法について説明します。
前提条件
手順
kubectlクライアントを使用して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
次のコマンドを実行してジョブをデプロイします。
kubectl apply -f job.yaml
次のコマンドを実行して、ポッドの状態を確認します。
次のコマンドを実行して、ポッドの状態を確認します。
kubectl get pod
期待される出力:
NAME READY STATUS RESTARTS AGE pi-4f7w5 0/1 Completed 0 80s
次のコマンドを実行して、ポッドの状態に関する詳細情報を表示します。
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
オプション: プリエンプティブルインスタンスを使用するには、プリエンプティブルインスタンスの注釈をポッドに追加します。
プリエンプティブルインスタンスにアノテーションを追加する方法の詳細については、「プリエンプティブルインスタンスの使用」をご参照ください。
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