EKS Auto Mode 扩展行为测验
相关文档: Scaling Behavior
选择题
1. NodePool 的 consolidationPolicy: WhenEmptyOrUnderutilized 行为是什么?
- A) 只移除空节点
- B) 同时整合空节点和利用率不足的节点
- C) 始终保留所有节点
- D) 只在特定时间移除节点
显示答案
答案:B) 同时整合空节点和利用率不足的节点
解释:WhenEmptyOrUnderutilized 策略不仅会整合空节点,还会整合利用率不足的节点以优化成本。这允许将多个利用率不足节点上的工作负载整合到更少的节点上。
yaml
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 1m # Consolidate 1 minute after condition is met比较:
WhenEmpty: 只移除空节点(保守)WhenEmptyOrUnderutilized: 整合空节点 + 利用率不足的节点(激进)
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 是表示正在预置的节点状态的资源。
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 时,什么条件下会开始节点预置?
- A) 当 Pod 处于 Pending 状态超过 5 分钟时
- B) 当没有节点满足 NodePool 的要求时
- C) 当节点总数低于阈值时
- D) 当执行手动扩容命令时
显示答案
答案:B) 当没有节点满足 NodePool 的要求时
解释: Auto Mode 会分析 Pending Pods 的要求,并在不存在合适节点时立即预置新节点。
预置流程:
- Pod 进入 Pending 状态
- Karpenter 分析 Pod 的资源请求、nodeSelector、affinity
- 检查合适 NodePools 的要求
- 选择最佳实例类型
- 启动 EC2 实例(40-90 秒)
4. 在哪些情况下不会发生 Consolidation?
- A) 当节点带有 do-not-disrupt annotation 时
- B) 当节点上只有 DaemonSet Pods 时
- C) 当 consolidateAfter 时间尚未经过时
- D) 以上全部
显示答案
答案:D) 以上全部
解释: 在以下情况下不会发生 Consolidation:
- do-not-disrupt annotation: 带有此 annotation 的节点或 Pods 会被排除在 Consolidation 之外
- 只有 DaemonSet Pods: DaemonSets 在所有节点上运行,因此被视为空节点
- consolidateAfter 尚未经过: 必须在条件满足后等待指定时间
yaml
metadata:
annotations:
karpenter.sh/do-not-disrupt: "true"5. 哪些情况会触发 Drift 检测?
- A) 当 NodeClass spec 发生变化时
- B) 当新的 AMI 可用时
- C) 当 security groups 发生变化时
- D) 以上全部
显示答案
答案:D) 以上全部
解释: 当节点的当前状态与期望状态不同时,会触发 Drift 检测:
- NodeClass 变化: AMI 系列、subnets、security groups 等发生变化
- 新的 AMI: EKS optimized AMI 已更新
- Security group 变化: 引用的 security groups 已修改
检测到 Drift 后,节点会被依次替换。
6. 建议使用哪个 AMI 系列来优化节点预置速度?
- A) AL2023
- B) Bottlerocket
- C) Ubuntu
- D) Amazon Linux 2
显示答案
答案:B) Bottlerocket
解释: Bottlerocket 是专为容器设计的 OS,与 AL2023 相比可提供更快的启动时间。
启动时间比较:
- AL2023: 20-40 秒
- Bottlerocket: 15-25 秒
Bottlerocket 的其他优势:
- 更小的攻击面
- 不可变文件系统
- 自动安全更新