EKS Auto Mode スケーリング動作クイズ
関連ドキュメント: スケーリング動作
選択問題
1. NodePool の consolidationPolicy: WhenEmptyOrUnderutilized はどのように動作しますか?
- A) 空の node (ノード) のみを削除する
- B) 空の node と利用率の低い node の両方を統合する
- C) 常にすべての node を維持する
- D) 特定の時刻にのみ node を削除する
解答を表示
解答: B) 空の node と利用率の低い node の両方を統合する
解説:WhenEmptyOrUnderutilized ポリシーは、コストを最適化するために、空の node だけでなく利用率の低い node も統合します。これにより、複数の利用率の低い node 上の workload を、より少ない node に統合できます。
yaml
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 1m # Consolidate 1 minute after condition is met比較:
WhenEmpty: 空の node のみを削除する(保守的)WhenEmptyOrUnderutilized: 空の node + 利用率の低い node を統合する(積極的)
2. NodeClaim のステータスを確認する kubectl コマンドはどれですか?
- A)
kubectl get nodes --show-claims - B)
kubectl get nodeclaims - C)
kubectl describe karpenter claims - D)
kubectl get ec2-nodes
解答を表示
解答: B) kubectl get nodeclaims
解説: NodeClaim は、プロビジョニング中の node の状態を表す resource です。
bash
# List NodeClaims
kubectl get nodeclaims
# Detailed information for specific NodeClaim
kubectl describe nodeclaim <name>
# View NodeClaims with node information
kubectl get nodeclaims -o wide3. Auto Mode で Pending Pod が発生したとき、どの条件で node のプロビジョニングが開始されますか?
- A) Pod が 5 分を超えて Pending になっている場合
- B) NodePool の要件を満たす node がない場合
- C) node の総数がしきい値を下回った場合
- D) 手動のスケールアップコマンドが実行された場合
解答を表示
解答: B) NodePool の要件を満たす node がない場合
解説: Auto Mode は Pending Pod の要件を分析し、適切な node が存在しない場合はすぐに新しい node をプロビジョニングします。
プロビジョニングフロー:
- Pod が Pending 状態になる
- Karpenter が Pod のリソースリクエスト、nodeSelector、affinity を分析する
- 適切な NodePool の要件を確認する
- 最適なインスタンスタイプを選択する
- EC2 instance を起動する(40〜90 秒)
4. Consolidation が発生しないのはどのケースですか?
- A) node に do-not-disrupt annotation がある場合
- B) node に DaemonSet Pod しかない場合
- C) consolidateAfter の時間が経過していない場合
- D) 上記すべて
解答を表示
解答: D) 上記すべて
解説: Consolidation は次の状況では発生しません。
- do-not-disrupt annotation: この annotation がある node または Pod は Consolidation から除外されます
- DaemonSet Pod のみ: DaemonSet はすべての node で実行されるため、空の node として扱われます
- consolidateAfter が経過していない: 条件が満たされた後、指定された時間待機する必要があります
yaml
metadata:
annotations:
karpenter.sh/do-not-disrupt: "true"5. Drift 検出をトリガーする状況はどれですか?
- A) NodeClass spec が変更された場合
- B) 新しい AMI が利用可能になった場合
- C) security group が変更された場合
- D) 上記すべて
解答を表示
解答: D) 上記すべて
解説: Drift 検出は、node の現在の状態が望ましい状態と異なる場合にトリガーされます。
- NodeClass の変更: AMI family、subnet、security group などが変更された
- 新しい AMI: EKS optimized AMI が更新された
- security group の変更: 参照されている security group が変更された
Drift が検出されると、node は順番に置き換えられます。
6. node のプロビジョニング速度を最適化するために推奨される AMI family はどれですか?
- A) AL2023
- B) Bottlerocket
- C) Ubuntu
- D) Amazon Linux 2
解答を表示
解答: B) Bottlerocket
解説: Bottlerocket は container 専用に設計された OS で、AL2023 よりも高速な起動時間を提供します。
起動時間の比較:
- AL2023: 20-40 seconds
- Bottlerocket: 15-25 seconds
Bottlerocket の追加の利点:
- 攻撃対象領域が小さい
- immutable file system
- 自動 security update