

 **Bantu tingkatkan 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 **Edit halaman ini pada GitHub** tautan 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
<a name="auto-migrate-fargate"></a>

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 untuk memindahkan beban kerja dengan kecepatan Anda sendiri sambil menjaga stabilitas klaster dan ketersediaan aplikasi selama transisi.

 step-by-stepPendekatan yang diuraikan di bawah ini memungkinkan Anda menjalankan EKS Fargate dan Mode Otomatis EKS berdampingan selama periode migrasi. Strategi operasi ganda ini membantu memastikan transisi yang mulus dengan memungkinkan Anda memvalidasi perilaku beban kerja pada Mode Otomatis EKS sebelum sepenuhnya menonaktifkan EKS Fargate. Anda dapat memigrasikan aplikasi secara individu atau dalam kelompok, memberikan fleksibilitas untuk mengakomodasi persyaratan operasional spesifik dan toleransi risiko Anda.

## Membandingkan Amazon EKS Auto Mode dan EKS dengan AWS Fargate
<a name="comparing_amazon_eks_auto_mode_and_eks_with_shared_aws_fargate"></a>

Amazon EKS dengan AWS Fargate tetap menjadi pilihan bagi pelanggan yang ingin menjalankan EKS, tetapi Amazon EKS Auto Mode adalah pendekatan yang disarankan untuk bergerak maju. Mode Otomatis EKS sepenuhnya sesuai dengan Kubernetes, mendukung semua primitif Kubernetes hulu dan alat platform seperti Istio, yang tidak dapat didukung Fargate. Mode Otomatis EKS juga sepenuhnya mendukung semua opsi pembelian runtime EC2, termasuk instans GPU dan Spot, memungkinkan pelanggan untuk 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 untuk mencapai model isolasi yang sama dengan Fargate, menggunakan kemampuan penjadwalan Kubernetes standar untuk memastikan setiap instans EC2 menjalankan satu wadah aplikasi. Dengan mengadopsi Amazon EKS Auto Mode, pelanggan dapat membuka manfaat penuh dari menjalankan Kubernetes AWS — platform Kubernetes-Conformant sepenuhnya yang memberikan fleksibilitas untuk memanfaatkan seluruh luas EC2 dan opsi pembelian sambil mempertahankan kemudahan penggunaan dan abstraksi dari manajemen infrastruktur yang disediakan Fargate.

### Mencapai isolasi seperti Fargate dalam Mode Otomatis EKS
<a name="_achieving_fargate_like_isolation_in_eks_auto_mode"></a>

Untuk mereplikasi model isolasi pod Fargate di mana setiap pod berjalan pada instance dedikasinya sendiri, Anda dapat menggunakan kendala penyebaran topologi Kubernetes. Ini adalah pendekatan yang direkomendasikan untuk mengendalikan 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: 1`memastikan bahwa perbedaan jumlah pod antara dua node paling banyak 1, secara efektif mendistribusikan satu pod per node
+  `topologyKey: kubernetes.io/hostname`mendefinisikan node sebagai domain topologi
+  `whenUnsatisfiable: DoNotSchedule`mencegah penjadwalan jika kendala tidak dapat dipenuhi
+  `minDomains: 1`memastikan setidaknya satu domain (node) ada sebelum penjadwalan

Mode Otomatis EKS akan secara otomatis menyediakan instans EC2 baru sesuai kebutuhan untuk memenuhi kendala 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
```

`podAntiAffinity`Aturan 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
<a name="_prerequisites"></a>

Sebelum memulai migrasi, pastikan Anda memiliki
+ Siapkan cluster dengan Fargate. Untuk informasi selengkapnya, lihat [Memulai AWS Fargate untuk klaster Anda](fargate-getting-started.md).
+ Diinstal dan terhubung `kubectl` ke cluster Anda. Untuk informasi selengkapnya, lihat [Siapkan untuk menggunakan Amazon EKS](setting-up.md).

## Langkah 1: Periksa cluster Fargate
<a name="_step_1_check_the_fargate_cluster"></a>

1. Periksa apakah cluster EKS dengan Fargate sedang berjalan:

   ```
   kubectl get node
   ```

   ```
   NAME 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
   ```

1. Periksa pod yang sedang berjalan:

   ```
   kubectl get pod -A
   ```

   ```
   NAMESPACE 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
   ```

1. Buat penyebaran dalam file bernama`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
   ```

1. Terapkan penyebaran:

   ```
   kubectl apply -f deployment_fargate.yaml
   ```

   ```
   deployment.apps/nginx-deployment created
   ```

1. Periksa pod dan penerapan:

   ```
   kubectl get pod,deploy
   ```

   ```
   NAME                                    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
   ```

1. Periksa simpul:

   ```
   kubectl get node -owide
   ```

   ```
   NAME                                    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 di cluster
<a name="_step_2_enable_eks_auto_mode_on_the_cluster"></a>

1. Aktifkan Mode Otomatis EKS pada klaster Anda yang ada menggunakan AWS CLI atau Management Console. Untuk informasi selengkapnya, lihat [Aktifkan Mode Otomatis EKS pada cluster yang ada](auto-enable-existing.md).

1. Periksa nodepool:

   ```
   kubectl get nodepool
   ```

   ```
   NAME              NODECLASS   NODES   READY   AGE
   general-purpose   default     1       True    6m58s
   system            default     0       True    3d14h
   ```

## Langkah 3: Perbarui beban kerja untuk migrasi
<a name="_step_3_update_workloads_for_migration"></a>

Identifikasi dan perbarui beban kerja yang ingin Anda migrasikan ke Mode Otomatis EKS.

Untuk memigrasikan beban kerja dari Fargate ke Mode Otomatis EKS, terapkan anotasi. `eks.amazonaws.com/compute-type: ec2` 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 [Buat Node Pool untuk Mode Otomatis EKS](create-node-pool.md).

1. Ubah penerapan Anda (misalnya, `deployment_fargate.yaml` file) untuk mengubah jenis komputasi menjadi: `ec2`

   ```
   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: ec2
       spec:
         containers:
         - name: nginx
           image: nginx
           ports:
           - containerPort: 80
   ```

1. Terapkan penyebaran. Perubahan ini memungkinkan beban kerja dijadwalkan pada node Mode Otomatis EKS yang baru:

   ```
   kubectl apply -f deployment_fargate.yaml
   ```

1. Periksa apakah penerapan berjalan di kluster Mode Otomatis EKS:

   ```
   kubectl get pod -o wide
   ```

   ```
   NAME                               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>
   ```

1. Pastikan tidak ada node Fargate yang berjalan dan penerapan yang berjalan di node terkelola Mode Otomatis EKS:

   ```
   kubectl get node -owide
   ```

   ```
   NAME                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: Migrasikan beban kerja secara bertahap
<a name="_step_4_gradually_migrate_workloads"></a>

Ulangi Langkah 3 untuk setiap beban kerja yang ingin Anda migrasikan. Ini memungkinkan Anda untuk memindahkan beban kerja secara individu atau dalam kelompok, berdasarkan persyaratan dan toleransi risiko Anda.

## Langkah 5: Hapus profil fargate asli
<a name="_step_5_remove_the_original_fargate_profile"></a>

Setelah semua beban kerja telah dimigrasikan, Anda dapat menghapus profil asli`fargate`. 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: Turunkan CoreDNS
<a name="_step_6_scale_down_coredns"></a>

Karena mode EKS Auto menangani CoreDNS, Anda menskalakan penerapan `coredns` ke 0:

```
kubectl scale deployment coredns -n kube-system —-replicas=0
```