使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何将您的EKS集群升级到新版本?

2 分钟阅读
内容级别:中级
0

升级 Amazon Elastic Kubernetes Service (EKS) 集群对于利用 Kubernetes 的最新功能、安全补丁和性能改进至关重要。本指南提供了将 EKS 集群从任何版本升级到较新版本的清晰分步过程。本博客的目的是帮助 Kubernetes 管理员和 DevOps 工程师顺利高效地执行此升级,最大限度地减少停机时间并确保其工作负载的持续可靠性/安全性。

本指南概述了升级 Amazon Elastic Kubernetes Service (EKS) 集群的方法,涵盖控制平面和数据平面工作节点。

它提供了准备、执行和升级后验证的详细步骤,确保平稳过渡到较新的 Kubernetes 版本。主要行动包括:

  • 验证兼容性,
  • 备份数据,
  • 更新工具、封锁节点以防止新的 pod 调度,以及系统地升级托管和自管理节点组.

该指南还强调了更新必要的addon-ons和升级后测试工作负载的重要性,以保持 Kubernetes 环境的稳定性和性能。这可确保您的集群利用最新功能、安全补丁和性能改进,为云原生应用程序提供坚实的基础。

分步升级指南

1. 准备

  1. 检查兼容性:

  • 验证您的工作负载和附加组件是否与目标 Kubernetes 版本兼容。
  • 查看 EKS Kubernetes 版本发行说明。
  1. 备份数据:

  • 备份集群数据和配置,以确保您可以在需要时恢复它们。
  1. 更新 kubectl:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
  1. 更新 AWS CLI:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

2. 升级 EKS 控制平面

  1. 检查当前版本:

aws eks describe-cluster --name <cluster_name> --query cluster.version --output text
  1. 启动控制平面升级:

aws eks update-cluster-version --name <cluster_name> --kubernetes-version <target_version>
  1. 监控升级过​​程:升级过程可能需要一些时间。使用命令监控状态:

aws eks describe-update --name <cluster_name> --update-id <update_id>

3. 升级工作节点

托管节点组

  1. 封锁节点: 防止在节点上调度新的 pod:
kubectl cordon <node_name>
  1. 更新托管节点组:对于每个托管节点组:
aws eks update-nodegroup-version --cluster-name <cluster_name> --nodegroup-name <node_group_name> --kubernetes-version <target_version>
  1. 监控升级过​​程:

检查节点组更新状态:

aws eks describe-update --cluster-name <cluster_name> --nodegroup-name <node_group_name> --update-id <update_id>

自管理节点组

  1. 封锁并排空旧节点:
  • 防止调度新的 Pod 并安全地迁移工作负载:
kubectl cordon <node_name>
kubectl drain <node_name> --ignore-daemonsets --delete-local-data
  1. 创建新节点组:使用所需的 Kubernetes 版本创建新节点组:
eksctl create nodegroup --cluster <cluster_name> --name <new_node_group> --kubernetes-version <target_version>
  1. 删除旧节点组:
  • 删除旧节点组:
eksctl delete nodegroup --cluster <cluster_name> --name <old_node_group>

4. 升级后步骤

  1. 验证升级:

  • 检查节点并确保它们正在运行所需的版本:
kubectl get nodes
  1. 升级 Add-ons:

  • 更新必要的附加组件以确保与新的 Kubernetes 版本兼容:
eksctl update addon --name vpc-cni --cluster <cluster_name>
eksctl update addon --name kube-proxy --cluster <cluster_name>
eksctl update addon --name coredns --cluster <cluster_name>
  1. 测试工作负载:

  • 确保所有应用程序在升级后正常运行:
kubectl get pods -A
  1. 清理:

  • 删除旧节点组(如果尚未完成)

总结

通过这种方法(包括在升级之前封锁节点),您可以高效地升级 EKS 集群。此过程有助于确保您的 Kubernetes 环境具有最新的功能和安全增强,保持应用程序的稳健性和性能,并为您的云原生工作负载提供坚实的基础。

本文翻译自:How to Upgrade Your EKS Cluster to the Latest Version?

profile pictureAWS
支持工程师
已​发布 2 个月前560 查看次数