c语言sscanf函数的用法是什么
400
2022-10-23
AWS EKS 详细升级流程
升级概述
AWS EKS作为K8S的云平台托管服务,也需要跟随K8S的版本迭代,进行定期升级更新。 如何升级,以及升级的详细步骤,在本文有详细的记录和描述。
EKS更新时间线如下:
版本更新差异,请参考文档:
Docker 容器运行时间已逐步停止。Kubernetes 社群已经就这一点撰写了一篇详细的博客文章并提供了专门的常见问题页面。Docker 生成的镜像可以继续使用,并且会一如既往地发挥功能。您可以安全地忽略 kubelet 启动日志中打印的 dockershim 弃用警告消息。EKS 最终将迁移到 Containerd,后者将作为 EKS 优化版 Amazon Linux 2 AMI 的运行时间。您可以参阅容器路线图问题,了解更多详细信息。
Kubernetes 计划在即将发布的 1.24 版本里弃用 dockershim
通过切换node group的方式升级,控制层面升级,数据层面升级(增加新的node group,升级并切换),插件升级
3. 通过ALB, Nginx的流量控制,进行升级
测试环境准备
1. 先安装AWS Cli 和 kubectl,参考链接如下
1.18
2.安装EKS
2.1 配置kubectl,
aws eks --region us-east-2 update-kubeconfig --name eks1118
2.2 创建命令
AWS_REGION=us-east-2AWS_DEFAULT_REGION=us-east-2CLUSTER_NAME=eks11811eksctl create cluster --name=${CLUSTER_NAME} --version 1.18 --nodes=10--node-type c5.large --managed --alb-ingress-access --region=${AWS_REGION}
注释:
创建了 1.18 版或更高版本的集群后,您可以将随集群一起部署的 Amazon VPC CNI、CoreDNS 和 kube-proxy 附加组件迁移到 Amazon EKS 附加组件。有关更多信息,请参阅 Amazon EKS 附加组件。
3. 创建完成的EKS 1.18版本
升级测试
本文将升级方法分为三类:原地顺序升级,通过更新节点组的方式升级,ALB/Nginx流量分配方式升级
方法一:原地顺序升级
1.升级过程的官方文档说明:
Amazon EKS 对这些新节点上的网络流量执行标准基础设施和就绪运行状况检查,以确认它们是否按预期工作。如果任意一项检查失败,Amazon EKS 都将恢复基础设施部署,且您的集群保留为先前的 Kubernetes 版本。正在运行的应用程序不会受影响,并且您的集群绝不会处于不确定性或不可恢复的状态。Amazon EKS 会定期备份所有托管的集群,并且具有在必要时恢复集群的机制。我们会不断评估和改进我们的 Kubernetes 基础设施管理流程。
2. 升级是不能回退的
3.只能逐个版本升级
4. 需要先升级控制层面,升级时间在30分钟左右,升级过程平稳。
5. 升级节点组方式
5.1. 注释:
AMI:
• 迁移到新的节点组 – 创建一个新的节点组并将您的 Pod 迁移到该组。迁移到新的节点组要比简单地更新现有 AWS CloudFormation 堆栈中的 AMI ID 更为自然,因为迁移过程会以 NoSchedule 形式对旧节点组执行 Taint 操作,并在新堆栈准备好接受现有 Pod 工作负载后耗尽这些节点。
• 更新现有自行管理的节点组 – 更新现有节点组的 AWS CloudFormation
堆栈以使用新 AMI。使用 eksctl 创建的节点组不支持此方法。
6. 节点组升级过程—更新现有自行管理节点组
6.1. 节点组升级,有两个升级选项,Rolling和Force,建议Rolling方式升级
6.2 升级过程中,会新增Node,用来转移pod
6.3. 在启动的过程中,node节点开始逐步替换
6.4. 托管节点更新行为
新的托管节点组升级完成,可以删除老的托管节点组
AMI:
迁移到新的节点组 – 创建一个新的节点组并将您的 Pod 迁移到该组。迁移到新的节点组要比简单地更新现有 AWS CloudFormation 堆栈中的 AMI ID 更为自然,因为迁移过程会以 NoSchedule 形式对旧节点组执行 Taint 操作,并在新堆栈准备好接受现有 Pod 工作负载后耗尽这些节点。
2. 新增节点组
可以选择不同机型的节点组
4. 查看节点组
注意事项
这种方法,也是需要先更新控制层面,然后更新节点组。
可以通过命令行进行尝试,在更新控制层面之前更新节点组,会报错。需要先升级控制层面,并保证节点组的版本不高于控制层面。您可以将节点组升级到与控制层面的 Kubernetes 版本相同的版本。例如,如果您的集群运行 Kubernetes 1.19,则您可以使用以下命令将当前运行 Kubernetes 1.18 的节点升级到版本 1.19。
样例:
eksctl upgrade nodegroup \ --name=ng119 \ --cluster=eks11811 \ --kubernetes-version=1.19Error: InvalidParameterException: Nodegroup Kubernetes version should beequal to Cluster kubernetes version 1.18 or NodeGroup kubernetes version 1.18{ RespMetadata: { StatusCode: 400, RequestID:"c9133322-2fe0-4fa2-94aa-792caa95f29d" }, ClusterName: "eks11811", Message_: "NodegroupKubernetes version should be equal to Cluster kubernetes version 1.18 orNodeGroup kubernetes version 1.18", NodegroupName: "ng119"}
6. 更新节点组, 两个节点组,是可以各自单独执行升级。
6.1. 可以在控制台升级,也可以通过命令行升级
6.2. 更新完成
7. 现在已经存在两个版本不同的节点组,可以通过eksctl和kubectl,将pod进行迁移操作。
8.确定pod在新版本node上运行正常之后,可以删除老版本节点组。
迁移到新的节点组
Amazon EKS 中的工作线程节点
等方式,通过权重 进行流量分配,这种方法不涉及EKS升级,不过多测试,提供以下两个文档参考。
2. 如何为我的 Application LoadBalancer 设置加权目标组
权重分配
Add-ons 附加组件升级
1. 控制层面和数据层面升级后,需要检查组件,并根据对应版本进行升级。对应版本,请参考如下文档:
管理 kube-proxy 附加组件
CoreDNS 附加组件
升级完成
参考文档:
Amazon EKS 集群升级指南
EKS Kubernetes 版本
Managed Node Group 高效管理 Amazon EKS 集群
Amazon EKS 中的工作线程节点
Application Load Balancer 设置加权目标组?
EKS 附加组件
CoreDNS 附加组件
https://docs.amazonaws.cn/eks/latest/userguide/managing-coredns.html
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~