更新集群控制平面
https://docs.amazonaws.cn/eks/latest/userguide/update-cluster.html
更新托管节点组
https://docs.amazonaws.cn/eks/latest/userguide/update-managed-node-group.html
更新非托管节点组
https://docs.amazonaws.cn/eks/latest/userguide/update-workers.html
按照官方说法,建议每次升级一个小版本,如1.19—1.20这样,不要跨版本升级,以免造成意外情况。
eksctl upgrade cluster --name xxx --approve
eksctl get cluster xxx
平滑升级流程
查看原节点组数量(eksctl) – 启动新的节点组保证数量(eksctl)–暂停主机调度(rancher)–重新部署(rancher)–观察全部迁移完成(rancher/kubectl)–删除老的节点组(eksctl)
查看原节点组数量
eksctl get nodegroups --cluster=xxx
拷贝并修改为新节点组配置文件,保持节点数量desiredCapacity一致,避免pod pending
eksctl create nodegroup --config-file=xxx.yml
在rancher中“暂停”原来的节点组,禁止调度
在rancher中“重新部署”节点组中的pod,使其滚动部署到新的节点组,速度较慢(若在业务低峰期间,对可用性要求不高,可以直接“驱逐”,会删除老的pod,创建新的pod,速度较快)对于statefuset应用注意是否绑定指定可用区的gp2 pvc。若在宁夏a区,可增加如下label:topology.kubernetes.io/zone = cn-northwest-1a,
待到全部启动成功,删除老的节点组即可。
eksctl delete nodegroup --cluster=xxx --name=节点组名字
managedNodeGroups 升级最少修改参数
托管节点组官方ami查看
通常修改以下三个字段:
1、metadata.version: "1.20" # 版本
2、managedNodeGroups.name: "xxx-20" # 节点组名
3、managedNodeGroups.ami: "ami-0e88a5d4b6efb1f09" # 新版本使用的ami
nodeGroups 升级最少修改参数
通常修改以下两个字段:
1、metadata.version: "1.20" # 版本
2、nodeGroups.name: "xxx-20" # 节点组名