测验:升级与版本偏差
当 apiserver 为 1.34 时,可以搭配的 kubelet 次要版本范围是什么?
- 仅 1.34
- 1.32 ~ 1.35
- 1.33 ~ 1.35
- 1.31 ~ 1.34
当 apiserver 为 1.34 时,kubectl 可以使用哪些版本?
- 仅 1.34 及以下
- 1.31 ~ 1.34
- 1.33 ~ 1.35
- 没有限制
准备把 1.32 集群升级到 1.34,正确方式是什么?
- 升级 kubectl 到 1.34,集群就会自动跟上
- 直接一次升到 1.34
- 先经过 1.33,每次升一个次要版本
- 先把节点升到 1.34,再升级控制平面
cordon 和 drain 有什么区别?
- cordon 只用于控制平面节点,工作节点只能使用 drain
- drain 清空 Pod 后会把节点从集群列表移除
- cordon 删除 Pod,drain 删除节点
- cordon 只阻止新的调度,drain 还会驱逐已有 Pod
拥有 3 个副本的 Deployment 配置了 minAvailable: 2 的 PDB。执行 drain 时会怎样?
- PDB 是调度器策略,不影响 drain
- 3 个副本会同时被驱逐,然后 PDB 等待恢复
- 在始终至少保留 2 个可用副本的前提下逐步驱逐
- 由于 minAvailable 为 2,所有驱逐请求都会被拒绝
升级出错时,想把控制平面降回上一个次要版本,正确判断是什么?
- 给
kubeadm upgrade apply指定较低版本即可 - 将节点软件包重新安装为旧版本并重启即可
- 降低 kubectl 和 kubelet 的版本,控制平面会随之降低
- 不支持控制平面降级,应使用升级前的 etcd 快照恢复
升级三个节点时,设置金丝雀阶段的最佳理由是什么?
- 先升级一台,就可以让 kubelet 跳过一个次要版本
- 逐台升级可以缩短整个升级时间
- 只 drain 一台可以绕过 PDB 的 minAvailable 约束
- 发生问题时将影响限制在一台节点,并与正常节点比较