1
2

EKS on ALB でターゲットが healthy になってから Pod を終了させる - Readiness Gate

Posted at

Pod readiness gate

ローリングアップデートで新しい Pod を起動
 ↓
ヘルスチェックに成功し、新しい Pod が起動後、古い Pod を削除

EKS + ALBの場合 Pod の起動後に AWS Load Balancer Controller によって ALB にアタッチされるというステップがあるため、アタッチが完了するまでに古い Pod が削除されてしまうと処理可能な Pod がなくなり一時的なダウンタイムが発生する可能性がある。

Readiness Gate は AWS Load Balancer Controller でも ALB のターゲットが healthy になってから Pod の status を Ready にする(古い Pod の削除を開始する)という機能である。

Readiness Gate 設定前

下記を参考に、EKS + ALB を構成し、Readiness Gate を設定前の動作を確認しておく。

下記の通り、READINESS GATES のステータスは none です。

kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP                NODE                                                         NOMINATED NODE   READINESS GATES
nginx-deployment-797bc47df8-g7klt   1/1     Running   0          3m47s   192.168.106.180   fargate-ip-192-168-106-180.ap-northeast-1.compute.internal   <none>           <none>
nginx-deployment-797bc47df8-gkwmt   1/1     Running   0          4m48s   192.168.185.187   fargate-ip-192-168-185-187.ap-northeast-1.compute.internal   <none>           <none>

ALB のターゲットグループで新しい Pod の initial が走ると同時に古い Pod の Draining が始まりました。

スクリーンショット 2024-01-05 20.08.47.png

Readiness Gate 設定後

elbv2.k8s.aws/pod-readiness-gate-inject: enabledの label を namespace に入れる事で Readiness Gate を有効にします。

apiVersion: v1
kind: Namespace

metadata:
  name: readiness
  labels:
    elbv2.k8s.aws/pod-readiness-gate-inject: enabled

下記の通り、READINESS GATES のステータスは 1/1 です。

kubectl get pod -o wide -n readiness

NAME                                READY   STATUS    RESTARTS   AGE     IP                NODE                                                         NOMINATED NODE   READINESS GATES
nginx-deployment-797bc47df8-rkgtg   1/1     Running   0          2m44s   192.168.187.137   fargate-ip-192-168-187-137.ap-northeast-1.compute.internal   <none>           1/1
nginx-deployment-797bc47df8-zw6lw   1/1     Running   0          91s     192.168.177.147   fargate-ip-192-168-177-147.ap-northeast-1.compute.internal   <none>           1/1

ALB のターゲットグループで healthy にならないと古い Pod が draining に入らないため、期待通りの動作となりました。

スクリーンショット 2024-01-05 20.35.26.png

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2