MaxCloud User Docs
演示登录
  • Welcome
    • 介绍
    • 快速开始
  • 使用说明
    • 集群管理
      • 导入集群
      • 创建集群
      • 关联授权
      • 集群功能
    • 项目管理
      • 事件订阅
    • 应用管理
      • 创建应用
      • 灰度发布
      • 持续集成
  • 客户端工具
    • kubemax
    • kubectl
    • 自定义客户端
  • MrMax
    • MrMax客户端使用指南
    • Cybercore
    • SDK Release Version
  • 开发者指南
    • MaxLang语言基础
    • MaxLang内置方法
    • MaxLang操作资源示例
  • 社区活动
    • 技术交流
      • 2023/05/28 亚马逊云科技 Community Day 深圳站
    • 技术文章
      • 2023.5 记一次EKS 1.22->1.26 升级
      • 2023.8 创建EKS后要关注的几个事情
    • Kubernetes Workshop
      • 基础篇
        • Docker学习环境
        • 开始使用Docker
        • 开始使用Kubernetes
      • 实战篇
        • Pod:运行于Kubernetes中的容器
        • ReplicationController:部署托管的pods
        • Service:让客户端发现pod并与之通信
        • Volumes:给containers挂载磁盘
        • ConfigMap和Secret:配置应用程序
        • Deployment: 声明式地升级应用
        • StatefulSet:部署有状态的多副本应用
      • 实践篇
        • Helm Charts(上)
          • 什么是Helm和Chart?
          • 使用Helm
        • Helm Charts(中)
          • 创建自己的chart
          • Chart模版构造和语法
          • 使用仓库管理chart
        • Helm Charts(下)
          • 一个实际的项目
          • 最后,Helm不是必须的
        • 持续集成(Gitops)
由 GitBook 提供支持
在本页
  • Summary
  • 过程记录点

这有帮助吗?

  1. 社区活动
  2. 技术文章

2023.5 记一次EKS 1.22->1.26 升级

上一页技术文章下一页2023.8 创建EKS后要关注的几个事情

最后更新于1年前

这有帮助吗?

Summary

环境:EKS 1.22,5个节点,有statefulset、deployment服务

采用原地in-place方式升级,记录下来发生的事项

版本
注意事项

1.22-1.23

  • EBS CSI 插件和IAM Role升级

  • Node rolling update要求事先解除节点IP依赖

  • kube-proxy 升级

1.23-1.24

无,顺利完成

1.24-1.25

无,顺利完成

1.25-1.26

无,顺利完成

过程记录点

EKS升级时会提示,注意阅读

根据1.22升级到1.23时,需要事先安装EBS CSI Driver

EBSCSIDriver需要权限,所以确认一下IAM Role是否有这个权限policy

确认完毕即可升级到1.23了,不过要确认当前的Node和Master是否为一致版本1.22,否则也不能升级到1.23

按照要求升级Node Group即可

因为EKS每次升级都需要保持Node和Master的一致,而Node升级会发生IP变更,一定要避免在配置文件中使用固定IP,例如如下为redis创建一个service服务

apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  selector:
    app: redis
  ports:
  - port: 6480
    targetPort: 6480

容易忽略的地方是DNS策略,尤其我们使用了hostnetwork时,要参考ClusterFirstWithHostNet的使用,排查DNS问题时注意这个地方

Kubernetes DNS Policy 是指 Kubernetes 集群中用于控制容器访问 DNS 的策略。以下是 Kubernetes DNS 策略的几种类型:

  1. ClusterFirst:这是默认选项,当 Pod 中的容器需要进行 DNS 查询时,会优先使用 Kubernetes 集群中的 DNS 服务。如果查询失败,才会尝试使用其他配置的 DNS 服务器。

  2. ClusterFirstWithHostNet:这个选项与 ClusterFirst 类似,不同之处在于它适用于使用 HostNetwork 模式的 Pod,即容器共享主机网络栈的 Pod。因为容器和主机网络栈共享了相同的网络命名空间,所以容器可以直接访问主机上的 DNS 服务。

  3. Default:这个选项直接使用 Pod 所在节点上的 DNS 服务器解析 DNS 查询请求,而不是使用 Kubernetes 集群中的 DNS 服务。

  4. None:这个选项表示禁止 DNS 查询功能。这在某些高安全性场景下很有用,但通常情况下不建议使用。

除了上述四种类型,还有两个特殊的类型:

  1. External:这个选项定义了自定义 DNS 配置。Pod 访问 DNS 将直接使用该配置。

  2. Cache: 这个选项仅适用于 CoreDNS,它将DNS查询结果缓存在CoreDNS中,下次DNS查询时直接返回缓存结果,从而提高查询效率。

关于kube-proxy虽然EKS没有强制要求跟随每个版本一起升级,但是为了线上稳定性,最好还是一起升级。至于会发生什么问题,这个是未知的,有可能发生master与node通信协议的不一致导致错误。

EKS升级proxy注意调整configmap出现冲突时的模式,例如设置为override

1.23 1.24没有额外特别注意的,1.25时有一个提示PSP,根据各自情况判断,我们这里没有使用PSP

至此,我们安全的完成了1.22至1.26的升级,检查没有发生问题。最后,总结下实践经验,当然需要根据各自情况做抉择

AWS EKS 升级的最佳实践:

  1. 备份数据:在开始升级过程之前,建议先备份 Kubernetes 资源和数据。这有助于在升级过程中出现任何意外情况时进行恢复。

  2. 了解升级流程:AWS EKS 提供两种类型的升级——控制平面升级和节点组升级。控制平面升级涉及升级 EKS 控制平面的 Kubernetes 版本,该平面管理集群的 API 交互和工作负载管理。节点组升级涉及升级集群中节点的 Kubernetes 版本。

  3. 检查兼容性:确保您使用的所有附加组件和工具与新的 EKS 版本兼容。您可以在官方 AWS EKS 文档页面上检查附加组件和工具的兼容性。

  4. 查看发布说明:查看新的 EKS 版本的发布说明,了解更改和新功能。这将帮助您为应用程序或基础架构所需的任何更改做好准备。

  5. 在非生产环境中测试升级:在升级生产环境之前,最好在非生产环境中测试升级。这将确保升级过程顺利进行,不会影响您的生产环境。

  6. 按照推荐升级路径进行操作:AWS EKS 为每个版本提供了推荐的升级路径。按照推荐的升级路径进行操作,以避免任何兼容性问题。

  7. 监控升级进度:在升级过程中,密切监视进展。AWS EKS 提供各种工具,如 CloudWatch 日志、Amazon SNS 和 Amazon EventBridge 来监视升级进度。

  8. 验证升级后的集群:完成升级后,请运行一些测试来验证升级后的集群是否正常运行。

  9. 清理:验证升级后的集群后,请清理任何未使用的资源,以最小化成本。

通过遵循这些最佳实践,您可以顺利地升级 AWS EKS 版本,而不会出现任何问题。