Bantu meningkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih GitHub tautan Edit halaman ini di yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bermigrasi dari EKS Fargate ke Mode Otomatis EKS
Topik ini memandu Anda melalui proses migrasi beban kerja dari EKS Fargate ke Amazon EKS Auto Mode menggunakan. kubectl Migrasi dapat dilakukan secara bertahap, memungkinkan Anda memindahkan beban kerja dengan kecepatan Anda sendiri sambil mempertahankan stabilitas cluster dan ketersediaan aplikasi selama transisi.
Pendekatan langkah demi langkah yang diuraikan di bawah ini memungkinkan Anda menjalankan EKS Fargate dan EKS Auto Mode secara berdampingan selama periode migrasi. Strategi operasi ganda ini membantu memastikan transisi yang lancar dengan memungkinkan Anda memvalidasi perilaku beban kerja pada Mode Otomatis EKS sebelum sepenuhnya menonaktifkan EKS Fargate. Anda dapat memigrasikan aplikasi secara individual atau dalam kelompok, memberikan fleksibilitas untuk mengakomodasi persyaratan operasional spesifik dan toleransi risiko Anda.
Membandingkan Mode Otomatis Amazon EKS dan EKS dengan AWS Fargate
Amazon EKS dengan AWS Fargate tetap menjadi pilihan bagi pelanggan yang ingin menjalankan EKS, tetapi Mode Otomatis Amazon EKS adalah pendekatan yang direkomendasikan untuk maju. Mode Otomatis EKS sepenuhnya sesuai dengan Kubernetes, mendukung semua primitif Kubernetes hulu dan alat platform seperti Istio, yang tidak dapat didukung oleh Fargate. Mode Otomatis EKS juga sepenuhnya mendukung semua opsi pembelian runtime EC2, termasuk instans GPU dan Spot, memungkinkan pelanggan memanfaatkan diskon EC2 yang dinegosiasikan dan mekanisme penghematan lainnya Kemampuan ini tidak tersedia saat menggunakan EKS dengan Fargate.
Selain itu, Mode Otomatis EKS memungkinkan pelanggan mencapai model isolasi yang sama dengan Fargate, menggunakan kemampuan penjadwalan Kubernetes standar untuk memastikan setiap instans EC2 menjalankan satu wadah aplikasi. Dengan mengadopsi Mode Otomatis Amazon EKS, pelanggan dapat membuka manfaat penuh dari menjalankan Kubernetes AWS — Kubernetes-conformant platform penuh yang memberikan fleksibilitas untuk memanfaatkan seluruh EC2 dan opsi pembelian sambil mempertahankan kemudahan penggunaan dan abstraksi dari manajemen infrastruktur yang disediakan Fargate.
Mencap Fargate-like ai isolasi dalam Mode Otomatis EKS
Untuk mereplikasi model isolasi pod Fargate di mana setiap pod berjalan pada instance dedikasinya sendiri, Anda dapat menggunakan batasan penyebaran topologi Kubernetes. Ini adalah pendekatan yang disarankan untuk mengontrol distribusi pod di seluruh node:
apiVersion: apps/v1 kind: Deployment metadata: name: isolated-app spec: replicas: 3 selector: matchLabels: app: isolated-app template: metadata: labels: app: isolated-app annotations: eks.amazonaws.com/compute-type: ec2 spec: topologySpreadConstraints: - maxSkew: 1 topologyKey: kubernetes.io/hostname whenUnsatisfiable: DoNotSchedule labelSelector: matchLabels: app: isolated-app minDomains: 1 containers: - name: app image: nginx ports: - containerPort: 80
Dalam konfigurasi ini:
-
maxSkew: 1memastikan bahwa perbedaan jumlah pod antara dua node paling banyak 1, secara efektif mendistribusikan satu pod per node -
topologyKey: kubernetes.io/hostnamemendefinisikan node sebagai domain topologi -
whenUnsatisfiable: DoNotSchedulemencegah penjadwalan jika batasan tidak dapat dipenuhi -
minDomains: 1memastikan setidaknya satu domain (node) ada sebelum penjadwalan
Mode Otomatis EKS akan secara otomatis menyediakan instans EC2 baru sesuai kebutuhan untuk memenuhi batasan ini, menyediakan model isolasi yang sama dengan Fargate sambil memberi Anda akses ke berbagai jenis instans EC2 dan opsi pembelian.
Atau, Anda dapat menggunakan aturan anti-afinitas pod untuk isolasi yang lebih ketat:
apiVersion: apps/v1 kind: Deployment metadata: name: isolated-app spec: replicas: 3 selector: matchLabels: app: isolated-app template: metadata: labels: app: isolated-app annotations: eks.amazonaws.com/compute-type: ec2 spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - isolated-app topologyKey: kubernetes.io/hostname containers: - name: app image: nginx ports: - containerPort: 80
A podAntiAffinity turan dengan requiredDuringSchedulingIgnoredDuringExecution memastikan bahwa tidak ada dua pod dengan label yang app: isolated-app dapat dijadwalkan pada node yang sama. Pendekatan ini memberikan jaminan isolasi keras yang mirip dengan Fargate.
Prasyarat
Sebelum memulai migrasi, pastikan Anda memiliki:
-
Siapkan cluster dengan Fargate. Untuk informasi selengkapnya, lihat Memulai AWS Fargate untuk klaster Anda.
-
Diinstal dan terhubung
kubectlke cluster Anda. Untuk informasi selengkapnya, lihat Siapkan untuk menggunakan Amazon EKS.
Langkah 1: Periksa cluster Fargate
-
Periksa apakah cluster EKS dengan Fargate sedang berjalan:
kubectl get nodeNAME STATUS ROLES AGE VERSION fargate-ip-192-168-92-52.ec2.internal Ready <none> 25m v1.30.8-eks-2d5f260 fargate-ip-192-168-98-196.ec2.internal Ready <none> 24m v1.30.8-eks-2d5f260 -
Periksa pod yang sedang berjalan:
kubectl get pod -ANAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6659cb98f6-gxpjz 1/1 Running 0 26m kube-system coredns-6659cb98f6-gzzsx 1/1 Running 0 26m -
Buat penerapan dalam file yang disebut
deployment_fargate.yaml:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: eks.amazonaws.com/compute-type: fargate spec: containers: - name: nginx image: nginx ports: - containerPort: 80 -
Terapkan penerapan:
kubectl apply -f deployment_fargate.yamldeployment.apps/nginx-deployment created -
Periksa pod dan penerapan:
kubectl get pod,deployNAME READY STATUS RESTARTS AGE pod/nginx-deployment-5c7479459b-6trtm 1/1 Running 0 61s pod/nginx-deployment-5c7479459b-g8ssb 1/1 Running 0 61s pod/nginx-deployment-5c7479459b-mq4mf 1/1 Running 0 61s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nginx-deployment 3/3 3 3 61s -
Periksa simpul:
kubectl get node -owideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fargate-ip-192-168-111-43.ec2.internal Ready <none> 31s v1.30.8-eks-2d5f260 192.168.111.43 <none> Amazon Linux 2 5.10.234-225.910.amzn2.x86_64 containerd://1.7.25 fargate-ip-192-168-117-130.ec2.internal Ready <none> 36s v1.30.8-eks-2d5f260 192.168.117.130 <none> Amazon Linux 2 5.10.234-225.910.amzn2.x86_64 containerd://1.7.25 fargate-ip-192-168-74-140.ec2.internal Ready <none> 36s v1.30.8-eks-2d5f260 192.168.74.140 <none> Amazon Linux 2 5.10.234-225.910.amzn2.x86_64 containerd://1.7.25
Langkah 2: Aktifkan Mode Otomatis EKS pada cluster
-
Aktifkan Mode Otomatis EKS pada cluster yang ada menggunakan AWS CLI atau Management Console. Untuk informasi selengkapnya, lihat Aktifkan Mode Otomatis EKS pada cluster yang ada.
-
Periksa nodepool:
kubectl get nodepoolNAME NODECLASS NODES READY AGE general-purpose default 1 True 6m58s system default 0 True 3d14h
Langkah 3: Memperbarui beban kerja untuk migrasi
Identifikasi dan perbarui beban kerja yang ingin Anda migrasi ke Mode Otomatis EKS.
Untuk memigrasikan beban kerja dari Fargate ke Mode Otomatis EKS, terapkan an eks.amazonaws.com/compute-type: ec2 otasi. Ini memastikan bahwa beban kerja tidak akan dijadwalkan oleh Fargate, terlepas dari profil Fargate, dan akan terjebak oleh Mode Otomatis EKS. NodePool Untuk informasi selengkapnya, lihat Membuat Kumpulan Simpul untuk Mode Otomatis EKS.
-
Ubah penerapan Anda (misalnya,
deployment_fargate.yamlfile) untuk mengubah jenis komputasi menjadi:ec2apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: eks.amazonaws.com/compute-type: ec2 spec: containers: - name: nginx image: nginx ports: - containerPort: 80 -
Terapkan penerapan. Perubahan ini memungkinkan beban kerja dijadwalkan pada node Mode Otomatis EKS baru:
kubectl apply -f deployment_fargate.yaml -
Periksa apakah penerapan berjalan di cluster Mode Otomatis EKS:
kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-deployment-97967b68d-ffxxh 1/1 Running 0 3m31s 192.168.43.240 i-0845aafcb51630ffb <none> <none> nginx-deployment-97967b68d-mbcgj 1/1 Running 0 2m37s 192.168.43.241 i-0845aafcb51630ffb <none> <none> nginx-deployment-97967b68d-qpd8x 1/1 Running 0 2m35s 192.168.43.242 i-0845aafcb51630ffb <none> <none> -
Verifikasi tidak ada node Fargate yang berjalan dan penerapan berjalan di node yang dikelola Mode Otomatis EKS:
kubectl get node -owideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME i-0845aafcb51630ffb Ready <none> 3m30s v1.30.8-eks-3c20087 192.168.41.125 3.81.118.95 Bottlerocket (EKS Auto) 2025.3.14 (aws-k8s-1.30) 6.1.129 containerd://1.7.25+bottlerocket
Langkah 4: Memigrasikan beban kerja secara bertahap
Ulangi Langkah 3 untuk setiap beban kerja yang ingin Anda migrasi. Ini memungkinkan Anda untuk memindahkan beban kerja secara individu atau dalam kelompok, berdasarkan persyaratan dan toleransi risiko Anda.
Langkah 5: Hapus profil fargate asli
Setelah semua beban kerja telah dimigrasi, Anda dapat menghapus fargate profil asli. Ganti <fargate profile name> dengan nama profil Fargate Anda:
aws eks delete-fargate-profile --cluster-name eks-fargate-demo-cluster --fargate-profile-name <fargate profile name>
Langkah 6: Kurangi CoreDNS
Karena Mode Otomatis EKS menangani CoreDNS, skala coredns penerapan turun menjadi 0:
kubectl scale deployment coredns -n kube-system --replicas=0