AWS EKS 详细升级流程

网友投稿 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小时内删除侵权内容。

上一篇:#yyds干货盘点# Kubernetes 怎样对业务数据进行持久化存储?(10)
下一篇:通过GUI或者Phyton API脚本对于主板/背板端,或者外设端进行测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~