Amazon EKS Upgrades
最終更新: July 3, 2026
Amazon EKS cluster を最新の状態に保つことは、セキュリティ、安定性、新機能の活用のために重要です。このドキュメントでは、EKS cluster を安全にアップグレードするための戦略、ベストプラクティス、手順ガイドを提供します。
Table of Contents
- EKS Upgrade Overview
- Upgrade Planning and Preparation
- EKS Control Plane Upgrade
- Node Group Upgrade
- Add-on Upgrade
- Upgrade Validation and Troubleshooting
- Upgrade Automation
- Upgrade Best Practices
EKS Upgrade Overview
EKS Version Management
Amazon EKS は Kubernetes のバージョン管理ポリシーに従います。
- Version Support: EKS は少なくとも 4 つの Kubernetes バージョンを同時にサポートします。
- Support Period: 各 Kubernetes バージョンは、EKS でのリリース後およそ 14 か月間サポートされます。
- Version Deprecation: バージョンが非推奨になる前に、少なくとも 60 日前の通知が提供されます。
Recent EKS Upgrade Announcements (2026)
- Kubernetes version rollback support (July 1, 2026): アップグレードによって問題が発生した場合、7 日以内であれば Control Plane を以前の minor version にロールバックできるようになりました。EKS は事前に自動の Rollback Readiness チェックを実行し、API compatibility、version skew、add-on compatibility、cluster health を確認します。EKS Auto Mode cluster は自動的にロールバックされます。worker node は自動で戻り、Control Plane は順番に復元されます。追加料金はなく、すべてのリージョンで利用できます。詳細については、以下の Rollback Procedure を参照してください。(出典: Amazon EKS announces Kubernetes version rollback)
- 99.99% SLA and 8XL control plane tier (March 20, 2026): Provisioned Control Plane cluster の SLA は、1 分単位の粒度で測定され、99.95% から 99.99% に引き上げられました。新しい 8XL scaling tier は、以前の 4XL tier の API request-handling capacity を 2 倍にし、非常に大規模な cluster や AI/ML/HPC workloads を対象としています。(出典: Amazon EKS announces SLA and 8XL scaling tier)
Upgrade Components
EKS cluster のアップグレードには、次のコンポーネントが含まれます。
- EKS Control Plane: Kubernetes API server、etcd、controller manager など。
- Node Groups: Worker nodes と node AMIs
- Add-ons: AWS managed add-ons(例: CoreDNS、kube-proxy、VPC CNI)
- Self-managed Components: Helm charts、custom resources など。
Upgrade Path
EKS cluster は、一度に 1 つの minor version ずつアップグレードする必要があります。
- 1.24 → 1.25 → 1.26 → 1.27 (correct path)
- 1.24 → 1.26 (not supported)
Upgrade Order
一般的なアップグレード順序は次のとおりです。
- アップグレード計画と準備
- EKS Control Plane のアップグレード
- Add-on のアップグレード
- Node group のアップグレード
- アップグレードの検証
Upgrade Planning and Preparation
Upgrade Assessment
アップグレードを開始する前に、次の項目を評価する必要があります。
Version Compatibility Check
対象の Kubernetes バージョンとの互換性を確認します。
- API Deprecation: 非推奨 API を使用している workloads を特定します
- Feature Changes: 新しいバージョンでの機能変更を確認します
- Add-on Compatibility: add-ons が対象バージョンと互換性があることを確認します
# 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 | uniqResource Requirements Assessment
アップグレードに必要なリソースを評価します。
- Cluster Capacity: アップグレード中に追加 nodes を収容するための十分な capacity
- Downtime Tolerance: workloads が downtime を許容できるかどうか
- Rollback Plan: 問題が発生した場合の rollback plan
Upgrade Schedule Planning
アップグレードスケジュールを計画します。
- Maintenance Window: トラフィックが少ない時間帯にアップグレードをスケジュールします
- Phased Approach: 非本番環境から開始し、本番環境へ進めます
- Rollback Window: 問題が発生した場合に rollback に必要な時間を計画します
Pre-upgrade Preparation
Check Cluster State
アップグレード前に cluster state を確認します。
# 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-namespacesCreate Backup
アップグレード前に重要なデータをバックアップします。
# 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-namespaceTest Upgrade
非本番環境でアップグレードをテストします。
- 本番環境に似た test cluster を作成します
- test cluster でアップグレードを実行します
- workloads と機能をテストします
- 問題を特定して解決します
Create Upgrade Documentation
アップグレードプロセスを文書化します。
- アップグレード手順
- 担当者と連絡先
- Rollback procedures
- Troubleshooting guide
EKS Control Plane Upgrade
Control Plane Upgrade Preparation
Check Current Version
現在の EKS cluster version を確認します。
aws eks describe-cluster --name my-cluster --query "cluster.version"Check Available Versions
利用可能な Kubernetes バージョンを確認します。
aws eks describe-addon-versions --kubernetes-version 1.27Create Upgrade Plan
Control Plane のアップグレード計画を作成します。
- Upgrade time: トラフィックが少ない時間帯を選択します
- Monitoring setup: アップグレード中に cluster state を監視します
- Rollback plan: 問題が発生した場合の rollback procedure
Control Plane Upgrade Execution
Upgrade Using AWS Management Console
- AWS Management Console にログインします
- Amazon EKS service に移動します
- cluster list からアップグレード対象の cluster を選択します
- 「Cluster configuration」タブを選択します
- 「Update Kubernetes version」をクリックします
- 対象バージョンを選択し、「Update」をクリックします
Upgrade Using AWS CLI
aws eks update-cluster-version \
--name my-cluster \
--kubernetes-version 1.27Upgrade Using eksctl
eksctl upgrade cluster \
--name my-cluster \
--version 1.27 \
--approveControl Plane Upgrade Monitoring
Check Upgrade Status
アップグレードのステータスを確認します。
# 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-clusterMonitor Cluster State
アップグレード中に cluster state を監視します。
# Check node status
kubectl get nodes
# Check pod status
kubectl get pods --all-namespaces
# Check events
kubectl get events --all-namespaces --sort-by='.lastTimestamp'Monitor CloudWatch Metrics
CloudWatch で cluster metrics を監視します。
- API server latency
- etcd latency
- Controller manager latency
- Scheduler latency
Control Plane Upgrade Troubleshooting
Common Issues
Control Plane アップグレード中に発生する可能性のある一般的な問題は次のとおりです。
- Upgrade Failure: アップグレードプロセスが失敗または中断される
- API Server Availability: アップグレード中の API server availability の問題
- Compatibility Issues: workloads と新しいバージョン間の compatibility issues
Troubleshooting Steps
- アップグレードステータスを確認します
- CloudTrail logs を確認します
- EKS Control Plane logs を確認します
- AWS Support に問い合わせます
Node Group Upgrade
Control Plane をアップグレードした後、node groups をアップグレードする必要があります。Node group アップグレードにはいくつかの戦略があり、それぞれに利点と欠点があります。
Node Group Upgrade Strategies
Managed Node Group Upgrade
Managed node groups は、AWS が提供する node group 管理機能で、node アップグレードを自動化します。
- Rolling Upgrade: workload の中断を最小限に抑えるため、nodes を 1 つずつ置き換えます
- Auto Draining: pods が他の nodes に移動するように、nodes は自動的に drain されます
- Version Tracking: Control Plane version と互換性のある node AMI を自動的に選択します
Self-managed Node Group Upgrade
Self-managed node groups では、手動で nodes をアップグレードする必要があります。
- Blue/Green Deployment: 新しい node group を作成し、workloads を移行します
- Rolling Upgrade: nodes を 1 つずつ drain して終了し、新しい nodes に置き換えます
- In-place Upgrade: 既存 nodes 上の kubelet と container runtime をアップグレードします
Fargate Node Upgrade
Fargate nodes は AWS によって管理されるため、個別のアップグレードは不要です。
- Fargate pods は新しくスケジュールされるときに、最新の platform version を自動的に使用します。
- 既存の Fargate pods は、再起動されるまで現在の platform version を維持します。
Managed Node Group Upgrade
Check Managed Node Group Version
現在の managed node group version を確認します。
aws eks describe-nodegroup \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--query "nodegroup.version"Upgrade Using AWS Management Console
- AWS Management Console にログインします
- Amazon EKS service に移動します
- cluster list からアップグレード対象の cluster を選択します
- 「Compute」タブを選択します
- アップグレードする node group を選択します
- 「Update node group」をクリックします
- 対象バージョンを選択し、「Update」をクリックします
Upgrade Using AWS CLI
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--kubernetes-version 1.27Upgrade Using eksctl
eksctl upgrade nodegroup \
--cluster my-cluster \
--name my-nodegroup \
--kubernetes-version 1.27Managed Node Group Upgrade Configuration
Managed node group のアップグレード動作を設定できます。
- Max Unavailable: アップグレード中に利用不可となる nodes の最大数
- Pod Disruption Budget: Pod Disruption Budgets (PDB) を尊重することで service availability を維持します
aws eks update-nodegroup-config \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup \
--update-config maxUnavailable=1Self-managed Node Group Upgrade
Blue/Green Deployment
Blue/green deployment は、新しい node group を作成してから workloads を移行します。
- 新しい 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- workloads を移行します。
# 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 は、nodes を 1 つずつ drain して終了し、新しい 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 Upgrade Monitoring and Validation
Check Node Version
Node の Kubernetes version を確認します。
kubectl get nodes -o custom-columns=NAME:.metadata.name,VERSION:.status.nodeInfo.kubeletVersionCheck Node Status
Node status を確認します。
kubectl get nodes
kubectl describe nodesCheck Pod Deployment
pods が正常にデプロイされていることを確認します。
kubectl get pods --all-namespaces -o wide
kubectl get pods --all-namespaces -o wide | grep -v RunningAdd-on Upgrade
EKS cluster には、アップグレードが必要な複数の add-ons も含まれます。
AWS Managed Add-ons
Check Managed Add-on List
cluster にインストールされている managed add-ons を確認します。
aws eks list-addons --cluster-name my-clusterCheck Managed Add-on Version
managed add-ons の現在のバージョンを確認します。
aws eks describe-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--query "addon.addonVersion"Check Available Add-on Versions
利用可能な add-on versions を確認します。
aws eks describe-addon-versions \
--addon-name vpc-cni \
--kubernetes-version 1.27Upgrade 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
Upgrade 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.yamlKey Add-on Upgrade Guides
CoreDNS Upgrade
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 Upgrade
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 Upgrade
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 Upgrade Troubleshooting
Common Issues
Add-on アップグレード中に発生する可能性のある一般的な問題は次のとおりです。
- Configuration Conflicts: custom configuration と新しいバージョン間の conflicts
- Compatibility Issues: add-on と Kubernetes version 間の compatibility issues
- Resource Constraints: アップグレードに必要なリソースの不足
Troubleshooting Steps
- Add-on status を確認します。
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'Upgrade Validation and Troubleshooting
アップグレードが完了した後、cluster が正常に動作していることを検証し、発生する可能性のある問題を解決する必要があります。
Upgrade Validation
Check Cluster Version
cluster と node のバージョンを確認します。
# Check cluster version
kubectl version --short
# Check node version
kubectl get nodes -o custom-columns=NAME:.metadata.name,VERSION:.status.nodeInfo.kubeletVersionCheck Cluster State
cluster components のステータスを確認します。
# 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 Validation
application workloads が正常に動作していることを確認します。
# 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-namespacesFunctional Testing
主要機能が正常に動作していることをテストします。
- 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 nginxUpgrade Troubleshooting
Common Upgrade Issues
アップグレード中に発生する可能性のある一般的な問題は次のとおりです。
Control Plane Upgrade Failure:
- API server availability issues
- etcd database issues
- IAM permission issues
Node Upgrade Issues:
- Node draining failure
- New node startup failure
- kubelet version mismatch
Add-on Upgrade Issues:
- Configuration conflicts
- Compatibility issues
- Resource constraints
Workload Issues:
- API deprecation による workload failure
- resource constraints による Pod scheduling failure
- Networking issues
Troubleshooting Steps
- 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-versionsRollback Procedure
アップグレードの問題を解決できない場合は、rollback を検討します。
Control Plane Rollback:
- 2026 年 7 月時点で、Amazon EKS はアップグレード後 7 日以内であれば Control Plane を以前の minor version にロールバックすることをサポートしています。事前に自動の Rollback Readiness チェックが実行され、API compatibility、version skew、add-on compatibility、cluster health を確認します。EKS Auto Mode cluster は自動的にロールバックされます。worker node は自動で戻り、Control Plane は順番に復元されます。追加料金はなく、すべてのリージョンで利用できます。(出典: Amazon EKS announces Kubernetes version rollback)
- 7 日を超過している場合、またはこの機能が利用できず問題が深刻な場合は、新しい cluster を作成して workloads を移行する必要があります。
Node Group Rollback:
- 以前のバージョンの node group に rollback します。
# 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 の以前のバージョンに rollback します。
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version <previous-version> \
--resolve-conflicts PRESERVEUpgrade Automation
大規模環境では、アップグレードプロセスの自動化が重要です。次のツールと方法を使用して EKS アップグレードを自動化できます。
Automation Using eksctl
eksctl は EKS cluster management のための 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.27Automation Using AWS CLI and Scripts
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!"Automation Using GitOps
GitOps tools(例: Flux、ArgoCD)を使用して EKS cluster upgrades を自動化できます。
- 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.yamlAutomation Best Practices
EKS アップグレード自動化のベストプラクティスは次のとおりです。
- Gradual Approach: 非本番環境から開始し、本番環境へ進めます
- Rollback Plan: 自動 rollback mechanism を実装します
- Validation Steps: アップグレード後に automated validation steps を含めます
- Notifications: アップグレードの成功または失敗に関する notifications を設定します
- Documentation: automation process と手順を文書化します
Upgrade Best Practices
EKS cluster アップグレードのベストプラクティスを見てみましょう。
General Best Practices
Upgrade Planning
- Version Selection: 安定したバージョンを選択し、release notes を確認します
- Upgrade Schedule: トラフィックが少ない時間帯にアップグレードをスケジュールします
- Phased Approach: 非本番環境から開始し、本番環境へ進めます
- Rollback Planning: 問題が発生した場合に備えて rollback plan を作成します
Upgrade Preparation
- Backup: 重要なデータをバックアップします
- Resource Allocation: アップグレードに十分なリソースを確保します
- Compatibility Check: workload と add-on の compatibility を確認します
- Deprecated API Identification: 非推奨 API を使用している workloads を特定し、更新します
Upgrade Execution
- Control Plane First: 最初に Control Plane をアップグレードします
- Add-ons Next: Control Plane アップグレード後に add-ons をアップグレードします
- Nodes Last: Control Plane と add-on のアップグレード後に nodes をアップグレードします
- Gradual Node Upgrade: workload の中断を最小限に抑えるため、nodes を段階的にアップグレードします
Post-upgrade
- Validation: cluster と workload のステータスを検証します
- Monitoring: アップグレード後に cluster を監視します
- Documentation: アップグレードプロセスと結果を文書化します
- Learning: アップグレード中に遭遇した問題とその解決策から学びます
Best Practices for Large Clusters
大規模な EKS cluster アップグレードに関する追加のベストプラクティスは次のとおりです。
- Canary Deployment: 一部の nodes または workloads から開始し、段階的に拡大します
- Automation: アップグレードプロセスを自動化します
- Enhanced Monitoring: アップグレード中に cluster state を継続的に監視します
- Communication Plan: stakeholders にアップグレードステータスを定期的に共有します
- Automated Rollback: 問題が発生した場合に備えて automated rollback mechanism を実装します
Best Practices for Financial Services
金融サービス業界での EKS cluster アップグレードに関する追加のベストプラクティスは次のとおりです。
- Regulatory Compliance: アップグレードが regulatory requirements を満たしていることを確認します
- Risk Assessment: アップグレード前に risk assessment を実施します
- Change Management: 厳格な change management processes に従います
- Enhanced Testing: アップグレード前に徹底的なテストを実施します
- Enhanced Documentation: アップグレードプロセスと結果を詳細に文書化します
Conclusion
Amazon EKS cluster を正常にアップグレードするには、綿密な計画、準備、検証が必要です。このドキュメントでは、EKS cluster の Control Plane、node groups、add-ons を安全にアップグレードするための戦略、手順、ベストプラクティスを説明しました。
Key Points:
- EKS Upgrade Overview: EKS version management、upgrade components、path
- Upgrade Planning and Preparation: Upgrade assessment、preparation、testing
- EKS Control Plane Upgrade: Control Plane upgrade methods と monitoring
- Node Group Upgrade: managed および self-managed node group upgrade strategies
- Add-on Upgrade: AWS managed および self-managed add-on upgrades
- Upgrade Validation and Troubleshooting: upgrade validation と common issue resolution
- Upgrade Automation: eksctl、AWS CLI、GitOps を使用した upgrade automation
- Upgrade Best Practices: 一般的なベストプラクティスと業界固有のベストプラクティス
EKS cluster を最新の状態に保つことで、security patches、bug fixes、新機能を活用でき、cluster 全体のセキュリティ、安定性、パフォーマンスを向上させることができます。
References
- Amazon EKS Upgrade Documentation
- Kubernetes Versions and Version Skew
- EKS Managed Node Group Upgrade
- EKS Add-on Upgrade
- eksctl Documentation
- Kubernetes Upgrade Best Practices
Quiz
この章で学んだ内容を確認するには、topic quiz に挑戦してください。