Gravitonでポッドを実行する
Gravitonノードグループをtaintで設定したので、このアプリケーションを活用するように設定する必要があります。そのために、uiマイクロサービスをGravitonベースのマネージドノードグループの一部であるノードにのみデプロイするようにアプリケーションを構成します。
変更を行う前に、現在のUIポッドの構成を確認しましょう。これらのポッドはuiという名前の関連デプロイメントによって制御されていることに留意してください。
~$kubectl describe pod --namespace ui --selector app.kubernetes.io/name=ui
Name: ui-7bdbf967f9-qzh7f
Namespace: ui
Priority: 0
Service Account: ui
Node: ip-10-42-11-43.us-west-2.compute.internal/10.42.11.43
Start Time: Wed, 09 Nov 2022 16:40:32 +0000
Labels: app.kubernetes.io/component=service
app.kubernetes.io/created-by=eks-workshop
app.kubernetes.io/instance=ui
app.kubernetes.io/name=ui
pod-template-hash=7bdbf967f9
Status: Running
[....]
Controlled By: ReplicaSet/ui-7bdbf967f9
Containers:
[...]
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
予想通り、アプリケーションはtaintされていないノードで正常に実行されています。関連するポッドはRunningステータスであり、カスタムtolerationが設定されていないことを確認できます。Kubernetesは、あなたやコントローラーが明示的にこれらのtolerationを設定しない限り、node.kubernetes.io/not-readyとnode.kubernetes.io/unreachableのtolerationをtolerationSeconds=300で自動的に追加することに注意してく ださい。これらの自動的に追加されるtolerationは、これらの問題のいずれかが検出されてから5分間、ポッドがノードにバインドされたままであることを意味します。
taintされたマネージドノードグループにポッドをバインドするようにuiデプロイメントを更新しましょう。nodeSelectorで使用できるように、taintされたマネージドノードグループにtainted=yesというラベルを事前に設定しました。以下のKustomizeパッチは、このセットアップを有効にするためにデプロイメント構成に必要な変更を説明しています:
- Kustomize Patch
- Deployment/ui
- Diff
~/environment/eks-workshop/modules/fundamentals/mng/graviton/nodeselector-wo-toleration/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ui
spec:
template:
spec:
nodeSelector:
kubernetes.io/arch: arm64