メインコンテンツまでスキップ

スポットでワークロードを実行する

次に、サンプル小売店アプリケーションを変更して、カタログコンポーネントを新しく作成したスポットインスタンスで実行してみましょう。そのためには、Kustomizeを使用してcatalogデプロイメントにパッチを適用し、nodeSelectorフィールドにeks.amazonaws.com/capacityType: SPOTを追加します。

~/environment/eks-workshop/modules/fundamentals/mng/spot/deployment/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: catalog
spec:
template:
spec:
nodeSelector:
eks.amazonaws.com/capacityType: SPOT

次のコマンドでKustomizeパッチを適用します。

~$kubectl apply -k ~/environment/eks-workshop/modules/fundamentals/mng/spot/deployment
 
namespace/catalog unchanged
serviceaccount/catalog unchanged
configmap/catalog unchanged
secret/catalog-db unchanged
service/catalog unchanged
service/catalog-mysql unchanged
deployment.apps/catalog configured
statefulset.apps/catalog-mysql unchanged

以下のコマンドで、アプリケーションが正常にデプロイされたことを確認します。

~$kubectl rollout status deployment/catalog -n catalog --timeout=5m

最後に、カタログポッドがスポットインスタンス上で実行されていることを確認しましょう。次の2つのコマンドを実行します。

~$kubectl get pods -l app.kubernetes.io/component=service -n catalog -o wide
 
NAME                       READY   STATUS    RESTARTS   AGE     IP              NODE
catalog-6bf46b9654-9klmd   1/1     Running   0          7m13s   10.42.118.208   ip-10-42-99-254.us-east-2.compute.internal
~$kubectl get nodes -l eks.amazonaws.com/capacityType=SPOT
 
NAME                                          STATUS   ROLES    AGE   VERSION
ip-10-42-139-140.us-east-2.compute.internal   Ready    <none>   16m   v1.33-eks-036c24b
ip-10-42-99-254.us-east-2.compute.internal    Ready    <none>   16m   v1.33-eks-036c24b
 

最初のコマンドは、カタログポッドがノードip-10-42-99-254.us-east-2.compute.internalで実行されていることを示しています。2番目のコマンドの出力と照合すると、これがスポットインスタンスであることが確認できます。

このラボでは、スポットインスタンスを作成するマネージドノードグループをデプロイし、catalogデプロイメントを変更して新しく作成されたスポットインスタンス上で実行するようにしました。このプロセスに従って、クラスター内で実行中の任意のデプロイメントを、上記のKustomizationパッチで指定されているnodeSelectorパラメータを追加することで変更することができます。