Amazon EKS 升级
最后更新: July 3, 2026
让你的 Amazon EKS cluster 保持最新,对于安全性、稳定性以及利用新功能都很重要。本文档提供了安全升级 EKS cluster 的策略、最佳实践和分步指南。
目录
EKS 升级概览
EKS 版本管理
Amazon EKS 遵循 Kubernetes 版本管理策略:
- Version Support: EKS 同时支持至少 4 个 Kubernetes 版本。
- Support Period: 每个 Kubernetes 版本在 EKS 上发布后大约支持 14 个月。
- Version Deprecation: 在某个版本弃用之前,至少会提前 60 天通知。
最近的 EKS 升级公告(2026)
- Kubernetes 版本回滚支持(July 1, 2026): 如果升级导致问题,现在可以在 7 天内将 Control Plane 回滚到上一个次要版本。EKS 会预先运行自动化 Rollback Readiness 检查,涵盖 API 兼容性、版本偏差、Add-on 兼容性和 cluster 健康状况。EKS Auto Mode cluster 会自动回滚 -- worker nodes 会自行还原,并且 Control Plane 会按顺序恢复。此功能不收取额外费用,并且在所有区域可用。有关详细信息,请参阅下面的 回滚流程。(来源:Amazon EKS 宣布 Kubernetes 版本回滚)
- 99.99% SLA 和 8XL Control Plane 层级(March 20, 2026): Provisioned Control Plane cluster 的 SLA 从 99.95% 提升到 99.99%,以一分钟粒度衡量。新的 8XL 扩展层级将 API 请求处理能力提升到此前 4XL 层级的两倍,面向超大型 cluster 以及 AI/ML/HPC workload。(来源:Amazon EKS 宣布 SLA 和 8XL 扩展层级)
升级组件
EKS cluster 升级包括以下组件:
- EKS Control Plane: Kubernetes API server、etcd、controller manager 等。
- Node Groups: Worker nodes 和 node AMI
- Add-ons: AWS managed add-ons(例如 CoreDNS、kube-proxy、VPC CNI)
- Self-managed Components: Helm charts、custom resources 等。
升级路径
EKS cluster 必须一次升级一个次要版本:
- 1.24 → 1.25 → 1.26 → 1.27(正确路径)
- 1.24 → 1.26(不支持)
升级顺序
一般升级顺序如下:
- 升级规划和准备
- EKS Control Plane 升级
- Add-on 升级
- Node Group 升级
- 升级验证
升级规划和准备
升级评估
开始升级之前,应评估以下内容:
版本兼容性检查
检查与目标 Kubernetes 版本的兼容性:
- API Deprecation: 识别使用已弃用 API 的 workload
- Feature Changes: 查看新版本中的功能变化
- Add-on Compatibility: 验证 add-on 与目标版本兼容
# Check deprecated API usage
kubectl get -l k8s-app!=kube-dns deployments --all-namespaces -o json | jq '.items[].spec.template.spec.containers[].image' | sort | uniq
# Check deprecated API usage
kubectl get $(kubectl api-resources --verbs=list -o name | paste -sd, -) \
--all-namespaces -o json | jq '.items[] | select(.apiVersion | contains("beta"))' | jq -r '.kind,.apiVersion,.metadata.name' | sort | uniq资源需求评估
评估升级所需的资源:
- Cluster Capacity: 在升级期间有足够容量容纳额外 nodes
- Downtime Tolerance: workload 是否可以容忍停机
- Rollback Plan: 出现问题时的回滚计划
升级计划安排
规划升级时间表:
- Maintenance Window: 在低流量时段安排升级
- Phased Approach: 从非生产环境开始,逐步推进到生产环境
- Rollback Window: 规划出现问题时回滚所需的时间
升级前准备
检查 Cluster 状态
在升级前检查 cluster 状态:
# Check node status
kubectl get nodes
# Check pod status
kubectl get pods --all-namespaces
# Check component status
kubectl get componentstatuses
# Check events
kubectl get events --all-namespaces创建备份
升级前备份重要数据:
# etcd backup
kubectl -n kube-system exec -it etcd-pod -- etcdctl snapshot save /tmp/etcd-backup.db
# Backup using Velero
velero backup create pre-upgrade-backup --include-namespaces=default,app-namespace测试升级
在非生产环境中测试升级:
- 创建与生产环境类似的测试 cluster
- 在测试 cluster 上执行升级
- 测试 workload 和功能
- 识别并解决问题
创建升级文档
记录升级过程:
- 升级步骤
- 负责人和联系方式
- 回滚流程
- 故障排查指南
EKS Control Plane 升级
Control Plane 升级准备
检查当前版本
检查当前 EKS cluster 版本:
aws eks describe-cluster --name my-cluster --query "cluster.version"检查可用版本
检查可用的 Kubernetes 版本:
aws eks describe-addon-versions --kubernetes-version 1.27创建升级计划
创建 Control Plane 升级计划:
- 升级时间:选择低流量时段
- 监控设置:升级期间监控 cluster 状态
- 回滚计划:出现问题时的回滚流程
Control Plane 升级执行
使用 AWS Management Console 升级
- 登录 AWS Management Console
- 导航到 Amazon EKS 服务
- 从 cluster 列表中选择要升级的 cluster
- 选择 "Cluster configuration" 选项卡
- 点击 "Update Kubernetes version"
- 选择目标版本并点击 "Update"
使用 AWS CLI 升级
aws eks update-cluster-version \
--name my-cluster \
--kubernetes-version 1.27使用 eksctl 升级
eksctl upgrade cluster \
--name my-cluster \
--version 1.27 \
--approveControl Plane 升级监控
检查升级状态
检查升级状态:
# Check status using AWS CLI
aws eks describe-update \
--name my-cluster \
--update-id <update-id>
# Check status using eksctl
eksctl get clusters
eksctl get nodegroup --cluster my-cluster监控 Cluster 状态
升级期间监控 cluster 状态:
# Check node status
kubectl get nodes
# Check pod status
kubectl get pods --all-namespaces
# Check events
kubectl get events --all-namespaces --sort-by='.lastTimestamp'监控 CloudWatch Metrics
在 CloudWatch 中监控 cluster metrics:
- API server latency
- etcd latency
- Controller manager latency
- Scheduler latency
Control Plane 升级故障排查
常见问题
Control Plane 升级期间可能发生的常见问题:
- Upgrade Failure: 升级过程失败或中断
- API Server Availability: 升级期间出现 API server 可用性问题
- Compatibility Issues: workload 与新版本之间的兼容性问题
故障排查步骤
- 检查升级状态
- 查看 CloudTrail logs
- 查看 EKS Control Plane logs
- 联系 AWS Support
Node Group 升级
升级 Control Plane 后,需要升级 Node Groups。Node Group 升级有多种策略,每种策略都有优缺点。
Node Group 升级策略
Managed Node Group 升级
Managed Node Groups 是 AWS 提供的一项 node group 管理功能,可自动化 node 升级:
- Rolling Upgrade: 逐个替换 nodes,以最大限度减少 workload 中断
- Auto Draining: 自动 drain nodes,使 Pods 移动到其他 nodes
- Version Tracking: 自动选择与 Control Plane 版本兼容的 node AMI
Self-managed Node Group 升级
对于 self-managed node groups,必须手动升级 nodes:
- Blue/Green Deployment: 创建新的 node group 并迁移 workload
- Rolling Upgrade: 逐个 drain 并终止 nodes,然后替换为新 nodes
- In-place Upgrade: 在现有 nodes 上升级 kubelet 和 container runtime
Fargate Node 升级
Fargate nodes 由 AWS 管理,因此不需要单独升级:
- 新调度的 Fargate pods 会自动使用最新 platform version。
- 现有 Fargate pods 会保持当前 platform version,直到重启。
Managed Node Group 升级
检查 Managed Node Group 版本
检查当前 managed node group 版本:
aws eks describe-nodegroup \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--query "nodegroup.version"使用 AWS Management Console 升级
- 登录 AWS Management Console
- 导航到 Amazon EKS 服务
- 从 cluster 列表中选择要升级的 cluster
- 选择 "Compute" 选项卡
- 选择要升级的 node group
- 点击 "Update node group"
- 选择目标版本并点击 "Update"
使用 AWS CLI 升级
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--kubernetes-version 1.27使用 eksctl 升级
eksctl upgrade nodegroup \
--cluster my-cluster \
--name my-nodegroup \
--kubernetes-version 1.27Managed Node Group 升级配置
你可以配置 managed node group 升级行为:
- Max Unavailable: 升级期间不可用 nodes 的最大数量
- Pod Disruption Budget: 通过遵守 Pod Disruption Budgets (PDB) 来保持 Service 可用性
aws eks update-nodegroup-config \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--update-config maxUnavailable=1Self-managed Node Group 升级
Blue/Green Deployment
Blue/green deployment 会创建一个新的 node group,然后迁移 workload:
- 创建新的 node group:
eksctl create nodegroup \
--cluster my-cluster \
--name my-nodegroup-new \
--node-type m5.large \
--nodes 3 \
--nodes-min 3 \
--nodes-max 6 \
--node-ami auto- 迁移 workload:
# Apply taint to existing nodes
kubectl taint nodes -l alpha.eksctl.io/nodegroup-name=my-nodegroup-old \
node-group=old:NoSchedule
# Verify new pods are scheduled on new nodes
kubectl get pods -o wide
# Drain existing nodes
for node in $(kubectl get nodes -l alpha.eksctl.io/nodegroup-name=my-nodegroup-old -o name); do
kubectl drain --ignore-daemonsets --delete-emptydir-data $node
done- 删除现有 node group:
eksctl delete nodegroup \
--cluster my-cluster \
--name my-nodegroup-oldRolling Upgrade
Rolling upgrade 会逐个 drain 并终止 nodes,然后替换为新 nodes:
# Get node list
NODES=$(kubectl get nodes -l alpha.eksctl.io/nodegroup-name=my-nodegroup -o name)
# Perform draining and termination for each node
for node in $NODES; do
echo "Draining node $node..."
kubectl drain --ignore-daemonsets --delete-emptydir-data $node
# Get node ID
INSTANCE_ID=$(aws ec2 describe-instances \
--filters "Name=private-dns-name,Values=$(echo $node | cut -d'/' -f2)" \
--query "Reservations[0].Instances[0].InstanceId" \
--output text)
# Terminate node
aws ec2 terminate-instances --instance-ids $INSTANCE_ID
# Wait for new node to be ready
echo "Waiting for new node to be ready..."
sleep 60
# Check node status
kubectl get nodes
doneIn-place Upgrade
In-place upgrade 会在现有 nodes 上升级 kubelet 和 container runtime:
# Get node list
NODES=$(kubectl get nodes -l alpha.eksctl.io/nodegroup-name=my-nodegroup -o name)
# Perform in-place upgrade for each node
for node in $NODES; do
echo "Cordoning node $node..."
kubectl cordon $node
echo "Draining node $node..."
kubectl drain --ignore-daemonsets --delete-emptydir-data $node
# SSH to node and perform upgrade
# This part may vary depending on node access method
INSTANCE_ID=$(aws ec2 describe-instances \
--filters "Name=private-dns-name,Values=$(echo $node | cut -d'/' -f2)" \
--query "Reservations[0].Instances[0].InstanceId" \
--output text)
# Execute command using SSM
aws ssm send-command \
--instance-ids $INSTANCE_ID \
--document-name "AWS-RunShellScript" \
--parameters commands=["sudo yum update -y kubelet kubectl"]
# Uncordon node
echo "Uncordoning node $node..."
kubectl uncordon $node
doneNode 升级监控和验证
检查 Node 版本
检查 node Kubernetes 版本:
kubectl get nodes -o custom-columns=NAME:.metadata.name,VERSION:.status.nodeInfo.kubeletVersion检查 Node 状态
检查 node 状态:
kubectl get nodes
kubectl describe nodes检查 Pod 部署
验证 pods 是否正常部署:
kubectl get pods --all-namespaces -o wide
kubectl get pods --all-namespaces -o wide | grep -v RunningAdd-on 升级
EKS cluster 包含多个 add-ons,这些也需要升级。
AWS Managed Add-ons
检查 Managed Add-on 列表
检查 cluster 中安装的 managed add-ons:
aws eks list-addons --cluster-name my-cluster检查 Managed Add-on 版本
检查 managed add-ons 的当前版本:
aws eks describe-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--query "addon.addonVersion"检查可用 Add-on 版本
检查可用 add-on 版本:
aws eks describe-addon-versions \
--addon-name vpc-cni \
--kubernetes-version 1.27升级 Managed Add-ons
你可以使用 AWS Management Console、AWS CLI 或 eksctl 升级 managed add-ons:
# Upgrade using AWS CLI
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version v1.12.0-eksbuild.1 \
--resolve-conflicts PRESERVE
# Upgrade using eksctl
eksctl update addon \
--cluster my-cluster \
--name vpc-cni \
--version v1.12.0-eksbuild.1 \
--preserveSelf-managed Add-ons
升级 Self-managed Add-ons
使用 Helm 或 kubectl 升级 self-managed add-ons:
# Upgrade using Helm
helm repo update
helm upgrade metrics-server metrics-server/metrics-server \
--namespace kube-system \
--version 3.8.2
# Upgrade using kubectl
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/metrics-server/v0.6.1/deploy/kubernetes/metrics-server-deployment.yaml关键 Add-on 升级指南
CoreDNS 升级
CoreDNS 为 Kubernetes cluster 提供 DNS service:
# Check CoreDNS version
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"
# Upgrade CoreDNS
aws eks update-addon \
--cluster-name my-cluster \
--addon-name coredns \
--addon-version v1.9.3-eksbuild.2 \
--resolve-conflicts PRESERVEkube-proxy 升级
kube-proxy 处理 Kubernetes service networking:
# Check kube-proxy version
kubectl get daemonset kube-proxy -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"
# Upgrade kube-proxy
aws eks update-addon \
--cluster-name my-cluster \
--addon-name kube-proxy \
--addon-version v1.27.1-eksbuild.1 \
--resolve-conflicts PRESERVEVPC CNI 升级
Amazon VPC CNI 处理 pod networking:
# Check VPC CNI version
kubectl describe daemonset aws-node -n kube-system | grep Image
# Upgrade VPC CNI
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version v1.12.0-eksbuild.1 \
--resolve-conflicts PRESERVEAdd-on 升级故障排查
常见问题
Add-on 升级期间可能发生的常见问题:
- Configuration Conflicts: 自定义配置与新版本之间的冲突
- Compatibility Issues: add-on 与 Kubernetes 版本之间的兼容性问题
- Resource Constraints: 升级资源不足
故障排查步骤
- 检查 add-on 状态:
aws eks describe-addon \
--cluster-name my-cluster \
--addon-name vpc-cni- 检查 add-on logs:
kubectl logs -n kube-system -l k8s-app=kube-dns
kubectl logs -n kube-system -l k8s-app=kube-proxy
kubectl logs -n kube-system -l k8s-app=aws-node- 检查 add-on events:
kubectl get events -n kube-system --sort-by='.lastTimestamp'升级验证和故障排查
升级完成后,需要验证 cluster 是否正常运行,并解决可能发生的任何问题。
升级验证
检查 Cluster 版本
检查 cluster 和 node 版本:
# Check cluster version
kubectl version --short
# Check node version
kubectl get nodes -o custom-columns=NAME:.metadata.name,VERSION:.status.nodeInfo.kubeletVersion检查 Cluster 状态
检查 cluster 组件状态:
# Check node status
kubectl get nodes
# Check pod status
kubectl get pods --all-namespaces
# Check namespace status
kubectl get namespaces
# Check service status
kubectl get services --all-namespacesWorkload 验证
验证应用 workload 是否正常运行:
# Check deployment status
kubectl get deployments --all-namespaces
# Check statefulset status
kubectl get statefulsets --all-namespaces
# Check daemonset status
kubectl get daemonsets --all-namespaces
# Check service endpoints
kubectl get endpoints --all-namespaces功能测试
测试关键功能是否正常运行:
- Pod Creation Test:
kubectl run nginx --image=nginx
kubectl get pod nginx
kubectl delete pod nginx- Service Creation Test:
kubectl create deployment nginx --image=nginx --replicas=2
kubectl expose deployment nginx --port=80 --type=ClusterIP
kubectl get service nginx
kubectl delete service nginx
kubectl delete deployment nginx- Scaling Test:
kubectl create deployment nginx --image=nginx
kubectl scale deployment nginx --replicas=3
kubectl get deployment nginx
kubectl delete deployment nginx升级故障排查
常见升级问题
升级期间可能发生的常见问题:
Control Plane Upgrade Failure:
- API server 可用性问题
- etcd database 问题
- IAM 权限问题
Node Upgrade Issues:
- Node draining 失败
- 新 node 启动失败
- kubelet 版本不匹配
Add-on Upgrade Issues:
- 配置冲突
- 兼容性问题
- 资源限制
Workload Issues:
- 因 API 弃用导致 workload 失败
- 因资源限制导致 Pod 调度失败
- Networking 问题
故障排查步骤
- Check Logs:
# Check control plane logs
aws eks update-cluster-config \
--region us-west-2 \
--name my-cluster \
--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
# Check node logs
kubectl logs -n kube-system -l component=kube-proxy
kubectl logs -n kube-system -l k8s-app=aws-node- Check Events:
kubectl get events --all-namespaces --sort-by='.lastTimestamp'- Check Resource Status:
kubectl describe nodes
kubectl describe pods --all-namespaces | grep -A 10 "Events:"- Check API Version:
kubectl api-versions回滚流程
如果无法解决升级问题,请考虑回滚:
Control Plane Rollback:
- 截至 July 2026,Amazon EKS 支持在升级后的 7 天内将 Control Plane 回滚到上一个次要版本。系统会预先运行自动化 Rollback Readiness 检查,涵盖 API 兼容性、版本偏差、Add-on 兼容性和 cluster 健康状况。EKS Auto Mode cluster 会自动回滚 -- worker nodes 会自行还原,并且 Control Plane 会按顺序恢复。此功能不收取额外费用,并且在所有区域可用。(来源:Amazon EKS 宣布 Kubernetes 版本回滚)
- 如果已超过 7 天,或者此功能不可用,并且问题很严重,则必须创建新的 cluster 并迁移 workload。
Node Group Rollback:
- 回滚到先前版本的 node group:
# Create new node group with previous version
eksctl create nodegroup \
--cluster my-cluster \
--name my-nodegroup-old-version \
--node-type m5.large \
--nodes 3 \
--nodes-min 3 \
--nodes-max 6 \
--node-ami-family AmazonLinux2 \
--node-ami auto \
--kubernetes-version 1.26
# Delete previous node group once new node group is ready
eksctl delete nodegroup \
--cluster my-cluster \
--name my-nodegroup-new-version- Add-on Rollback:
- 回滚到先前版本的 add-on:
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version <previous-version> \
--resolve-conflicts PRESERVE升级自动化
在大规模环境中,自动化升级过程非常重要。你可以使用以下工具和方法自动化 EKS 升级。
使用 eksctl 自动化
eksctl 是用于 EKS cluster 管理的 command-line tool,可用于升级自动化:
# Cluster upgrade
eksctl upgrade cluster \
--name my-cluster \
--version 1.27 \
--approve
# Node group upgrade
eksctl upgrade nodegroup \
--cluster my-cluster \
--name my-nodegroup \
--kubernetes-version 1.27使用 AWS CLI 和脚本自动化
你可以使用 AWS CLI 和 shell scripts 自动化升级过程:
#!/bin/bash
# Variable setup
CLUSTER_NAME="my-cluster"
TARGET_VERSION="1.27"
REGION="us-west-2"
# Cluster upgrade
echo "Upgrading cluster $CLUSTER_NAME to version $TARGET_VERSION..."
UPDATE_ID=$(aws eks update-cluster-version \
--region $REGION \
--name $CLUSTER_NAME \
--kubernetes-version $TARGET_VERSION \
--query "update.id" \
--output text)
# Wait for upgrade completion
echo "Waiting for cluster upgrade to complete..."
aws eks wait update-successful \
--region $REGION \
--name $CLUSTER_NAME \
--update-id $UPDATE_ID
# Add-on upgrade
echo "Upgrading addons..."
for ADDON in vpc-cni coredns kube-proxy; do
LATEST_VERSION=$(aws eks describe-addon-versions \
--region $REGION \
--addon-name $ADDON \
--kubernetes-version $TARGET_VERSION \
--query "addons[0].addonVersions[0].addonVersion" \
--output text)
echo "Upgrading $ADDON to version $LATEST_VERSION..."
aws eks update-addon \
--region $REGION \
--cluster-name $CLUSTER_NAME \
--addon-name $ADDON \
--addon-version $LATEST_VERSION \
--resolve-conflicts PRESERVE
done
# Managed node group upgrade
echo "Upgrading managed nodegroups..."
NODEGROUPS=$(aws eks list-nodegroups \
--region $REGION \
--cluster-name $CLUSTER_NAME \
--query "nodegroups[]" \
--output text)
for NG in $NODEGROUPS; do
echo "Upgrading nodegroup $NG..."
aws eks update-nodegroup-version \
--region $REGION \
--cluster-name $CLUSTER_NAME \
--nodegroup-name $NG
# Wait for node group upgrade completion
echo "Waiting for nodegroup $NG upgrade to complete..."
aws eks wait nodegroup-active \
--region $REGION \
--cluster-name $CLUSTER_NAME \
--nodegroup-name $NG
done
echo "Upgrade process completed successfully!"使用 GitOps 自动化
你可以使用 GitOps tools(例如 Flux、ArgoCD)自动化 EKS cluster 升级:
- Store Cluster Configuration in Git Repository:
# cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: us-west-2
version: "1.27"
managedNodeGroups:
- name: my-nodegroup
instanceType: m5.large
desiredCapacity: 3
minSize: 3
maxSize: 6- Configure CI/CD Pipeline:
# .github/workflows/upgrade-eks.yml
name: Upgrade EKS Cluster
on:
push:
branches: [ main ]
paths:
- 'cluster.yaml'
jobs:
upgrade:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Install eksctl
run: |
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
- name: Upgrade EKS cluster
run: |
eksctl upgrade cluster -f cluster.yaml自动化最佳实践
EKS 升级自动化的最佳实践:
- Gradual Approach: 从非生产环境开始,逐步推进到生产环境
- Rollback Plan: 实现自动回滚机制
- Validation Steps: 在升级后包含自动化验证步骤
- Notifications: 配置升级成功或失败通知
- Documentation: 记录自动化过程和步骤
升级最佳实践
下面介绍 EKS cluster 升级的最佳实践。
通用最佳实践
升级规划
- Version Selection: 选择稳定版本并查看 release notes
- Upgrade Schedule: 在低流量时段安排升级
- Phased Approach: 从非生产环境开始,逐步推进到生产环境
- Rollback Planning: 创建出现问题时的回滚计划
升级准备
- Backup: 备份重要数据
- Resource Allocation: 为升级确保足够资源
- Compatibility Check: 验证 workload 和 add-on 兼容性
- Deprecated API Identification: 识别并更新使用已弃用 API 的 workload
升级执行
- Control Plane First: 先升级 Control Plane
- Add-ons Next: 在 Control Plane 升级后升级 add-ons
- Nodes Last: 在 Control Plane 和 add-on 升级后升级 nodes
- Gradual Node Upgrade: 逐步升级 nodes,以最大限度减少 workload 中断
升级后
- Validation: 验证 cluster 和 workload 状态
- Monitoring: 升级后监控 cluster
- Documentation: 记录升级过程和结果
- Learning: 从升级过程中遇到的问题及其解决方案中学习
大型 Cluster 的最佳实践
大型 EKS cluster 升级的额外最佳实践:
- Canary Deployment: 从部分 nodes 或 workloads 开始,然后逐步扩大
- Automation: 自动化升级过程
- Enhanced Monitoring: 升级期间持续监控 cluster 状态
- Communication Plan: 定期向利益相关者沟通升级状态
- Automated Rollback: 实现出现问题时的自动回滚机制
金融服务最佳实践
金融服务行业中 EKS cluster 升级的额外最佳实践:
- Regulatory Compliance: 确保升级满足监管要求
- Risk Assessment: 升级前进行风险评估
- Change Management: 遵循严格的变更管理流程
- Enhanced Testing: 升级前进行全面测试
- Enhanced Documentation: 详细记录升级过程和结果
结论
成功升级 Amazon EKS cluster 需要周密的规划、准备和验证。本文档介绍了安全升级 EKS cluster Control Plane、Node Groups 和 Add-ons 的策略、步骤和最佳实践。
要点:
- EKS Upgrade Overview: EKS 版本管理、升级组件和路径
- Upgrade Planning and Preparation: 升级评估、准备和测试
- EKS Control Plane Upgrade: Control Plane 升级方法和监控
- Node Group Upgrade: Managed 和 self-managed Node Group 升级策略
- Add-on Upgrade: AWS managed 和 self-managed add-on 升级
- Upgrade Validation and Troubleshooting: 升级验证和常见问题解决
- Upgrade Automation: 使用 eksctl、AWS CLI 和 GitOps 进行升级自动化
- Upgrade Best Practices: 通用最佳实践和行业特定最佳实践
让你的 EKS cluster 保持最新,可以利用安全补丁、bug fixes 和新功能,从而提升 cluster 的整体安全性、稳定性和性能。
参考资料
- Amazon EKS Upgrade Documentation
- Kubernetes Versions and Version Skew
- EKS Managed Node Group Upgrade
- EKS Add-on Upgrade
- eksctl Documentation
- Kubernetes Upgrade Best Practices
测验
要测试你在本章中学到的内容,请尝试 主题测验。