

 **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.

# Mengelola sumber daya komputasi dengan menggunakan node
<a name="eks-compute"></a>

Node Kubernetes adalah mesin yang menjalankan aplikasi kontainer. Setiap node memiliki komponen-komponen berikut:
+  **[Container runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)** — Perangkat lunak yang bertanggung jawab untuk menjalankan kontainer.
+  **[kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)** — Memastikan bahwa kontainer sehat dan berjalan di dalam Pod yang terkait.
+  **[kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/)** — Mempertahankan aturan jaringan yang memungkinkan komunikasi ke Pod Anda.

Untuk informasi selengkapnya, lihat [Simpul](https://kubernetes.io/docs/concepts/architecture/nodes/) dalam dokumentasi Kubernetes.

Cluster Amazon EKS Anda dapat menjadwalkan Pod pada kombinasi node yang [dikelola EKS Auto Mode, node](automode.md) yang [dikelola sendiri, grup node terkelola](worker.md) [Amazon EKS](managed-node-groups.md), [AWS Fargate](fargate.md), dan [Amazon EKS](hybrid-nodes-overview.md) Hybrid Nodes. Untuk mempelajari lebih lanjut tentang node yang digunakan di klaster Anda, lihat[Lihat sumber daya Kubernetes di Konsol Manajemen AWS](view-kubernetes-resources.md).

**catatan**  
Tidak termasuk node hybrid, node harus berada di VPC yang sama dengan subnet yang Anda pilih saat Anda membuat cluster. Namun, node tidak harus berada di subnet yang sama.

## Bandingkan opsi komputasi
<a name="_compare_compute_options"></a>

Tabel berikut memberikan beberapa kriteria untuk dievaluasi saat memutuskan opsi mana yang paling sesuai dengan kebutuhan Anda. Node yang dikelola sendiri adalah opsi lain yang mendukung semua kriteria yang tercantum, tetapi mereka membutuhkan lebih banyak pemeliharaan manual. Untuk informasi selengkapnya, lihat [Pertahankan node sendiri dengan node yang dikelola sendiri](worker.md).

**catatan**  
Bottlerocket memiliki beberapa perbedaan spesifik dari informasi umum dalam tabel ini. [Untuk informasi lebih lanjut, lihat dokumentasi Bottlerocket di.](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) GitHub


| Kriteria | Grup simpul terkelola EKS | Mode Otomatis EKS | Node Hibrida Amazon EKS | 
| --- | --- | --- | --- | 
|  [Dapat dikerahkan ke Outposts AWS](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  Tidak  |  Tidak  |  Tidak  | 
|  Dapat dikerahkan ke Zona [AWS Lokal](local-zones.md)   |  Ya  |  Tidak  |  Tidak  | 
|  Dapat menjalankan kontainer yang memerlukan Windows  |  Ya  |  Tidak  |  Tidak  | 
|  Dapat menjalankan kontainer yang membutuhkan Linux  |  Ya  |  Ya  |  Ya  | 
|  Dapat menjalankan beban kerja yang memerlukan Chip Inferentia  |   [Ya](inferentia-support.md) — Hanya untuk simpul Amazon Linux  |  Ya  |  Tidak  | 
|  Dapat menjalankan beban kerja yang memerlukan GPU  |   [Ya](eks-optimized-ami.md#gpu-ami) — Hanya untuk simpul Amazon Linux  |  Ya  |  Ya  | 
|  Dapat menjalankan beban kerja yang memerlukan prosesor Arm  |   [Ya](eks-optimized-ami.md#arm-ami)   |  Ya  |  Ya  | 
|  Dapat menjalankan AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Ya  |  Ya  |  Tidak  | 
|  Pod berbagi CPU, memori, penyimpanan, dan sumber daya jaringan dengan Pod lain.  |  Ya  |  Ya  |  Ya  | 
|  Harus menerapkan dan mengelola instans Amazon EC2   |  Ya  |  Tidak - Pelajari tentang [instans EC2 terkelola](automode-learn-instances.md)   |  Ya — mesin fisik atau virtual lokal dikelola oleh Anda dengan alat pilihan Anda.  | 
|  Harus mengamankan, memelihara, dan menambal sistem operasi EC2 instans Amazon  |  Ya  |  Tidak  |  Ya — sistem operasi yang berjalan pada mesin fisik atau virtual Anda dikelola oleh Anda dengan alat pilihan Anda.  | 
|  Dapat memberikan argumen bootstrap pada penerapan node, seperti argumen [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ekstra.  |  Ya — Menggunakan `eksctl` atau [meluncurkan template](launch-templates.md) dengan AMI kustom.  |  Tidak - [Gunakan a `NodeClass` untuk mengkonfigurasi node](create-node-class.md)   |  Ya - Anda dapat menyesuaikan argumen bootstrap dengan nodeadm. Lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).  | 
|  Dapat menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari alamat IP yang ditetapkan ke node.  |  Ya - Menggunakan template peluncuran dengan AMI kustom. Untuk informasi selengkapnya, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).  |  Tidak  |  Ya - lihat[Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).  | 
|  Dapat SSH ke simpul  |  Ya  |  Tidak - [Pelajari cara memecahkan masalah node](auto-troubleshoot.md)   |  Ya  | 
|  Dapat men-deploy AMI kustom Anda sendiri ke simpul  |  Ya - Menggunakan [template peluncuran](launch-templates.md)   |  Tidak  |  Ya  | 
|  Dapat men-deploy CNI kustom Anda sendiri ke simpul  |  Ya — Menggunakan [templat peluncuran](launch-templates.md) dengan AMI kustom  |  Tidak  |  Ya  | 
|  Harus memperbarui node AMI sendiri  |   [Ya](update-managed-node-group.md) - Jika Anda menerapkan AMI Amazon EKS yang dioptimalkan, Anda akan diberi tahu di konsol Amazon EKS saat pembaruan tersedia. Anda dapat melakukan pembaruan dengan satu klik di konsol. Jika Anda menerapkan AMI khusus, Anda tidak akan diberi tahu di konsol Amazon EKS saat pembaruan tersedia. Anda harus melakukan pembaruan sendiri.  |  Tidak  |  Ya - sistem operasi yang berjalan pada mesin fisik atau virtual Anda dikelola oleh Anda dengan perkakas pilihan Anda. Lihat [Siapkan sistem operasi untuk node hybrid](hybrid-nodes-os.md).  | 
|  Harus memperbarui versi node Kubernetes sendiri  |   [Ya](update-managed-node-group.md) - Jika Anda menerapkan AMI Amazon EKS yang dioptimalkan, Anda akan diberi tahu di konsol Amazon EKS saat pembaruan tersedia. Anda dapat melakukan pembaruan dengan satu klik di konsol. Jika Anda menerapkan AMI khusus, Anda tidak akan diberi tahu di konsol Amazon EKS saat pembaruan tersedia. Anda harus melakukan pembaruan sendiri.  |  Tidak  |  Ya - Anda mengelola peningkatan node hibrida dengan perkakas pilihan Anda sendiri atau dengan. `nodeadm` Lihat [Tingkatkan node hybrid untuk klaster Anda](hybrid-nodes-upgrade.md).  | 
|  Dapat menggunakan penyimpanan Amazon EBS dengan Pod  |   [Ya](ebs-csi.md)   |  Ya, sebagai kemampuan terintegrasi. Pelajari cara [membuat kelas penyimpanan.](create-storage-class.md)   |  Tidak  | 
|  Dapat menggunakan penyimpanan Amazon EFS dengan Pod  |   [Ya](efs-csi.md)   |  Ya  |  Tidak  | 
|  Dapat menggunakan Amazon FSx untuk penyimpanan Lustre dengan Pod  |   [Ya](fsx-csi.md)   |  Ya  |  Tidak  | 
|  Dapat menggunakan Network Load Balancer untuk layanan  |   [Ya](network-load-balancing.md)   |  Ya  |  Ya - harus menggunakan tipe target`ip`.  | 
|  Pods dapat berjalan dalam subnet publik  |  Ya  |  Ya  |  Tidak - pod berjalan di lingkungan lokal.  | 
|  Dapat menetapkan grup keamanan VPC yang berbeda ke masing-masing Pod  |   [Ya](security-groups-for-pods.md) — Hanya untuk simpul Linux  |  Tidak  |  Tidak  | 
|  Dapat menjalankan Kubernetes DaemonSets  |  Ya  |  Ya  |  Ya  | 
|  Support `HostPort` dan `HostNetwork` dalam manifes Pod  |  Ya  |  Ya  |  Ya  | 
|   AWS Ketersediaan wilayah  |   [Semua wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Semua wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |   [Semua wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) kecuali Wilayah AWS GovCloud (AS) dan Wilayah Tiongkok.  | 
|  Dapat menjalankan kontainer di host EC2 khusus Amazon  |  Ya  |  Tidak  |  Tidak  | 
|  Harga  |  Biaya EC2 instans Amazon yang menjalankan beberapa Pod. Untuk informasi selengkapnya, lihat [ EC2 harga Amazon](https://aws.amazon.com/ec2/pricing/).  |  Saat Mode Otomatis EKS diaktifkan di klaster, Anda membayar biaya terpisah, selain biaya EC2 instans standar, untuk instans yang diluncurkan menggunakan kemampuan komputasi Mode Otomatis. Jumlahnya bervariasi dengan jenis instans yang diluncurkan dan AWS wilayah tempat klaster Anda berada. Untuk informasi selengkapnya, lihat [harga Amazon EKS](https://aws.amazon.com/eks/pricing/).  |  Biaya node hybrid vCPU per jam. Untuk informasi selengkapnya, lihat [harga Amazon EKS](https://aws.amazon.com/eks/pricing/).  | 

# Sederhanakan siklus hidup node dengan grup node terkelola
<a name="managed-node-groups"></a>

Grup node terkelola Amazon EKS mengotomatiskan penyediaan dan pengelolaan siklus hidup node (instans Amazon EC2 ) untuk klaster Amazon EKS Kubernetes.

Dengan grup node terkelola Amazon EKS, Anda tidak perlu menyediakan atau mendaftarkan EC2 instans Amazon secara terpisah yang menyediakan kapasitas komputasi untuk menjalankan aplikasi Kubernetes Anda. Anda dapat membuat, memperbarui secara otomatis, atau mengakhiri simpul untuk klaster Anda dengan satu pengoperasian. Pembaruan dan penghentian node secara otomatis menguras node untuk memastikan bahwa aplikasi Anda tetap tersedia.

Setiap node terkelola disediakan sebagai bagian dari grup Auto EC2 Scaling Amazon yang dikelola untuk Anda oleh Amazon EKS. Setiap sumber daya termasuk instans dan grup Auto Scaling berjalan di dalam AWS akun Anda. Setiap grup node berjalan di beberapa Availability Zone yang Anda tentukan.

Grup node terkelola juga dapat secara opsional memanfaatkan perbaikan otomatis node, yang terus memantau kesehatan node. Secara otomatis bereaksi terhadap masalah yang terdeteksi dan menggantikan node bila memungkinkan. Ini membantu ketersediaan cluster secara keseluruhan dengan intervensi manual minimal. Untuk informasi selengkapnya, lihat [Mendeteksi masalah kesehatan node dan mengaktifkan perbaikan node otomatis](node-health.md).

Anda dapat menambahkan grup node terkelola ke kluster baru atau yang sudah ada menggunakan konsol Amazon EKS`eksctl`, AWS CLI, API AWS , atau infrastruktur sebagai alat kode yang disertakan. AWS CloudFormation [Node yang diluncurkan sebagai bagian dari grup node terkelola secara otomatis ditandai untuk penemuan otomatis oleh Kubernetes Cluster Autoscaler.](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) Anda dapat menggunakan grup simpul untuk menerapkan label Kubernetes ke simpul dan memperbaruinya kapan saja.

Tidak ada biaya tambahan untuk menggunakan grup node terkelola Amazon EKS, Anda hanya membayar AWS sumber daya yang Anda sediakan. Ini termasuk EC2 instans Amazon, volume Amazon EBS, jam cluster Amazon EKS, dan infrastruktur lainnya AWS . Tidak ada biaya minimum dan tidak ada komitmen di muka.

Untuk memulai dengan klaster Amazon EKS baru dan grup simpul terkelola, lihat [Memulai Amazon EKS — Konsol Manajemen AWS dan AWS CLI](getting-started-console.md).

Untuk menambahkan grup simpul terkelola ke klaster yang ada, lihat [Buat grup node terkelola untuk klaster Anda](create-managed-node-group.md).

## Konsep grup simpul terkelola
<a name="managed-node-group-concepts"></a>
+ Grup node terkelola Amazon EKS membuat dan mengelola EC2 instans Amazon untuk Anda.
+ Setiap node terkelola disediakan sebagai bagian dari grup Auto EC2 Scaling Amazon yang dikelola untuk Anda oleh Amazon EKS. Selain itu, setiap sumber daya termasuk EC2 instans Amazon dan grup Auto Scaling berjalan di dalam AWS akun Anda.
+ Grup Auto Scaling dari grup node terkelola mencakup setiap subnet yang Anda tentukan saat membuat grup.
+ [Amazon EKS menandai resource grup node terkelola sehingga dikonfigurasi untuk menggunakan Kubernetes Cluster Autoscaler.](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md)
**penting**  
Jika Anda menjalankan aplikasi stateful di beberapa Availability Zone yang didukung oleh volume Amazon EBS dan menggunakan Kubernetes [Cluster Autoscaler, Anda harus mengonfigurasi beberapa grup node, masing-masing dicakup](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) ke satu Availability Zone. Selain itu, Anda harus mengaktifkan opsi fitur `--balance-similar-node-groups`.
+ Anda dapat menggunakan templat peluncuran khusus untuk tingkat fleksibilitas dan penyesuaian yang lebih besar saat menerapkan node terkelola. Misalnya, Anda dapat menentukan `kubelet` argumen tambahan dan menggunakan AMI kustom. Untuk informasi selengkapnya, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md). Jika Anda tidak menggunakan templat peluncuran khusus saat pertama kali membuat grup node terkelola, ada templat peluncuran yang dibuat secara otomatis. Jangan memodifikasi templat yang dibuat secara otomatis ini atau terjadi kesalahan secara manual.
+ Amazon EKS mengikuti model tanggung jawab bersama untuk patch keamanan CVEs dan pada grup node terkelola. Ketika simpul terkelola menjalankan Amazon EKS yang dioptimalkan AMI, Amazon EKS bertanggung jawab untuk membangun versi patch AMI ketika bug atau masalah dilaporkan. Kita bisa memublikasikan perbaikan. Namun, Anda bertanggung jawab untuk menerapkan versi AMI yang ditambal ini ke grup node terkelola Anda. Saat node terkelola menjalankan AMI kustom, Anda bertanggung jawab untuk membuat versi AMI yang ditambal saat bug atau masalah dilaporkan dan kemudian menerapkan AMI. Untuk informasi selengkapnya, lihat [Memperbarui grup node terkelola untuk klaster Anda](update-managed-node-group.md).
+ Grup simpul terkelola Amazon EKS dapat diluncurkan di subnet publik maupun privat. Jika Anda meluncurkan grup simpul terkelola di subnet publik pada atau setelah 22 April 2020, subnet tersebut harus mengatur `MapPublicIpOnLaunch` ke BETUL agar instans berhasil bergabung dengan klaster. Jika subnet publik dibuat menggunakan `eksctl` atau [AWS CloudFormation templat penjual Amazon EKS](creating-a-vpc.md) pada atau setelah 26 Maret 2020, maka pengaturan ini sudah disetel ke true. Jika subnet publik dibuat sebelum 26 Maret 2020, Anda harus mengubah pengaturan secara manual. Untuk informasi selengkapnya, lihat [Memodifikasi atribut IPv4 pengalamatan publik untuk subnet Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
+ Saat menerapkan grup node terkelola di subnet pribadi, Anda harus memastikan bahwa grup tersebut dapat mengakses Amazon ECR untuk menarik gambar kontainer. [Anda dapat melakukan ini dengan menghubungkan gateway NAT ke tabel rute subnet atau dengan menambahkan titik akhir VPC berikut AWS PrivateLink :](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-setting-up-vpc-create)
  + Antarmuka titik akhir API Amazon ECR - `com.amazonaws.region-code.ecr.api` 
  + Antarmuka titik akhir API registri Amazon ECR Docker - `com.amazonaws.region-code.ecr.dkr` 
  + Titik akhir gerbang Amazon S3 - `com.amazonaws.region-code.s3` 

  Untuk layanan dan titik akhir lainnya yang umum digunakan, lihat. [Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md)
+ [Grup node terkelola tidak dapat digunakan di [AWS Outposts](eks-outposts.md) atau di Wavelength.AWS](https://docs.aws.amazon.com/wavelength/) Grup node terkelola dapat dibuat di [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/). Untuk informasi selengkapnya, lihat [Luncurkan klaster EKS latensi rendah dengan Local Zones AWS](local-zones.md).
+ Anda dapat membuat beberapa grup simpul terkelola dalam satu klaster. Misalnya, Anda dapat membuat satu grup node dengan Amazon EKS standar yang dioptimalkan Amazon Linux AMI untuk beberapa beban kerja dan lainnya dengan varian GPU untuk beban kerja yang memerlukan dukungan GPU.
+ Jika grup node terkelola mengalami kegagalan [pemeriksaan status EC2 instans Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html), Amazon EKS mengembalikan kode kesalahan untuk membantu Anda mendiagnosis masalah tersebut. Untuk informasi selengkapnya, lihat [Kode kesalahan grup node terkelola](troubleshooting.md#troubleshoot-managed-node-groups).
+ Amazon EKS menambahkan label Kubernetes pada instans grup simpul terkelola. Amazon EKS yang diberi label ini diawali dengan `eks.amazonaws.com`.
+ Amazon EKS otomatis membuang simpul menggunakan API Kubernetes selama pengakhiran atau pembaruan.
+ Anggaran gangguan pod tidak dihormati saat mengakhiri sebuah node dengan `AZRebalance` atau mengurangi jumlah node yang diinginkan. Tindakan ini mencoba untuk mengusir Pod pada node. Tetapi jika dibutuhkan lebih dari 15 menit, node akan dihentikan terlepas dari apakah semua Pod pada node dihentikan. Untuk memperpanjang periode hingga node dihentikan, tambahkan hook siklus hidup ke grup Auto Scaling. Untuk informasi selengkapnya, lihat [Menambahkan kait siklus hidup](https://docs.aws.amazon.com/autoscaling/ec2/userguide/adding-lifecycle-hooks.html) di Panduan Pengguna Amazon * EC2 Auto Scaling*.
+ Untuk menjalankan proses drain dengan benar setelah menerima notifikasi interupsi Spot atau notifikasi penyeimbangan kapasitas, `CapacityRebalance` harus diatur ke. `true`
+ Memperbarui grup node terkelola akan menghormati anggaran gangguan Pod yang Anda tetapkan untuk Pod Anda. Untuk informasi selengkapnya, lihat [Memahami setiap fase pembaruan node](managed-node-update-behavior.md).
+ Tidak ada biaya tambahan untuk menggunakan grup simpul terkelola Amazon EKS. Anda hanya membayar untuk AWS sumber daya yang Anda berikan.
+ Jika Anda ingin mengenkripsi volume Amazon EBS untuk simpul Anda, Anda dapat men-deploy simpul menggunakan templat peluncuran. Untuk menerapkan node terkelola dengan volume Amazon EBS terenkripsi tanpa menggunakan templat peluncuran, enkripsi semua volume Amazon EBS baru yang dibuat di akun Anda. Untuk informasi selengkapnya, lihat [Enkripsi secara default](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#encryption-by-default) di *Panduan EC2 Pengguna Amazon*.

## Tipe kapasitas grup simpul terkelola
<a name="managed-node-group-capacity-types"></a>

Saat membuat grup simpul terkelola, Anda dapat memilih tipe kapasitas Sesuai Permintaan atau Spot. Amazon EKS menerapkan grup node terkelola dengan grup EC2 Auto Scaling Amazon yang hanya berisi On-Demand atau hanya Instans Spot Amazon EC2 . Anda dapat menjadwalkan Pod untuk aplikasi toleran kesalahan ke grup node yang dikelola Spot, dan kesalahan aplikasi yang tidak toleran pada grup node On-Demand dalam satu cluster Kubernetes. Secara default, grup node terkelola menerapkan instans Amazon EC2 On-Demand.

### Sesuai Permintaan
<a name="managed-node-group-capacity-types-on-demand"></a>

Dengan Instans Sesuai Permintaan, Anda membayar kapasitas komputasi pada jam kedua tanpa komitmen jangka panjang.

Secara default, jika Anda tidak menentukan **Tipe kapasitas**, grup simpul terkelola disediakan dengan instans Sesuai Permintaan. Grup node terkelola mengonfigurasi grup EC2 Auto Scaling Amazon atas nama Anda dengan setelan berikut diterapkan:
+ Strategi alokasi untuk penyediaan kapasitas Sesuai Permintaan diatur ke `prioritized`. Grup simpul terkelola menggunakan urutan tipe instans yang dilewatkan dalam API untuk menentukan tipe instans mana yang akan digunakan pertama kali ketika memenuhi kapasitas Sesuai Permintaan. Misalnya, Anda dapat menentukan tiga tipe instans dalam urutan berikut: `c5.large`, `c4.large`, dan `c3.large`. Ketika Instans Sesuai Permintaan Anda diluncurkan, grup simpul terkelola memenuhi kapasitas Sesuai Permintaan dengan memulai `c5.large`, lalu `c4.large`, dan kemudian `c3.large`. Untuk informasi selengkapnya, lihat [grup Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html#asg-allocation-strategies) di Panduan Pengguna *Amazon Auto EC2 Scaling*.
+ Amazon EKS menambahkan label Kubernetes berikut untuk semua simpul dalam grup simpul terkelola Anda yang menentukan tipe kapasitas: `eks.amazonaws.com/capacityType: ON_DEMAND`. Anda dapat menggunakan label ini untuk menjadwalkan aplikasi yang tidak menoleransi stateful atau kesalahan pada simpul Sesuai Permintaan.

### Spot
<a name="managed-node-group-capacity-types-spot"></a>

Instans EC2 Spot Amazon adalah EC2 kapasitas Amazon cadangan yang menawarkan diskon tajam dari harga On-Demand. Instans EC2 Spot Amazon dapat diinterupsi dengan pemberitahuan interupsi dua menit saat EC2 membutuhkan kapasitas kembali. Untuk informasi selengkapnya, lihat [Instans Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) di *Panduan EC2 Pengguna Amazon*. Anda dapat mengonfigurasi grup node terkelola dengan Instans EC2 Spot Amazon untuk mengoptimalkan biaya node komputasi yang berjalan di klaster Amazon EKS Anda.

Untuk menggunakan Instans Spot di dalam grup node terkelola, buat grup node terkelola dengan menyetel tipe kapasitas sebagai`spot`. Grup node terkelola mengonfigurasi grup EC2 Auto Scaling Amazon atas nama Anda dengan praktik terbaik Spot berikut yang diterapkan:
+ Untuk memastikan bahwa node Spot Anda disediakan dalam kumpulan kapasitas Spot yang optimal, strategi alokasi diatur ke salah satu dari berikut ini:
  +  `price-capacity-optimized`(PCO) — Saat membuat grup node baru di cluster dengan versi Kubernetes `1.28` atau lebih tinggi, strategi alokasi diatur ke. `price-capacity-optimized` Namun, strategi alokasi tidak akan diubah untuk grup node yang sudah dibuat `capacity-optimized` sebelum grup node terkelola Amazon EKS mulai mendukung PCO.
  +  `capacity-optimized`(CO) — Saat membuat grup node baru di cluster dengan versi Kubernetes `1.27` atau lebih rendah, strategi alokasi diatur ke. `capacity-optimized`

  Untuk meningkatkan jumlah kumpulan kapasitas Spot yang tersedia untuk mengalokasikan kapasitas, konfigurasikan grup node terkelola untuk menggunakan beberapa jenis instance.
+ Amazon EC2 Spot Capacity Rebalancing diaktifkan sehingga Amazon EKS dapat menguras dan menyeimbangkan kembali node Spot Anda dengan anggun untuk meminimalkan gangguan aplikasi saat node Spot berisiko tinggi mengalami gangguan. Untuk informasi selengkapnya, lihat [Penyeimbangan Kembali Kapasitas EC2 Auto Scaling Amazon di Panduan Pengguna](https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html) Amazon Auto *Scaling. EC2 *
  + Saat node Spot menerima rekomendasi penyeimbangan ulang, Amazon EKS secara otomatis mencoba meluncurkan node Spot pengganti baru.
  + Jika pemberitahuan gangguan Spot dua menit tiba sebelum pengganti simpul Spot berada dalam status `Ready`, Amazon EKS mulai membuang simpul Spot yang menerima rekomendasi penyeimbangan kembali. Amazon EKS menguras node dengan upaya terbaik. Akibatnya, tidak ada jaminan bahwa Amazon EKS akan menunggu node pengganti bergabung dengan cluster sebelum menguras node yang ada.
  + Ketika pengganti simpul Spot node mengalami bootstrapped dan dalam status `Ready` pada Kubernetes, Amazon EKS menutup dan membuang simpul Spot yang menerima rekomendasi penyeimbangan kembali. Mengepung node Spot memastikan bahwa pengontrol layanan tidak mengirim permintaan baru ke node Spot ini. Hal ini juga menghapusnya dari daftar simpul Spot yang sehat, aktif. Menguras node Spot memastikan bahwa Pod yang sedang berjalan diusir dengan baik.
+ Amazon EKS menambahkan label Kubernetes berikut pada semua simpul dalam grup simpul terkelola Anda yang menentukan tipe kapasitas: `eks.amazonaws.com/capacityType: SPOT`. Anda dapat menggunakan label ini untuk menjadwalkan aplikasi toleran kesalahan pada simpul Spot.
**penting**  
EC2 mengeluarkan [pemberitahuan gangguan Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-instance-termination-notices.html) dua menit sebelum menghentikan Instans Spot Anda. Namun, Pod pada node Spot mungkin tidak menerima jendela 2 menit penuh untuk shutdown yang anggun. Saat EC2 mengeluarkan pemberitahuan, ada penundaan sebelum Amazon EKS mulai mengusir Pod. Penggusuran terjadi secara berurutan untuk melindungi server API Kubernetes, sehingga selama beberapa reklamasi Spot secara simultan, beberapa Pod mungkin menerima pemberitahuan penggusuran yang tertunda. Pod dapat dihentikan secara paksa tanpa menerima sinyal terminasi, terutama pada node dengan kepadatan Pod tinggi, selama reklamasi bersamaan, atau saat menggunakan masa tenggang terminasi yang lama. Untuk beban kerja Spot, kami sarankan merancang aplikasi agar toleran terhadap interupsi, menggunakan masa tenggang terminasi 30 detik atau kurang, menghindari kait PreStop yang berjalan lama, dan memantau metrik penggusuran Pod untuk memahami masa tenggang aktual dalam klaster Anda. Untuk beban kerja yang membutuhkan penghentian yang terjamin dengan anggun, sebaiknya gunakan kapasitas Sesuai Permintaan.

Ketika ingin memutuskan apakah akan men-deploy grup simpul dengan kapasitas Sesuai Permintaan atau Spot, Anda harus mempertimbangkan kondisi berikut:
+ Instans Spot cocok untuk aplikasi tanpa kewarganegaraan, toleran kesalahan, dan fleksibel. Ini termasuk beban kerja pelatihan pembelajaran batch dan mesin, data besar ETLs seperti Apache Spark, aplikasi pemrosesan antrian, dan titik akhir API stateless. Karena Spot adalah EC2 kapasitas Amazon cadangan, yang dapat berubah seiring waktu, kami menyarankan Anda menggunakan kapasitas Spot untuk beban kerja yang toleran interupsi. Lebih khusus lagi, kapasitas Spot cocok untuk beban kerja yang dapat mentolerir periode di mana kapasitas yang diperlukan tidak tersedia.
+ Kami menyarankan Anda menggunakan On-Demand untuk aplikasi yang tidak toleran terhadap kesalahan. Ini termasuk alat manajemen klaster seperti alat pemantauan dan operasional, penerapan yang memerlukan`StatefulSets`, dan aplikasi stateful, seperti database.
+ Untuk memaksimalkan ketersediaan aplikasi Anda saat menggunakan Instans Spot, sebaiknya konfigurasikan grup simpul terkelola Spot untuk menggunakan beberapa tipe instans. Kami merekomendasikan agar Anda menerapkan aturan berikut ketika menggunakan beberapa tipe instans:
  + Dalam grup node terkelola, jika Anda menggunakan [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), sebaiknya gunakan kumpulan tipe instans yang fleksibel dengan jumlah vCPU dan sumber daya memori yang sama. Ini untuk memastikan bahwa node dalam skala cluster Anda seperti yang diharapkan. Misalnya, jika Anda memerlukan empat v CPUs dan delapan memori GiB, gunakan,`c3.xlarge`,,`c4.xlarge`,`c5.xlarge`, `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, atau jenis instance serupa lainnya.
  + Untuk meningkatkan ketersediaan aplikasi, sebaiknya gunakan beberapa grup node terkelola Spot. Untuk ini, setiap grup harus menggunakan satu set tipe instance fleksibel yang memiliki vCPU dan sumber daya memori yang sama. Misalnya, jika Anda memerlukan memori 4 v CPUs dan 8 GiB, kami sarankan Anda membuat satu grup node terkelola dengan`c3.xlarge`,,,,`c4.xlarge`,`c5.xlarge`, `c5d.xlarge` `c5a.xlarge``c5n.xlarge`, atau jenis instance serupa lainnya, dan grup node terkelola kedua dengan`m3.xlarge`,,,`m4.xlarge`,, `m5.xlarge` `m5d.xlarge``m5a.xlarge`, `m5n.xlarge` atau jenis instance serupa lainnya.
  + Saat menerapkan grup node Anda dengan tipe kapasitas Spot yang menggunakan templat peluncuran khusus, gunakan API untuk meneruskan beberapa jenis instance. Jangan melewatkan satu jenis instance melalui template peluncuran. Untuk informasi selengkapnya tentang men-deploy grup simpul menggunakan templat peluncuran, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).

# Buat grup node terkelola untuk klaster Anda
<a name="create-managed-node-group"></a>

Topik ini menjelaskan bagaimana Anda dapat meluncurkan grup node terkelola Amazon EKS dari node yang mendaftar dengan kluster Amazon EKS Anda. Setelah simpul bergabung dengan klaster, Anda dapat men-deploy aplikasi Kubernetes pada mereka.

Jika ini adalah pertama kalinya Anda meluncurkan grup node terkelola Amazon EKS, kami sarankan Anda mengikuti salah satu panduan kami di[Memulai dengan Amazon EKS](getting-started.md). Panduan ini menyediakan panduan untuk membuat cluster Amazon EKS dengan node.

**penting**  
Simpul Amazon EKS adalah instans Amazon EC2 standar. Anda ditagih berdasarkan harga Amazon EC2 normal. Untuk informasi selengkapnya, lihat [Penetapan Harga Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Anda tidak dapat membuat node terkelola di AWS Wilayah yang mengaktifkan AWS Outposts atau AWS Wavelength. Anda dapat membuat node yang dikelola sendiri sebagai gantinya. Lihat informasi selengkapnya di [Buat node Amazon Linux yang dikelola sendiri](launch-workers.md), [Buat node Microsoft Windows yang dikelola sendiri](launch-windows-workers.md), dan [Buat node Bottlerocket yang dikelola sendiri](launch-node-bottlerocket.md). Anda juga dapat membuat grup node Amazon Linux yang dikelola sendiri di Outpost. Untuk informasi selengkapnya, lihat [Buat node Amazon Linux di AWS Outposts](eks-outposts-self-managed-nodes.md).
Jika Anda tidak [menentukan ID AMI](launch-templates.md#launch-template-custom-ami) untuk `bootstrap.sh` file yang disertakan dengan Linux atau Bottlerocket yang dioptimalkan Amazon EKS, grup node terkelola menerapkan angka maksimum pada nilai. `maxPods` Untuk contoh dengan kurang dari 30 vCPUs, jumlah maksimumnya adalah`110`. Untuk contoh dengan lebih besar dari 30 vCPUs, angka maksimum melompat ke. `250` Penegakan ini mengesampingkan `maxPods` konfigurasi lain, termasuk. `maxPodsExpression` Untuk informasi selengkapnya tentang cara `maxPods` ditentukan dan cara menyesuaikannya, lihat[Bagaimana MaxPods ditentukan](choosing-instance-type.md#max-pods-precedence).
+ Sebuah klaster Amazon EKS yang sudah ada. Untuk menyebarkan satu, lihat[Buat kluster Amazon EKS](create-cluster.md).
+ Peran IAM yang ada untuk digunakan node. Untuk membuatnya, lihat [IAM role simpul Amazon EKS](create-node-role.md). Jika peran ini tidak memiliki salah satu kebijakan untuk VPC CNI, peran terpisah yang mengikuti diperlukan untuk pod VPC CNI.
+ (Opsional, tetapi disarankan) Plugin Amazon VPC CNI untuk add-on Kubernetes dikonfigurasi dengan peran IAM sendiri yang memiliki kebijakan IAM yang diperlukan yang melekat padanya. Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).
+ Keakraban dengan pertimbangan yang tercantum dalam [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md). Bergantung pada jenis instans yang Anda pilih, mungkin ada prasyarat tambahan untuk cluster dan VPC Anda.
+ Untuk menambahkan grup node terkelola Windows, Anda harus terlebih dahulu mengaktifkan dukungan Windows untuk klaster Anda. Untuk informasi selengkapnya, lihat [Menerapkan node Windows pada kluster EKS](windows-support.md).

Anda dapat membuat grup node terkelola dengan salah satu dari berikut ini:
+  [`eksctl`](#eksctl_create_managed_nodegroup) 
+  [Konsol Manajemen AWS](#console_create_managed_nodegroup) 

## `eksctl`
<a name="eksctl_create_managed_nodegroup"></a>

 **Buat grup node terkelola dengan eksctl** 

Prosedur ini membutuhkan `eksctl` versi `0.215.0` atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

1. (Opsional) Jika kebijakan IAM terkelola **Amazoneks\$1CNI\$1Policy** dilampirkan ke peran IAM [node Amazon EKS Anda, kami sarankan untuk menetapkannya ke peran IAM yang Anda](create-node-role.md) kaitkan ke akun layanan Kubernetes sebagai gantinya. `aws-node` Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).

1. Buat grup node terkelola dengan atau tanpa menggunakan templat peluncuran kustom. Menentukan template peluncuran secara manual memungkinkan penyesuaian yang lebih besar dari grup node. Misalnya, ini dapat memungkinkan penerapan AMI khusus atau memberikan argumen ke `boostrap.sh` skrip di AMI Amazon EKS yang dioptimalkan. Untuk daftar lengkap setiap opsi yang tersedia dan default, masukkan perintah berikut.

   ```
   eksctl create nodegroup --help
   ```

   Dalam perintah berikut, ganti *my-cluster* dengan nama cluster Anda dan ganti *my-mng* dengan nama grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa.
**penting**  
Jika Anda tidak menggunakan templat peluncuran kustom saat pertama kali membuat grup node terkelola, jangan gunakan satu di lain waktu untuk grup node. Jika Anda tidak menentukan templat peluncuran kustom, sistem akan secara otomatis membuat templat peluncuran yang tidak kami sarankan agar Anda memodifikasi secara manual. Memodifikasi templat peluncuran yang dibuat secara otomatis ini secara manual dapat menyebabkan kesalahan.

 **Tanpa template peluncuran** 

 `eksctl`membuat template peluncuran Amazon EC2 default di akun Anda dan menyebarkan grup node menggunakan templat peluncuran yang dibuat berdasarkan opsi yang Anda tentukan. Sebelum menentukan nilai untuk`--node-type`, lihat[Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md).

Ganti *ami-family* dengan kata kunci yang diizinkan. Untuk informasi selengkapnya, lihat [Menyetel simpul AMI Family](https://eksctl.io/usage/custom-ami-support/#setting-the-node-ami-family) dalam `eksctl` dokumentasi. Ganti *my-key* dengan nama pasangan kunci atau kunci publik Amazon EC2 Anda. Kunci ini digunakan untuk SSH ke simpul Anda setelah diluncurkan.

**catatan**  
Untuk Windows, perintah ini tidak mengaktifkan SSH. Sebagai gantinya, ini mengaitkan key pair Amazon EC2 Anda dengan instans dan memungkinkan Anda untuk RDP ke instans.

Jika Anda belum memiliki key pair Amazon EC2, Anda dapat membuatnya di. Konsol Manajemen AWS Untuk informasi Linux, lihat [pasangan kunci Amazon EC2 dan instans Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon* EC2. Untuk informasi Windows, lihat [pasangan kunci Amazon EC2 dan instans Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon* EC2.

Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
+ Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
+ Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Jika Anda ingin memblokir akses Pod ke IMDS, tambahkan `--disable-pod-imds` opsi ke perintah berikut.

```
eksctl create nodegroup \
  --cluster my-cluster \
  --region region-code \
  --name my-mng \
  --node-ami-family ami-family \
  --node-type m5.large \
  --nodes 3 \
  --nodes-min 2 \
  --nodes-max 4 \
  --ssh-access \
  --ssh-public-key my-key
```

Instance Anda secara opsional dapat menetapkan jumlah alamat IP yang jauh lebih tinggi ke Pod, menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari instans, dan di-deploy ke klaster tanpa akses internet. Untuk informasi selengkapnya[Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md), lihat[Menerapkan Pod di subnet alternatif dengan jaringan khusus](cni-custom-network.md),, dan [Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md) untuk opsi tambahan untuk ditambahkan ke perintah sebelumnya.

Grup node terkelola menghitung dan menerapkan satu nilai untuk jumlah maksimum Pod yang dapat dijalankan pada setiap node grup node Anda, berdasarkan tipe instance. Jika Anda membuat grup node dengan tipe instans yang berbeda, nilai terkecil yang dihitung di semua tipe instance diterapkan sebagai jumlah maksimum Pod yang dapat dijalankan pada setiap tipe instance dalam grup node. Grup node terkelola menghitung nilai menggunakan skrip yang direferensikan di .

 **Dengan template peluncuran** 

Template peluncuran harus sudah ada dan harus memenuhi persyaratan yang ditentukan dalam [Dasar-dasar konfigurasi template Luncurkan](launch-templates.md#launch-template-basics). Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
+ Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
+ Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

Jika Anda ingin memblokir akses Pod ke IMDS, maka tentukan pengaturan yang diperlukan dalam template peluncuran.

1. Salin konten berikut ke perangkat Anda. Ganti nilai contoh dan kemudian jalankan perintah yang dimodifikasi untuk membuat `eks-nodegroup.yaml` file. Beberapa pengaturan yang Anda tentukan saat men-deploy tanpa templat peluncuran dipindahkan ke templat peluncuran. Jika Anda tidak menentukan`version`, versi default template akan digunakan.

   ```
   cat >eks-nodegroup.yaml <<EOF
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   metadata:
     name: my-cluster
     region: region-code
   managedNodeGroups:
   - name: my-mng
     launchTemplate:
       id: lt-id
       version: "1"
   EOF
   ```

   Untuk daftar selengkapnya tentang `eksctl` pengaturan file konfigurasi, lihat [Skema file Config](https://eksctl.io/usage/schema/) di dokumentasi `eksctl`. Instance Anda secara opsional dapat menetapkan jumlah alamat IP yang jauh lebih tinggi ke Pod, menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari instans, dan di-deploy ke klaster tanpa akses internet keluar. Untuk informasi selengkapnya[Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md), lihat[Menerapkan Pod di subnet alternatif dengan jaringan khusus](cni-custom-network.md),, dan [Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md) untuk opsi tambahan untuk ditambahkan ke file konfigurasi.

   Jika Anda tidak menentukan ID AMI dalam template peluncuran, grup node terkelola menghitung dan menerapkan satu nilai untuk jumlah maksimum Pod yang dapat dijalankan pada setiap node grup node Anda, berdasarkan jenis instance. Jika Anda membuat grup node dengan tipe instans yang berbeda, nilai terkecil yang dihitung di semua tipe instance diterapkan sebagai jumlah maksimum Pod yang dapat dijalankan pada setiap tipe instance dalam grup node. Grup node terkelola menghitung nilai menggunakan skrip yang direferensikan di .

   Jika Anda menetapkan ID AMI di template peluncuran, tentukan jumlah maksimum Pod yang dapat berjalan di setiap node grup node jika Anda menggunakan [jaringan khusus](cni-custom-network.md) atau ingin [menambah jumlah alamat IP yang ditetapkan ke instans Anda](cni-increase-ip-addresses.md). Untuk informasi selengkapnya, lihat .

1. Men-deploy grup simpul dengan perintah berikut.

   ```
   eksctl create nodegroup --config-file eks-nodegroup.yaml
   ```

## Konsol Manajemen AWS
<a name="console_create_managed_nodegroup"></a>

 **Buat grup node terkelola menggunakan Konsol Manajemen AWS ** 

1. Tunggu status klaster Anda ditampilkan sebagai `ACTIVE`. Anda tidak dapat membuat grup node terkelola untuk klaster yang belum ada`ACTIVE`.

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih nama cluster tempat Anda ingin membuat grup node terkelola.

1. Pilih tab **Compute**.

1. Pilih **Tambahkan grup simpul**.

1. Pada halaman **Konfigurasi grup simpul**, isi parameter yang sesuai, dan kemudian pilih **Selanjutnya**.
   +  **Nama** — Masukkan nama unik untuk grup simpul terkelola Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa.
   +  **Peran IAM Node** — Pilih peran instance node yang akan digunakan dengan grup node Anda. Untuk informasi selengkapnya, lihat [IAM role simpul Amazon EKS](create-node-role.md).
**penting**  
Anda tidak dapat menggunakan peran yang sama yang digunakan untuk membuat cluster apa pun.
Sebaiknya gunakan peran yang saat ini tidak digunakan oleh grup node yang dikelola sendiri. Jika tidak, Anda berencana untuk menggunakan grup node baru yang dikelola sendiri. Untuk informasi selengkapnya, lihat [Menghapus grup node terkelola dari klaster](delete-managed-node-group.md).
   +  **Gunakan template peluncuran** - (Opsional) Pilih jika Anda ingin menggunakan template peluncuran yang ada. Pilih **Nama Template Luncurkan**. Kemudian, pilih **versi Template Luncurkan**. Jika Anda tidak memilih versi, Amazon EKS menggunakan versi default template. Template peluncuran memungkinkan lebih banyak penyesuaian grup node Anda, seperti memungkinkan Anda untuk menerapkan AMI kustom, menetapkan jumlah alamat IP yang jauh lebih tinggi ke Pod, menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari instans, dan menerapkan node ke cluster tanpa akses internet keluar. Lihat informasi selengkapnya di [Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md), [Menerapkan Pod di subnet alternatif dengan jaringan khusus](cni-custom-network.md), dan [Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md).

     Template peluncuran harus memenuhi persyaratan di [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md). Jika Anda tidak menggunakan template peluncuran Anda sendiri, Amazon EKS API akan membuat template peluncuran Amazon EC2 default di akun Anda dan menyebarkan grup node menggunakan templat peluncuran default.

     Jika Anda menerapkan [peran IAM untuk akun layanan](iam-roles-for-service-accounts.md), menetapkan izin yang diperlukan secara langsung ke setiap Pod yang memerlukan akses ke AWS layanan, dan tidak ada Pod di klaster Anda yang memerlukan akses ke IMDS karena alasan lain, seperti mengambil AWS Region saat ini, maka Anda juga dapat menonaktifkan akses ke IMDS untuk Pod yang tidak menggunakan jaringan host dalam template peluncuran. Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
   +  **Label Kubernetes** — (Opsional) Anda dapat memilih untuk menerapkan label Kubernetes ke simpul dalam grup simpul terkelola Anda.
   +  **Kubernetes taints** — (Opsional) Anda dapat memilih untuk menerapkan taints Kubernetes ke node di grup node terkelola Anda. Pilihan yang tersedia di menu **Effect** adalah` NoSchedule `,` NoExecute `, dan` PreferNoSchedule `. Untuk informasi selengkapnya, lihat [Resep: Mencegah pod agar tidak dijadwalkan pada node tertentu](node-taints-managed-node-groups.md).
   +  **Tanda** – (Opsional) Anda dapat memilih untuk menandai grup simpul terkelola Amazon EKS Anda. Tag ini tidak menyebar ke sumber daya lain di grup node, seperti grup Auto Scaling atau instance. Untuk informasi selengkapnya, lihat [Mengatur sumber daya Amazon EKS dengan tag](eks-using-tags.md).

1. Pada halaman **Atur konfigurasi komputasi dan penskalaan**, isi parameter yang sesuai, dan kemudian pilih **Selanjutnya**.
   +  **Jenis AMI** - Pilih tipe AMI. Jika Anda menerapkan instance Arm, pastikan untuk meninjau pertimbangan di Amazon [EKS yang dioptimalkan Arm Amazon Linux AMIs](eks-optimized-ami.md#arm-ami) sebelum menerapkan.

     Jika Anda menentukan template peluncuran di halaman sebelumnya, dan menetapkan AMI di template peluncuran, maka Anda tidak dapat memilih nilai. Nilai dari templat ditampilkan. AMI yang ditentukan dalam template harus memenuhi persyaratan dalam [Menentukan AMI](launch-templates.md#launch-template-custom-ami).
   +  **Tipe kapasitas** – Pilih tipe kapasitas. Untuk informasi selengkapnya tentang memilih tipe kapasitas, lihat [Tipe kapasitas grup simpul terkelola](managed-node-groups.md#managed-node-group-capacity-types). Anda tidak dapat mencampur tipe kapasitas yang berbeda dalam grup node yang sama. Jika Anda ingin menggunakan kedua tipe kapasitas, buatlah grup simpul terpisah, masing-masing dengan tipe kapasitas dan instans mereka sendiri. Lihat [Reserve GPUs untuk grup node terkelola](https://docs.aws.amazon.com/eks/latest/userguide/capacity-blocks-mng.html) untuk informasi tentang penyediaan dan penskalaan node pekerja yang dipercepat GPU.
   +  **Jenis instans** - Secara default, satu atau lebih jenis instance ditentukan. Untuk menghapus tipe instans default, pilih `X` di sisi kanan tipe instans. Pilih tipe instans yang akan digunakan dalam grup simpul terkelola. Untuk informasi selengkapnya, lihat [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md).

     Konsol menampilkan satu set tipe instans yang umum digunakan. Jika Anda perlu membuat grup node terkelola dengan tipe instance yang tidak ditampilkan, gunakan`eksctl`, AWS CLI AWS CloudFormation, atau SDK untuk membuat grup node. Jika Anda menentukan template peluncuran pada halaman sebelumnya, maka Anda tidak dapat memilih nilai karena jenis instance harus ditentukan dalam template peluncuran. Nilai dari templat peluncuran ditampilkan. Jika Anda memilih **Spot** untuk **tipe Kapasitas**, maka kami merekomendasikan untuk menentukan beberapa tipe instans untuk meningkatkan ketersediaan.
   +  **Ukuran disk** — Masukkan ukuran disk (dalam GiB) yang akan digunakan untuk volume root node Anda.

     Jika Anda menentukan template peluncuran di halaman sebelumnya, maka Anda tidak dapat memilih nilai karena harus ditentukan dalam template peluncuran.
   +  **Ukuran yang diinginkan** – Tentukan jumlah simpul yang harus dipertahankan oleh grup simpul terkelola saat peluncuran.
**catatan**  
Amazon EKS tidak secara otomatis menskalakan grup node Anda masuk atau keluar. Namun, Anda dapat mengkonfigurasi Kubernetes Cluster Autoscaler untuk melakukan ini untuk Anda. Untuk informasi selengkapnya, lihat [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) di. AWS
   +  **Ukuran minimum** – Tentukan jumlah simpul minimum yang dapat diskalakan kedalam oleh grup simpul terkelola.
   +  **Ukuran maksimum** – Tentukan jumlah simpul maksimum yang dapat diskalakan keluar oleh grup simpul terkelola.
   +  **Konfigurasi pembaruan grup node** — (Opsional) Anda dapat memilih jumlah atau persentase node yang akan diperbarui secara paralel. Node ini tidak akan tersedia selama pembaruan. Untuk **Maksimum tidak tersedia**, pilih salah satu opsi berikut dan tentukan **Nilai**:
     +  **Angka** — Pilih dan tentukan jumlah node dalam grup node Anda yang dapat diperbarui secara paralel.
     +  **Persentase** — Pilih dan tentukan persentase node dalam grup node Anda yang dapat diperbarui secara paralel. Ini berguna jika Anda memiliki sejumlah besar node di grup node Anda.
   +  **Konfigurasi perbaikan otomatis node** — (Opsional) Jika Anda mengaktifkan kotak centang **Aktifkan perbaikan otomatis node**, Amazon EKS akan secara otomatis mengganti node saat masalah yang terdeteksi terjadi. Untuk informasi selengkapnya, lihat [Mendeteksi masalah kesehatan node dan mengaktifkan perbaikan node otomatis](node-health.md).

1. Di halaman **Tentukan jaringan**, isi parameter yang sesuai, dan pilih **Selanjutnya**.
   +  **Subnet** — Pilih subnet untuk meluncurkan simpul terkelola Anda.
**penting**  
Jika Anda menjalankan aplikasi stateful di beberapa Availability Zone yang didukung oleh volume Amazon EBS dan menggunakan Kubernetes [Cluster Autoscaler, Anda harus mengonfigurasi beberapa grup node, masing-masing dicakup](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) ke satu Availability Zone. Selain itu, Anda harus mengaktifkan fitur `--balance-similar-node-groups`.
**penting**  
Jika Anda memilih subnet publik, dan klaster Anda hanya memiliki titik akhir server API publik yang diaktifkan, maka subnet harus mengatur `MapPublicIPOnLaunch` ke `true` agar instans dapat bergabung dengan klaster. Jika subnet dibuat menggunakan `eksctl` atau [AWS CloudFormation templat penjual Amazon EKS](creating-a-vpc.md) pada atau setelah 26 Maret 2020, maka pengaturan ini sudah diatur ke. `true` Jika subnet dibuat dengan `eksctl` atau AWS CloudFormation templat sebelum 26 Maret 2020, maka Anda perlu mengubah pengaturan secara manual. Untuk informasi selengkapnya, lihat [Memodifikasi atribut IPv4 pengalamatan publik untuk subnet Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip).
Jika Anda menggunakan templat peluncuran dan menentukan beberapa antarmuka jaringan, Amazon EC2 tidak akan menetapkan alamat `IPv4` publik secara otomatis, meskipun `MapPublicIpOnLaunch` disetel ke. `true` Agar node dapat bergabung dengan cluster dalam skenario ini, Anda harus mengaktifkan titik akhir server API pribadi cluster, atau meluncurkan node di subnet pribadi dengan akses internet keluar yang disediakan melalui metode alternatif, seperti NAT Gateway. Untuk informasi selengkapnya, lihat [Pengalamatan IP instans Amazon EC2 di Panduan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html) Pengguna *Amazon* EC2.
   +  **Konfigurasikan akses SSH ke node** (Opsional). Mengaktifkan SSH mengizinkan Anda untuk tekoneksi ke instans dan mengumpulkan informasi diagnostik jika ada masalah. Kami sangat menyarankan untuk mengaktifkan akses jarak jauh saat Anda membuat grup node. Anda tidak dapat mengaktifkan akses jarak jauh setelah grup node dibuat.

     Jika Anda memilih untuk menggunakan template peluncuran, maka opsi ini tidak ditampilkan. Untuk mengaktifkan akses jarak jauh ke simpul Anda, tentukan pasangan kunci di templat peluncuran dan pastikan bahwa port yang tepat terbuka untuk simpul dalam grup keamanan yang Anda tentukan di templat peluncuran. Untuk informasi selengkapnya, lihat [Menggunakan grup keamanan kustom](launch-templates.md#launch-template-security-groups).
**catatan**  
Untuk Windows, perintah ini tidak mengaktifkan SSH. Sebagai gantinya, ini mengaitkan key pair Amazon EC2 Anda dengan instans dan memungkinkan Anda untuk RDP ke instans.
   + Untuk **pasangan kunci SSH** (Opsional), pilih kunci SSH Amazon EC2 untuk digunakan. Untuk informasi Linux, lihat [pasangan kunci Amazon EC2 dan instans Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon* EC2. Untuk informasi Windows, lihat [pasangan kunci Amazon EC2 dan instans Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon* EC2. Jika Anda memilih untuk menggunakan template peluncuran, maka Anda tidak dapat memilih salah satu. Ketika kunci SSH Amazon EC2 disediakan untuk grup node menggunakan Bottlerocket AMIs, wadah administratif juga diaktifkan. Untuk informasi selengkapnya, lihat [Kontainer admin](https://github.com/bottlerocket-os/bottlerocket#admin-container) di GitHub.
   + Untuk **Izinkan akses jarak jauh SSH dari**, jika Anda ingin membatasi akses ke instance tertentu, pilih grup keamanan yang terkait dengan instance tersebut. Jika Anda tidak memilih grup keamanan tertentu, maka akses SSH diizinkan dari mana saja di internet (`0.0.0.0/0`).

1. Pada halaman **Tinjauan dan buat**, tinjau konfigurasi grup simpul terkelola dan pilih **Buat**.

   Jika node gagal bergabung dengan cluster, maka lihat [Simpul gagal untuk bergabung dengan klaster](troubleshooting.md#worker-node-fail) di chapter Troubleshooting.

1. Perhatikan status simpul Anda dan tunggu sampai simpul mencapai Status `Ready`.

   ```
   kubectl get nodes --watch
   ```

1. (Hanya node GPU) Jika Anda memilih jenis instans GPU dan AMI akselerasi Amazon EKS yang dioptimalkan, maka Anda harus menerapkan [plugin perangkat NVIDIA untuk Kubernetes](https://github.com/NVIDIA/k8s-device-plugin) sebagai a di cluster Anda. DaemonSet Ganti *vX.X.X* dengan s-device-plugin versi [NVIDIA/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) yang Anda inginkan sebelum menjalankan perintah berikut.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

## Instal add-on Kubernetes
<a name="_install_kubernetes_add_ons"></a>

Sekarang setelah Anda memiliki kluster Amazon EKS yang berfungsi dengan node, Anda siap untuk mulai menginstal add-on Kubernetes dan menerapkan aplikasi ke klaster Anda. Topik dokumentasi berikut membantu Anda untuk memperluas fungsionalitas klaster Anda.
+ [Prinsipal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) yang membuat klaster adalah satu-satunya prinsipal yang dapat melakukan panggilan ke server API Kubernetes dengan atau. `kubectl` Konsol Manajemen AWS Jika Anda ingin prinsipal IAM lainnya memiliki akses ke cluster Anda, maka Anda perlu menambahkannya. Untuk informasi selengkapnya, lihat [Berikan akses kepada pengguna dan peran IAM ke Kubernetes APIs](grant-k8s-access.md) dan [Izin yang diperlukan](view-kubernetes-resources.md#view-kubernetes-resources-permissions).
+ Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
  + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
  + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

  Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).
+ Konfigurasikan Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) untuk secara otomatis menyesuaikan jumlah node dalam grup node Anda.
+ Menerapkan [aplikasi sampel](sample-deployment.md) ke cluster Anda.
+  [Atur dan pantau sumber daya klaster](eks-managing.md) dengan alat penting untuk mengelola klaster Anda.

# Memperbarui grup node terkelola untuk klaster Anda
<a name="update-managed-node-group"></a>

Saat Anda memulai pembaruan grup node terkelola, Amazon EKS secara otomatis memperbarui node untuk Anda, menyelesaikan langkah-langkah yang tercantum dalam [Memahami setiap fase pembaruan node](managed-node-update-behavior.md). Jika Anda menggunakan AMI Amazon EKS yang dioptimalkan, Amazon EKS secara otomatis menerapkan patch keamanan terbaru dan pembaruan sistem operasi ke node Anda sebagai bagian dari versi rilis AMI terbaru.

Ada beberapa skenario yang berguna untuk memperbarui versi atau konfigurasi grup node terkelola Amazon EKS Anda:
+ Anda telah memperbarui versi Kubernetes untuk klaster Amazon EKS dan ingin memperbarui simpul Anda untuk menggunakan versi Kubernetes yang sama.
+ Versi perilisan AMI yang baru tersedia untuk grup simpul terkelola Anda. Untuk informasi selengkapnya tentang versi AMI, lihat bagian ini:
  +  [Ambil informasi versi Amazon Linux AMI](eks-linux-ami-versions.md) 
  +  [Buat node dengan Bottlerocket yang dioptimalkan AMIs](eks-optimized-ami-bottlerocket.md) 
  +  [Ambil informasi versi Windows AMI](eks-ami-versions-windows.md) 
+ Anda ingin menyesuaikan jumlah instans minimum, maksimum, atau diinginkan di grup simpul terkelola Anda.
+ Anda ingin menambah atau menghapus label Kubernetes dari instans di grup simpul terkelola Anda.
+ Anda ingin menambahkan atau menghapus AWS tag dari grup node terkelola Anda.
+ Anda harus men-deploy versi templat peluncuran yang baru dengan perubahan konfigurasi, seperti AMI kustom yang diperbarui.
+ Anda telah menerapkan add-on Amazon VPC CNI versi `1.9.0` atau yang lebih baru, mengaktifkan add-on untuk delegasi awalan, dan ingin instance Sistem Nitro AWS baru dalam grup node mendukung peningkatan jumlah Pod secara signifikan. Untuk informasi selengkapnya, lihat [Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md).
+ Anda telah mengaktifkan delegasi awalan IP untuk node Windows dan menginginkan instans Sistem AWS Nitro baru dalam grup node untuk mendukung peningkatan jumlah Pod secara signifikan. Untuk informasi selengkapnya, lihat [Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md).

Jika ada versi rilis AMI yang lebih baru untuk versi Kubernetes grup node terkelola Anda, Anda dapat memperbarui versi grup node Anda untuk menggunakan versi AMI yang lebih baru. Demikian pula, jika klaster Anda menjalankan versi Kubernetes yang lebih baru dari grup node Anda, Anda dapat memperbarui grup node untuk menggunakan versi rilis AMI terbaru agar sesuai dengan versi Kubernetes klaster Anda.

Ketika sebuah node dalam grup node terkelola dihentikan karena operasi penskalaan atau pembaruan, Pod dalam node tersebut akan terkuras terlebih dahulu. Untuk informasi selengkapnya, lihat [Memahami setiap fase pembaruan node](managed-node-update-behavior.md).

## Memperbarui versi grup simpul
<a name="mng-update"></a>

Anda dapat memperbarui versi grup node dengan salah satu dari berikut ini:
+  [`eksctl`](#eksctl_update_managed_nodegroup) 
+  [Konsol Manajemen AWS](#console_update_managed_nodegroup) 

Versi yang Anda perbarui tidak boleh lebih besar dari versi pesawat kontrol.

## `eksctl`
<a name="eksctl_update_managed_nodegroup"></a>

 **Memperbarui grup node terkelola menggunakan `eksctl`** 

Perbarui grup node terkelola ke rilis AMI terbaru dari versi Kubernetes yang sama yang saat ini digunakan di node dengan perintah berikut. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code
```

**catatan**  
Jika Anda memutakhirkan grup node yang digunakan dengan template peluncuran ke versi template peluncuran baru, tambahkan `--launch-template-version version-number ` ke perintah sebelumnya. Template peluncuran harus memenuhi persyaratan yang dijelaskan dalam [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md). Jika template peluncuran menyertakan AMI kustom, AMI harus memenuhi persyaratan dalam [Menentukan AMI](launch-templates.md#launch-template-custom-ami). Saat Anda memutakhirkan grup node ke versi template peluncuran yang lebih baru, setiap node didaur ulang agar sesuai dengan konfigurasi baru dari versi template peluncuran yang ditentukan.

Anda tidak dapat langsung memutakhirkan grup node yang digunakan tanpa template peluncuran ke versi template peluncuran baru. Sebaliknya, Anda harus men-deploy grup simpul baru dengan menggunakan templat peluncuran untuk memperbarui grup simpul ke versi templat peluncuran baru.

Anda dapat memutakhirkan grup node ke versi yang sama dengan versi Kubernetes pesawat kontrol. Misalnya, jika Anda memiliki klaster yang menjalankan Kubernetes`1.35`, Anda dapat meng-upgrade node yang saat ini menjalankan Kubernetes `1.34` ke versi dengan perintah berikut. `1.35`

```
eksctl upgrade nodegroup \
  --name=node-group-name \
  --cluster=my-cluster \
  --region=region-code \
  --kubernetes-version=1.35
```

## Konsol Manajemen AWS
<a name="console_update_managed_nodegroup"></a>

 **Memperbarui grup node terkelola menggunakan Konsol Manajemen AWS ** 

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih klaster yang berisi grup simpul yang akan diperbarui.

1. Jika setidaknya tersedia satu grup simpul yang memiliki pembaruan, maka akan ada kotak yang muncul di bagian atas halaman yang memberitahukan Anda tentang pembaruan yang tersedia. Jika Anda memilih tab **Compute**, Anda akan melihat **Perbarui sekarang** di kolom **versi rilis AMI** di tabel **grup Node** untuk grup node yang memiliki pembaruan yang tersedia. Untuk memperbarui grup node, pilih **Perbarui sekarang**.

   Anda tidak akan melihat pemberitahuan untuk grup node yang digunakan dengan AMI kustom. Jika simpul di-deploy dengan AMI kustom, selesaikan langkah-langkah berikut untuk men-deploy AMI kustom yang baru diperbarui.

   1. Buat versi baru AMI Anda.

   1. Buat versi templat peluncuran baru dengan ID AMI baru.

   1. Mutakhirkan simpul ke versi templat peluncuran baru.

1. Pada kotak dialog **Perbarui versi grup node**, aktifkan atau nonaktifkan opsi berikut:
   +  **Perbarui versi grup node** - Opsi ini tidak tersedia jika Anda menerapkan AMI khusus atau AMI Amazon EKS yang dioptimalkan saat ini ada di versi terbaru untuk klaster Anda.
   +  **Ubah versi template peluncuran** - Opsi ini tidak tersedia jika grup simpul dikerahkan tanpa templat peluncuran khusus. Anda hanya dapat memperbarui versi templat peluncuran untuk grup simpul yang telah di-deploy dengan templat peluncuran kustom. Pilih **versi Template Luncurkan** yang ingin Anda perbarui grup node. Jika grup simpul dikonfigurasi dengan AMI kustom, maka versi yang Anda pilih juga harus menentukan AMI. Saat Anda memutakhirkan ke versi template peluncuran yang lebih baru, setiap node didaur ulang agar sesuai dengan konfigurasi baru dari versi template peluncuran yang ditentukan.

1. Untuk **strategi Update**, pilih salah satu opsi berikut:
   +  **Pembaruan bergulir** — Opsi ini menghormati anggaran gangguan Pod untuk klaster Anda. Pembaruan gagal jika ada masalah anggaran gangguan Pod yang menyebabkan Amazon EKS tidak dapat menguras Pod yang berjalan di grup node ini dengan baik.
   +  **Update paksa** — Opsi ini tidak menghormati anggaran gangguan Pod. Pembaruan terjadi terlepas dari masalah anggaran gangguan Pod dengan memaksa restart node terjadi.

1. Pilih **Perbarui**.

## Edit konfigurasi grup simpul
<a name="mng-edit"></a>

Anda dapat mengubah beberapa konfigurasi dari grup simpul terkelola.

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih klaster yang berisi grup simpul untuk mengedit.

1. Pilih tab **Compute**.

1. Pilih grup node yang akan diedit, lalu pilih **Edit**.

1. (Opsional) Pada halaman **grup Edit node**, lakukan hal berikut:

   1. Edit **konfigurasi penskalaan grup Node**.
      +  **Ukuran yang diinginkan** – Tentukan jumlah simpul saat ini yang harus dipertahankan oleh grup simpul terkelola.
      +  **Ukuran minimum** – Tentukan jumlah simpul minimum yang dapat diskalakan kedalam oleh grup simpul terkelola.
      +  **Ukuran maksimum** – Tentukan jumlah maksimum simpul yang dapat diskalakan keluar oleh grup simpul terkelola. Untuk jumlah maksimal simpul yang didukung dalam grup simpul, lihat [Lihat dan kelola kuota layanan Amazon EKS dan Fargate](service-quotas.md).

   1. (Opsional) Tambahkan atau hapus **label Kubernetes** ke node di grup node Anda. Label yang ditampilkan di sini hanya label yang telah Anda terapkan dengan Amazon EKS. Label lain mungkin ada di node Anda yang tidak ditampilkan di sini.

   1. (Opsional) Tambahkan atau hapus **taints Kubernetes** ke node di grup node Anda. Kecacatan yang ditambahkan dapat memiliki efek, baik ` NoSchedule `, ` NoExecute `, atau ` PreferNoSchedule `. Untuk informasi selengkapnya, lihat [Resep: Mencegah pod agar tidak dijadwalkan pada node tertentu](node-taints-managed-node-groups.md).

   1. (Opsional) Tambahkan atau hapus **Tag** dari sumber daya grup node Anda. Tanda ini hanya diterapkan pada grup simpul Amazon EKS. Mereka tidak menyebar ke sumber daya lain, seperti subnet atau instans Amazon EC2 di grup node.

   1. (Opsional) Edit **konfigurasi pembaruan Grup Node**. Pilih **Nomor** atau **Persentase**.
      +  **Angka** — Pilih dan tentukan jumlah node dalam grup node Anda yang dapat diperbarui secara paralel. Node ini tidak akan tersedia selama pembaruan.
      +  **Persentase** — Pilih dan tentukan persentase node dalam grup node Anda yang dapat diperbarui secara paralel. Node ini tidak akan tersedia selama pembaruan. Ini berguna jika Anda memiliki banyak node di grup node Anda.

   1. Setelah selesai mengedit, pilih **Simpan perubahan**.

**penting**  
Saat memperbarui konfigurasi grup node, memodifikasi [https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_NodegroupScalingConfig.html)tidak menghormati anggaran gangguan Pod (). PDBs Tidak seperti proses [grup node pembaruan](managed-node-update-behavior.md) (yang menguras node dan respek PDBs selama fase upgrade), memperbarui konfigurasi penskalaan menyebabkan node segera dihentikan melalui panggilan scale-down Auto Scaling Group (ASG). Ini terjadi tanpa mempertimbangkan PDBs, terlepas dari ukuran target yang Anda turunkan. Itu berarti ketika Anda mengurangi grup node terkelola Amazon EKS, Pod akan diusir segera setelah node dihentikan, tanpa menghormati apa pun. `desiredSize` PDBs

# Memahami setiap fase pembaruan node
<a name="managed-node-update-behavior"></a>

Strategi upgrade node pekerja terkelola Amazon EKS memiliki empat fase berbeda yang dijelaskan di bagian berikut.

## Fase pengaturan
<a name="managed-node-update-set-up"></a>

Fase pengaturan memiliki langkah-langkah berikut:

1. Ini membuat versi template EC2 peluncuran Amazon baru untuk Grup Auto Scaling yang terkait dengan grup node Anda. Versi template peluncuran baru menggunakan AMI target atau versi template peluncuran khusus untuk pembaruan.

1. Ini memperbarui Grup Auto Scaling untuk menggunakan versi template peluncuran terbaru.

1. Ini menentukan jumlah maksimum node untuk meng-upgrade secara paralel menggunakan `updateConfig` properti untuk kelompok node. Maksimum yang tidak tersedia memiliki kuota 100 node. Nilai defaultnya adalah satu node. Untuk informasi selengkapnya, lihat properti [updateConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateNodegroupConfig.html#API_UpdateNodegroupConfig_RequestSyntax) di Referensi API *Amazon* EKS.

## Tingkatkan fase
<a name="managed-node-update-scale-up"></a>

Saat memutakhirkan node dalam grup node terkelola, node yang ditingkatkan diluncurkan di Availability Zone yang sama dengan yang sedang ditingkatkan. Untuk menjamin penempatan ini, kami menggunakan Availability EC2 Zone Rebalancing Amazon. Untuk informasi selengkapnya, lihat [Penyeimbangan Kembali Zona Ketersediaan](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-benefits.html#AutoScalingBehavior.InstanceUsage) di Panduan Pengguna *Auto EC2 Scaling Amazon*. Untuk memenuhi persyaratan ini, ada kemungkinan bahwa kami akan meluncurkan hingga dua instance per Availability Zone di grup node terkelola Anda.

Fase peningkatan skala memiliki langkah-langkah berikut:

1. Ini meningkatkan ukuran maksimum Grup Auto Scaling dan ukuran yang diinginkan dengan ukuran yang lebih besar dari keduanya:
   + Hingga dua kali jumlah Availability Zone yang digunakan oleh Grup Auto Scaling.
   + Upgrade maksimum yang tidak tersedia.

     Misalnya, jika grup node Anda memiliki lima Availability Zones dan `maxUnavailable` sebagai satu, proses upgrade dapat meluncurkan maksimal 10 node. Namun ketika `maxUnavailable` 20 (atau apa pun yang lebih tinggi dari 10), proses akan meluncurkan 20 node baru.

1. Setelah menskalakan Grup Auto Scaling, ia memeriksa apakah node yang menggunakan konfigurasi terbaru ada di grup node. Langkah ini hanya berhasil jika memenuhi kriteria ini:
   + Setidaknya satu node baru diluncurkan di setiap Availability Zone di mana node ada.
   + Setiap node baru harus dalam `Ready` keadaan.
   + Node baru harus memiliki label yang diterapkan Amazon EKS.

     Ini adalah label yang diterapkan Amazon EKS pada node pekerja dalam grup simpul biasa:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 

     Ini adalah label yang diterapkan Amazon EKS pada node pekerja dalam template peluncuran khusus atau grup node AMI:
     +  `eks.amazonaws.com/nodegroup-image=$amiName` 
     +  `eks.amazonaws.com/nodegroup=$nodeGroupName` 
     +  `eks.amazonaws.com/sourceLaunchTemplateId=$launchTemplateId` 
     +  `eks.amazonaws.com/sourceLaunchTemplateVersion=$launchTemplateVersion` 

1. Ini menandai node sebagai tidak dapat dijadwalkan untuk menghindari penjadwalan Pod baru. Ini juga memberi label node `node.kubernetes.io/exclude-from-external-load-balancers=true` untuk menghapus node lama dari penyeimbang beban sebelum mengakhiri node.

Berikut ini adalah alasan yang diketahui yang menyebabkan `NodeCreationFailure` kesalahan dalam fase ini:

 **Kapasitas tidak mencukupi di Availability Zone**   
Ada kemungkinan bahwa Availability Zone mungkin tidak memiliki kapasitas tipe instans yang diminta. Disarankan untuk mengonfigurasi beberapa jenis instance saat membuat grup node terkelola.

 **EC2 batas instans di akun Anda**   
Anda mungkin perlu menambah jumlah EC2 instans Amazon yang dapat dijalankan akun Anda secara bersamaan menggunakan Service Quotas. Untuk informasi selengkapnya, lihat [EC2 Service Quotas](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) di *Panduan Pengguna Amazon Elastic Compute Cloud untuk* Instans Linux.

 **Data pengguna kustom**   
Data pengguna khusus terkadang dapat merusak proses bootstrap. Skenario ini dapat menyebabkan `kubelet` tidak dimulai pada node atau node tidak mendapatkan label Amazon EKS yang diharapkan pada mereka. Untuk informasi selengkapnya, lihat [Menentukan AMI](launch-templates.md#launch-template-custom-ami).

 **Setiap perubahan yang membuat node tidak sehat atau tidak siap**   
Tekanan disk node, tekanan memori, dan kondisi serupa dapat menyebabkan node tidak akan `Ready` berstatus.

 **Setiap node paling bootstrap dalam waktu 15 menit**   
Jika ada node yang membutuhkan waktu lebih dari 15 menit untuk bootstrap dan bergabung dengan cluster, itu akan menyebabkan pemutakhiran menjadi time out. Ini adalah total runtime untuk bootstrap node baru yang diukur dari saat node baru diperlukan hingga saat bergabung dengan cluster. Saat memutakhirkan grup node terkelola, penghitung waktu dimulai segera setelah ukuran Grup Auto Scaling meningkat.

## Fase upgrade
<a name="managed-node-update-upgrade"></a>

Fase peningkatan berperilaku dalam dua cara berbeda, tergantung pada *strategi pembaruan*. Ada dua strategi pembaruan: **default** dan **minimal**.

Kami merekomendasikan strategi default di sebagian besar skenario. Ini menciptakan node baru sebelum mengakhiri yang lama, sehingga kapasitas yang tersedia dipertahankan selama fase upgrade. Strategi minimal berguna dalam skenario di mana Anda dibatasi untuk sumber daya atau biaya, misalnya dengan akselerator perangkat keras seperti. GPUs Ini mengakhiri node lama sebelum membuat yang baru, sehingga kapasitas total tidak pernah meningkat melebihi kuantitas yang Anda konfigurasi.

Strategi pembaruan *default* memiliki langkah-langkah berikut:

1. Ini meningkatkan jumlah node (jumlah yang diinginkan) di Auto Scaling Group, menyebabkan grup node untuk membuat node tambahan.

1. Ini secara acak memilih node yang perlu ditingkatkan, hingga maksimum yang tidak tersedia yang dikonfigurasi untuk grup node.

1. Ini menguras Pod dari node. Jika Pod tidak meninggalkan node dalam waktu 15 menit dan tidak ada force flag, fase upgrade gagal dengan `PodEvictionFailure` error. Untuk skenario ini, Anda dapat menerapkan flag force dengan `update-nodegroup-version` permintaan untuk menghapus Pod.

1. Ini menutup node setelah setiap Pod diusir dan menunggu selama 60 detik. Hal ini dilakukan agar pengontrol layanan tidak mengirim permintaan baru ke node ini dan menghapus node ini dari daftar node aktifnya.

1. Ini mengirimkan permintaan penghentian ke Grup Auto Scaling untuk node yang diapit.

1. Ini mengulangi langkah-langkah upgrade sebelumnya sampai tidak ada node dalam grup node yang digunakan dengan versi sebelumnya dari template peluncuran.

Strategi pembaruan *minimal* memiliki langkah-langkah berikut:

1. Ini mengikat semua node dari grup node di awal, sehingga pengontrol layanan tidak mengirim permintaan baru ke node ini.

1. Ini secara acak memilih node yang perlu ditingkatkan, hingga maksimum yang tidak tersedia yang dikonfigurasi untuk grup node.

1. Ini menguras Pod dari node yang dipilih. Jika Pod tidak meninggalkan node dalam waktu 15 menit dan tidak ada force flag, fase upgrade gagal dengan `PodEvictionFailure` error. Untuk skenario ini, Anda dapat menerapkan flag force dengan `update-nodegroup-version` permintaan untuk menghapus Pod.

1. Setelah setiap Pod diusir dan menunggu selama 60 detik, ia mengirimkan permintaan penghentian ke Grup Auto Scaling untuk node yang dipilih. Grup Auto Scaling membuat node baru (sama dengan jumlah node yang dipilih) untuk menggantikan kapasitas yang hilang.

1. Ini mengulangi langkah-langkah upgrade sebelumnya sampai tidak ada node dalam grup node yang digunakan dengan versi sebelumnya dari template peluncuran.

### `PodEvictionFailure`kesalahan selama fase upgrade
<a name="_podevictionfailure_errors_during_the_upgrade_phase"></a>

Berikut ini adalah alasan yang diketahui yang menyebabkan `PodEvictionFailure` kesalahan dalam fase ini:

 **PDB Agresif**   
PDB agresif didefinisikan pada Pod atau ada beberapa yang PDBs menunjuk ke Pod yang sama.

 **Penerapan yang menoleransi semua noda**   
Setelah setiap Pod diusir, node diharapkan kosong karena node [tercemar](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) pada langkah-langkah sebelumnya. Namun, jika penerapan mentolerir setiap taint, maka node lebih cenderung tidak kosong, yang menyebabkan kegagalan penggusuran Pod.

## Skala turun fase
<a name="managed-node-update-scale-down"></a>

Fase penurunan skala mengurangi ukuran maksimum grup Auto Scaling dan ukuran yang diinginkan satu per satu untuk kembali ke nilai sebelum pembaruan dimulai.

Jika alur kerja Upgrade menentukan bahwa Cluster Autoscaler meningkatkan grup node selama fase penurunan skala alur kerja, ia segera keluar tanpa membawa grup node kembali ke ukuran aslinya.

# Sesuaikan node terkelola dengan templat peluncuran
<a name="launch-templates"></a>

Untuk kustomisasi tingkat tertinggi, Anda dapat menerapkan node terkelola dengan templat peluncuran Anda sendiri berdasarkan langkah-langkah di halaman ini. Menggunakan template peluncuran memungkinkan kemampuan seperti menyediakan argumen bootstrap selama penerapan node (misalnya, argumen [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ekstra), menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari alamat IP yang ditetapkan ke node, menerapkan AMI kustom Anda sendiri ke node, atau menerapkan CNI kustom Anda sendiri ke node.

Saat Anda memberikan template peluncuran Anda sendiri saat pertama kali membuat grup node terkelola, Anda juga akan memiliki fleksibilitas yang lebih besar nanti. Selama Anda menerapkan grup node terkelola dengan templat peluncuran Anda sendiri, Anda dapat memperbaruinya secara berulang dengan versi berbeda dari template peluncuran yang sama. Saat Anda memperbarui grup node ke versi template peluncuran yang berbeda, semua node dalam grup didaur ulang agar sesuai dengan konfigurasi baru dari versi template peluncuran yang ditentukan.

Grup node terkelola selalu digunakan dengan template peluncuran untuk digunakan dengan grup Amazon EC2 Auto Scaling. Jika Anda tidak menyediakan template peluncuran, Amazon EKS API membuatnya secara otomatis dengan nilai default di akun Anda. Namun, kami tidak menyarankan Anda memodifikasi templat peluncuran yang dibuat secara otomatis. Selain itu, grup node yang ada yang tidak menggunakan templat peluncuran kustom tidak dapat diperbarui secara langsung. Sebagai gantinya, Anda harus membuat grup node baru dengan template peluncuran khusus untuk melakukannya.

## Luncurkan dasar-dasar konfigurasi templat
<a name="launch-template-basics"></a>

Anda dapat membuat template Konsol Manajemen AWS peluncuran Amazon EC2 Auto Scaling dengan AWS , CLI, atau SDK. AWS Untuk informasi selengkapnya, lihat [Membuat Template Peluncuran untuk grup Auto Scaling di Panduan](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) Pengguna *Amazon EC2* Auto Scaling. Beberapa pengaturan dalam templat peluncuran mirip dengan pengaturan yang digunakan untuk konfigurasi simpul terkelola. Saat menerapkan atau memperbarui grup node dengan template peluncuran, beberapa pengaturan harus ditentukan baik dalam konfigurasi grup node atau template peluncuran. Jangan tentukan pengaturan di kedua tempat. Jika pengaturan ada di tempat yang seharusnya tidak, maka operasi seperti membuat atau memperbarui grup node gagal.

Tabel berikut mencantumkan pengaturan yang dilarang dalam template peluncuran. Ini juga mencantumkan pengaturan serupa, jika ada yang tersedia, yang diperlukan dalam konfigurasi grup node terkelola. Pengaturan yang tercantum adalah pengaturan yang muncul di konsol. Mereka mungkin memiliki nama yang mirip tetapi berbeda di AWS CLI dan SDK.


| Peluncuran templat — Dilarang | Konfigurasi grup simpul Amazon EKS | 
| --- | --- | 
|   **Subnet** dalam **Antarmuka Jaringan** (**Tambahkan antarmuka jaringan**)  |   **Subnet** di bawah **konfigurasi jaringan grup Node** pada halaman **Tentukan jaringan**  | 
|   **Profil instans IAM** dalam **Detail lanjutan**   |   **Peran IAM** **node di bawah konfigurasi grup Node** pada halaman **grup Configure Node**  | 
|   **Perilaku Shutdown** dan **Perilaku Berhenti - Hibernasi** dalam **Detail lanjutan**. Pertahankan default **Jangan sertakan dalam pengaturan template peluncuran** di template peluncuran untuk kedua pengaturan.  |  Tidak setara. Amazon EKS harus mengontrol siklus hidup instans, bukan grup Auto Scaling.  | 

Tabel berikut mencantumkan pengaturan yang dilarang dalam konfigurasi grup node terkelola. Ini juga mencantumkan pengaturan serupa, jika ada yang tersedia, yang diperlukan dalam template peluncuran. Pengaturan yang tercantum adalah pengaturan yang muncul di konsol. Mereka mungkin memiliki nama yang mirip di AWS CLI dan SDK.


| Konfigurasi grup simpul Amazon EKS - Dilarang | Luncurkan templat | 
| --- | --- | 
|  (Hanya jika Anda menetapkan AMI kustom dalam template peluncuran) **Jenis AMI** di bawah konfigurasi **komputasi grup Node pada halaman konfigurasi** **Set komputasi dan penskalaan** — Tampilan konsol **Ditentukan dalam templat peluncuran dan ID AMI yang ditentukan**. Jika **Gambar Aplikasi dan OS (Amazon Machine Image)** tidak ditentukan dalam template peluncuran, Anda dapat memilih AMI dalam konfigurasi grup node.  |   Gambar **Aplikasi dan OS (Gambar Mesin Amazon)** di bawah **Meluncurkan konten template** - Anda harus menentukan ID jika Anda memiliki salah satu dari persyaratan berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/launch-templates.html)  | 
|   **Ukuran disk** di bawah konfigurasi **komputasi grup Node pada Mengatur halaman konfigurasi** **komputasi dan penskalaan** — Tampilan konsol **Ditentukan dalam templat peluncuran**.  |   **Ukuran** dalam **Penyimpanan (Volume)** (**Tambahkan volume baru**). Anda harus menentukan ini dalam templat peluncuran.  | 
|   **SSH key pair** di bawah **konfigurasi grup Node** pada halaman **Specify Networking** - Konsol menampilkan kunci yang ditentukan dalam template peluncuran atau menampilkan **Tidak ditentukan dalam template peluncuran**.  |   **Nama pasangan kunci** dalam **Pasangan kunci (login)**.  | 
|  Anda tidak dapat menentukan grup keamanan sumber yang diizinkan akses jarak jauh saat menggunakan templat peluncuran.  |   **Grup keamanan** dalam **Pengaturan jaringan** untuk instans atau **Grup keamanan** di bawah **Antarmuka jaringan** (**Tambahkan antarmuka jaringan**), tapi tidak keduanya. Untuk informasi selengkapnya, lihat [Menggunakan grup keamanan kustom](#launch-template-security-groups).  | 

**catatan**  
Jika Anda menerapkan grup node menggunakan template peluncuran, tentukan nol atau satu **jenis Instance** di bawah **Meluncurkan konten template** dalam template peluncuran. Atau, Anda dapat menentukan 0—20 jenis instans untuk **tipe Instance** di halaman **Setel konfigurasi komputasi dan penskalaan** di konsol. Atau, Anda dapat melakukannya menggunakan alat lain yang menggunakan Amazon EKS API. Jika Anda menentukan jenis instance dalam template peluncuran, dan menggunakan template peluncuran tersebut untuk menyebarkan grup node, Anda tidak dapat menentukan jenis instance apa pun di konsol atau menggunakan alat lain yang menggunakan Amazon EKS API. Jika Anda tidak menentukan jenis instance dalam template peluncuran, di konsol, atau menggunakan alat lain yang menggunakan Amazon EKS API, jenis `t3.medium` instance akan digunakan. Jika grup simpul Anda menggunakan tipe kapasitas Spot, sebaiknya tentukan beberapa tipe instans menggunakan konsol. Untuk informasi selengkapnya, lihat [Tipe kapasitas grup simpul terkelola](managed-node-groups.md#managed-node-group-capacity-types).
Jika kontainer apa pun yang Anda terapkan ke grup node menggunakan Layanan Metadata Instans Versi 2, pastikan untuk menetapkan **batas hop respons Metadata** ke `2` dalam template peluncuran Anda. Untuk informasi selengkapnya, lihat [Metadata instans dan data pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) di Panduan Pengguna *Amazon EC2*.
Template peluncuran tidak mendukung `InstanceRequirements` fitur yang memungkinkan pemilihan jenis instans yang fleksibel.

## Penandaan instans Amazon EC2
<a name="launch-template-tagging"></a>

Anda dapat menggunakan parameter `TagSpecification` dari templat peluncuran untuk menentukan tanda mana yang akan diterapkan ke instans Amazon EC2 di grup simpul Anda. Entitas IAM memanggil `CreateNodegroup` atau `UpdateNodegroupVersion` APIs harus memiliki izin untuk `ec2:RunInstances` dan`ec2:CreateTags`, dan tag harus ditambahkan ke template peluncuran.

## Menggunakan grup keamanan kustom
<a name="launch-template-security-groups"></a>

Anda dapat menggunakan templat peluncuran untuk menentukan Amazon EC2 kustom [grup keamanan](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-security-groups.html) untuk diterapkan ke instans dalam grup simpul Anda. Ini dapat berupa parameter grup keamanan tingkat instans atau sebagai bagian dari parameter konfigurasi antarmuka jaringan. Namun, Anda tidak dapat membuat template peluncuran yang menentukan tingkat instans dan grup keamanan antarmuka jaringan. Pertimbangkan kondisi yang berlaku berikut untuk menggunakan grup keamanan kustom dengan grup simpul terkelola:
+ Saat menggunakan Konsol Manajemen AWS, Amazon EKS hanya mengizinkan template peluncuran dengan spesifikasi antarmuka jaringan tunggal.
+ Secara default, Amazon EKS menerapkan [grup keamanan klaster](sec-group-reqs.md) untuk instans dalam grup simpul Anda guna memfasilitasi komunikasi antara simpul dan pesawat kontrol. Jika Anda menentukan grup keamanan kustom dalam template peluncuran menggunakan salah satu opsi yang disebutkan sebelumnya, Amazon EKS tidak menambahkan grup keamanan klaster. Jadi, Anda harus memastikan bahwa aturan masuk dan keluar dari grup keamanan Anda memungkinkan komunikasi dengan titik akhir klaster Anda. Jika aturan grup keamanan Anda salah, node pekerja tidak dapat bergabung dengan cluster. Untuk informasi selengkapnya tentang aturan grup keamanan, lihat[Lihat persyaratan grup keamanan Amazon EKS untuk cluster](sec-group-reqs.md).
+ Jika Anda memerlukan akses SSH ke instance di grup node Anda, sertakan grup keamanan yang memungkinkan akses tersebut.

## Data pengguna Amazon EC2
<a name="launch-template-user-data"></a>

Template peluncuran mencakup bagian untuk data pengguna kustom. Anda dapat menentukan pengaturan konfigurasi untuk grup node Anda di bagian ini tanpa membuat kustom individual secara manual AMIs. Untuk informasi selengkapnya tentang pengaturan yang tersedia untuk Bottlerocket, lihat [Menggunakan](https://github.com/bottlerocket-os/bottlerocket#using-user-data) data pengguna di. GitHub

Anda dapat menyediakan data pengguna Amazon EC2 di templat peluncuran menggunakan `cloud-init` saat meluncurkan instans Anda. Untuk informasi selengkapnya, lihat dokumentasi [cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html). Data pengguna Anda dapat digunakan untuk melakukan operasi konfigurasi umum. Ini termasuk operasi berikut:
+  [Termasuk pengguna atau grup](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups) 
+  [Menginstal paket](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages) 

Data pengguna Amazon EC2 dalam template peluncuran yang digunakan dengan grup node terkelola harus dalam format arsip [multi-bagian MIME untuk Amazon Linux AMIs dan format TOMM](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive) untuk Bottlerocket. AMIs Ini karena data pengguna Anda digabungkan dengan data pengguna Amazon EKS yang diperlukan simpul untuk bergabung dengan klaster. Jangan tentukan perintah apa pun dalam data pengguna Anda yang memulai atau memodifikasi`kubelet`. Ini dilakukan sebagai bagian dari data pengguna yang digabungkan oleh Amazon EKS. Parameter `kubelet` tertentu, seperti pengaturan label pada simpul, dapat dikonfigurasi secara langsung melalui API grup simpul terkelola.

**catatan**  
Untuk informasi selengkapnya tentang `kubelet` kustomisasi lanjutan, termasuk memulainya secara manual atau meneruskan parameter konfigurasi kustom, lihat[Menentukan AMI](#launch-template-custom-ami). Jika ID AMI kustom ditentukan dalam template peluncuran, Amazon EKS tidak menggabungkan data pengguna.

Rincian berikut memberikan informasi lebih lanjut tentang bagian data pengguna.

 **Data pengguna Amazon Linux 2**   
Anda dapat menggabungkan beberapa blok data pengguna menjadi satu file multi-bagian MIME. Misalnya, Anda dapat menggabungkan cloud boothook yang mengonfigurasi Docker daemon dengan skrip shell data pengguna yang menginstal paket kustom. File multi-bagian MIME terdiri dari komponen berikut:  
+ Tipe konten dan deklarasi batas bagian – `Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="` 
+ Deklarasi versi MIME – `MIME-Version: 1.0` 
+ Satu atau lebih blok data pengguna, yang berisi komponen berikut:
  + Batas pembukaan, yang menandakan awal dari blok data pengguna – `--==MYBOUNDARY==` 
  + Deklarasi tipe konten untuk blok: `Content-Type: text/cloud-config; charset="us-ascii"`. Untuk informasi selengkapnya, lihat dokumentasi [cloud-init](https://cloudinit.readthedocs.io/en/latest/topics/format.html).
  + Isi data pengguna (misalnya, daftar perintah atau `cloud-init` arahan shell).
  + Batas penutupan, yang menandakan akhir dari file multi-bagian MIME: `--==MYBOUNDARY==--` 

  Berikut ini adalah contoh file multi-bagian MIME yang dapat Anda gunakan untuk membuat milik Anda sendiri.

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo "Running custom user data script"

--==MYBOUNDARY==--
```

 **Data pengguna Amazon Linux 2023**   
Amazon Linux 2023 (AL2023) memperkenalkan proses inisialisasi node baru `nodeadm` yang menggunakan skema konfigurasi YAMM. Jika Anda menggunakan grup node yang dikelola sendiri atau AMI dengan template peluncuran, Anda sekarang harus menyediakan metadata klaster tambahan secara eksplisit saat membuat grup node baru. [Contoh](https://awslabs.github.io/amazon-eks-ami/nodeadm/) parameter minimum yang diperlukan adalah sebagai berikut, di mana`apiServerEndpoint`,`certificateAuthority`, dan layanan sekarang `cidr` diperlukan:  

```
---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
```
Anda biasanya akan mengatur konfigurasi ini dalam data pengguna Anda, baik apa adanya atau disematkan dalam dokumen multi-bagian MIME:  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig spec: [...]

--BOUNDARY--
```
Pada tahun AL2, metadata dari parameter ini ditemukan dari panggilan Amazon EKS `DescribeCluster` API. Dengan AL2023, perilaku ini telah berubah karena panggilan API tambahan berisiko melambat selama peningkatan skala node besar. Perubahan ini tidak memengaruhi Anda jika Anda menggunakan grup node terkelola tanpa templat peluncuran atau jika Anda menggunakan Karpenter. Untuk informasi selengkapnya tentang `certificateAuthority` dan layanan`cidr`, lihat [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)di *Referensi API Amazon EKS*.  
Berikut adalah contoh lengkap data AL2023 pengguna yang menggabungkan skrip shell untuk menyesuaikan node (seperti menginstal paket atau gambar wadah pra-caching) dengan konfigurasi yang diperlukan. `nodeadm` Contoh ini menunjukkan kustomisasi umum termasuk: \$1 Menginstal paket sistem tambahan\$1 Gambar kontainer pra-caching untuk meningkatkan waktu startup Pod \$1 Menyiapkan konfigurasi proxy HTTP \$1 Mengkonfigurasi flag untuk pelabelan node `kubelet`  

```
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset

# Install additional packages
yum install -y htop jq iptables-services

# Pre-cache commonly used container images
nohup docker pull public.ecr.aws/eks-distro/kubernetes/pause:3.2 &

# Configure HTTP proxy if needed
cat > /etc/profile.d/http-proxy.sh << 'EOF'
export HTTP_PROXY="http://proxy.example.com:3128"
export HTTPS_PROXY="http://proxy.example.com:3128"
export NO_PROXY="localhost,127.0.0.1,169.254.169.254,.internal"
EOF

--BOUNDARY
Content-Type: application/node.eks.aws

apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: my-cluster
    apiServerEndpoint: https://example.com
    certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
    cidr: 10.100.0.0/16
  kubelet:
    config:
      clusterDNS:
      - 10.100.0.10
    flags:
    - --node-labels=app=my-app,environment=production

--BOUNDARY--
```

 **Data pengguna bottlerocket**   
Bottlerocket menyusun data pengguna dalam format TOMB. Anda dapat memberikan data pengguna untuk digabungkan dengan data pengguna yang disediakan oleh Amazon EKS. Misalnya, Anda dapat memberikan `kubelet` pengaturan tambahan.  

```
[settings.kubernetes.system-reserved]
cpu = "10m"
memory = "100Mi"
ephemeral-storage= "1Gi"
```
Untuk informasi selengkapnya tentang pengaturan yang didukung, lihat dokumentasi [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket). Anda dapat mengonfigurasi label node dan [taints](node-taints-managed-node-groups.md) dalam data pengguna Anda. Namun, kami menyarankan Anda mengonfigurasi ini dalam grup node Anda sebagai gantinya. Amazon EKS menerapkan konfigurasi ini saat Anda melakukannya.  
Saat data pengguna digabungkan, pemformatan tidak dipertahankan, tetapi kontennya tetap sama. Konfigurasi yang Anda berikan dalam data pengguna akan mengesampingkan pengaturan apa pun yang dikonfigurasi oleh Amazon EKS. Jadi, jika Anda menetapkan `settings.kubernetes.max-pods` atau`settings.kubernetes.cluster-dns-ip`, nilai-nilai ini dalam data pengguna Anda diterapkan ke node.  
Amazon EKS tidak mendukung semua TOMB yang valid. Berikut ini adalah daftar format yang tidak didukung yang diketahui:  
+ Kutipan dalam kunci yang dikutip: `'quoted "value"' = "value"` 
+ Kutipan lolos dalam nilai: `str = "I’m a string. \"You can quote me\""` 
+ Campuran pelampung dan bilangan bulat: `numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]` 
+ Jenis campuran dalam array: `contributors = ["[foo@example.com](mailto:foo@example.com)", { name = "Baz", email = "[baz@example.com](mailto:baz@example.com)" }]` 
+ Header bertanda kurung dengan tombol yang dikutip: `[foo."bar.baz"]` 

 **Data pengguna Windows**   
Data pengguna Windows menggunakan PowerShell perintah. Saat membuat grup node terkelola, data pengguna kustom Anda digabungkan dengan data pengguna terkelola Amazon EKS. PowerShell Perintah Anda didahulukan, diikuti oleh perintah data pengguna terkelola, semuanya dalam satu `<powershell></powershell>` tag.  
Saat membuat grup node Windows, Amazon EKS memperbarui `aws-auth` `ConfigMap` untuk memungkinkan node berbasis Linux bergabung dengan cluster. Layanan tidak secara otomatis mengkonfigurasi izin untuk Windows AMIs. Jika Anda menggunakan node Windows, Anda harus mengelola akses baik melalui API entri akses atau dengan memperbarui secara `aws-auth` `ConfigMap` langsung. Untuk informasi selengkapnya, lihat [Menerapkan node Windows pada kluster EKS](windows-support.md).
Ketika tidak ada ID AMI yang ditentukan dalam template peluncuran, jangan gunakan skrip Bootstrap Windows Amazon EKS dalam data pengguna untuk mengonfigurasi Amazon EKS.
Contoh data pengguna adalah sebagai berikut.  

```
<powershell>
Write-Host "Running custom user data script"
</powershell>
```

## Menentukan AMI
<a name="launch-template-custom-ami"></a>

Jika Anda memiliki salah satu dari persyaratan berikut, maka tentukan ID AMI di `ImageId` bidang template peluncuran Anda. Pilih persyaratan yang Anda miliki untuk informasi tambahan.

### Berikan data pengguna untuk meneruskan argumen ke `bootstrap.sh` file yang disertakan dengan Linux/Bottlerocket AMI Amazon EKS yang dioptimalkan
<a name="mng-specify-eks-ami"></a>

Bootstrapping adalah istilah yang digunakan untuk menggambarkan penambahan perintah yang dapat dijalankan ketika sebuah instance dimulai. [Misalnya, bootstrapping memungkinkan penggunaan argumen kubelet ekstra.](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) Anda dapat meneruskan argumen ke `bootstrap.sh` skrip dengan menggunakan `eksctl` tanpa menentukan template peluncuran. Atau Anda dapat melakukannya dengan menentukan informasi di bagian data pengguna dari template peluncuran.

 **eksctl tanpa menentukan template peluncuran**   
Buat file bernama *my-nodegroup.yaml* dengan isi berikut ini. Ganti setiap *example value* dengan nilai-nilai Anda sendiri. `--dns-cluster-ip`Argumen `--apiserver-endpoint``--b64-cluster-ca`,, dan bersifat opsional. Namun, mendefinisikannya memungkinkan `bootstrap.sh` skrip untuk menghindari `describeCluster` panggilan. Ini berguna dalam pengaturan cluster pribadi atau cluster tempat Anda sering menskalakan node masuk dan keluar. Untuk informasi selengkapnya tentang `bootstrap.sh` skrip, lihat file [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) di GitHub.  
+ Satu-satunya argumen yang diperlukan adalah nama cluster (*my-cluster*).
+ Untuk mengambil ID AMI yang dioptimalkan`ami-1234567890abcdef0 `, lihat bagian berikut:
  +  [Ambil AMI Amazon Linux yang direkomendasikan IDs](retrieve-ami-id.md) 
  +  [Ambil Bottlerocket AMI yang direkomendasikan IDs](retrieve-ami-id-bottlerocket.md) 
  +  [Ambil Microsoft Windows AMI yang direkomendasikan IDs](retrieve-windows-ami-id.md) 
+ Untuk mengambil *certificate-authority* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Untuk mengambil *api-server-endpoint* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Nilai untuk `--dns-cluster-ip` adalah CIDR layanan Anda dengan `.10` di akhir. Untuk mengambil *service-cidr* untuk cluster Anda, jalankan perintah berikut. Misalnya, jika nilai yang dikembalikan adalah`ipv4 10.100.0.0/16`, maka nilai Anda adalah*10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Contoh ini memberikan `kubelet` argumen untuk menetapkan `max-pods` nilai kustom menggunakan `bootstrap.sh` skrip yang disertakan dengan AMI Amazon EKS yang dioptimalkan. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Untuk bantuan dalam memilih*my-max-pods-value*, lihat. Untuk informasi selengkapnya tentang cara `maxPods` ditentukan saat menggunakan grup node terkelola, lihat[Bagaimana MaxPods ditentukan](choosing-instance-type.md#max-pods-precedence).

  ```
  ---
  apiVersion: eksctl.io/v1alpha5
  kind: ClusterConfig
  
  metadata:
    name: my-cluster
    region: region-code
  
  managedNodeGroups:
    - name: my-nodegroup
      ami: ami-1234567890abcdef0
      instanceType: m5.large
      privateNetworking: true
      disableIMDSv1: true
      labels: { x86-al2-specified-mng }
      overrideBootstrapCommand: |
        #!/bin/bash
        /etc/eks/bootstrap.sh my-cluster \
          --b64-cluster-ca certificate-authority \
          --apiserver-endpoint api-server-endpoint \
          --dns-cluster-ip service-cidr.10 \
          --kubelet-extra-args '--max-pods=my-max-pods-value' \
          --use-max-pods false
  ```

  Untuk setiap opsi `eksctl` `config` file yang tersedia, lihat [Skema file Config dalam dokumentasi](https://eksctl.io/usage/schema/). `eksctl` `eksctl`Utilitas masih membuat template peluncuran untuk Anda dan mengisi data penggunanya dengan data yang Anda berikan dalam `config` file.

  Buat grup node dengan perintah berikut.

  ```
  eksctl create nodegroup --config-file=my-nodegroup.yaml
  ```

 **Data pengguna dalam template peluncuran**   
Tentukan informasi berikut di bagian data pengguna dari template peluncuran Anda. Ganti setiap *example value* dengan nilai-nilai Anda sendiri. `--dns-cluster-ip`Argumen `--apiserver-endpoint``--b64-cluster-ca`,, dan bersifat opsional. Namun, mendefinisikannya memungkinkan `bootstrap.sh` skrip untuk menghindari `describeCluster` panggilan. Ini berguna dalam pengaturan cluster pribadi atau cluster tempat Anda sering menskalakan node masuk dan keluar. Untuk informasi selengkapnya tentang `bootstrap.sh` skrip, lihat file [bootstrap.sh](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) di GitHub.  
+ Satu-satunya argumen yang diperlukan adalah nama cluster (*my-cluster*).
+ Untuk mengambil *certificate-authority* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Untuk mengambil *api-server-endpoint* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Nilai untuk `--dns-cluster-ip` adalah CIDR layanan Anda dengan `.10` di akhir. Untuk mengambil *service-cidr* untuk cluster Anda, jalankan perintah berikut. Misalnya, jika nilai yang dikembalikan adalah`ipv4 10.100.0.0/16`, maka nilai Anda adalah*10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Contoh ini memberikan `kubelet` argumen untuk menetapkan `max-pods` nilai kustom menggunakan `bootstrap.sh` skrip yang disertakan dengan AMI Amazon EKS yang dioptimalkan. Untuk bantuan dalam memilih*my-max-pods-value*, lihat. Untuk informasi selengkapnya tentang cara `maxPods` ditentukan saat menggunakan grup node terkelola, lihat[Bagaimana MaxPods ditentukan](choosing-instance-type.md#max-pods-precedence).

  ```
  MIME-Version: 1.0
  Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
  
  --==MYBOUNDARY==
  Content-Type: text/x-shellscript; charset="us-ascii"
  
  #!/bin/bash
  set -ex
  /etc/eks/bootstrap.sh my-cluster \
    --b64-cluster-ca certificate-authority \
    --apiserver-endpoint api-server-endpoint \
    --dns-cluster-ip service-cidr.10 \
    --kubelet-extra-args '--max-pods=my-max-pods-value' \
    --use-max-pods false
  
  --==MYBOUNDARY==--
  ```

### Berikan data pengguna untuk meneruskan argumen ke `Start-EKSBootstrap.ps1` file yang disertakan dengan AMI Windows Amazon EKS yang dioptimalkan
<a name="mng-specify-eks-ami-windows"></a>

Bootstrapping adalah istilah yang digunakan untuk menggambarkan penambahan perintah yang dapat dijalankan ketika sebuah instance dimulai. Anda dapat meneruskan argumen ke `Start-EKSBootstrap.ps1` skrip dengan menggunakan `eksctl` tanpa menentukan template peluncuran. Atau Anda dapat melakukannya dengan menentukan informasi di bagian data pengguna dari template peluncuran.

Jika Anda ingin menentukan ID AMI Windows kustom, ingatlah pertimbangan berikut:
+ Anda harus menggunakan template peluncuran dan memberikan perintah bootstrap yang diperlukan di bagian data pengguna. Untuk mengambil ID Windows yang Anda inginkan, Anda dapat menggunakan tabel di [Buat node dengan Windows AMIs yang dioptimalkan](eks-optimized-windows-ami.md).
+ Ada beberapa batasan dan kondisi. Misalnya, Anda harus menambahkan `eks:kube-proxy-windows` ke peta konfigurasi AWS IAM Authenticator Anda. Untuk informasi selengkapnya, lihat [Batas dan ketentuan saat menentukan ID AMI](#mng-ami-id-conditions).

Tentukan informasi berikut di bagian data pengguna dari template peluncuran Anda. Ganti setiap *example value* dengan nilai-nilai Anda sendiri. `-DNSClusterIP`Argumen `-APIServerEndpoint``-Base64ClusterCA`,, dan bersifat opsional. Namun, mendefinisikannya memungkinkan `Start-EKSBootstrap.ps1` skrip untuk menghindari `describeCluster` panggilan.
+ Satu-satunya argumen yang diperlukan adalah nama cluster (*my-cluster*).
+ Untuk mengambil *certificate-authority* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  ```
+ Untuk mengambil *api-server-endpoint* untuk cluster Anda, jalankan perintah berikut.

  ```
  aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  ```
+ Nilai untuk `--dns-cluster-ip` adalah CIDR layanan Anda dengan `.10` di akhir. Untuk mengambil *service-cidr* untuk cluster Anda, jalankan perintah berikut. Misalnya, jika nilai yang dikembalikan adalah`ipv4 10.100.0.0/16`, maka nilai Anda adalah*10.100.0.10*.

  ```
  aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  ```
+ Untuk argumen tambahan, lihat[Parameter konfigurasi skrip bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters).
**catatan**  
Jika Anda menggunakan layanan khusus CIDR, maka Anda perlu menentukannya menggunakan `-ServiceCIDR` parameter. Jika tidak, resolusi DNS untuk Pod di klaster akan gagal.

```
<powershell>
[string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1"
& $EKSBootstrapScriptFile -EKSClusterName my-cluster `
	 -Base64ClusterCA certificate-authority `
	 -APIServerEndpoint api-server-endpoint `
	 -DNSClusterIP service-cidr.10
</powershell>
```

### Jalankan AMI khusus karena persyaratan keamanan, kepatuhan, atau kebijakan internal tertentu
<a name="mng-specify-custom-ami"></a>

Untuk informasi selengkapnya, lihat [Amazon Machine Image (AMI)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) di *Panduan Pengguna Amazon EC2*. Spesifikasi build Amazon EKS AMI berisi sumber daya dan skrip konfigurasi untuk membuat Amazon EKS AMI khusus berdasarkan Amazon Linux. Untuk informasi selengkapnya, lihat [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami/) on GitHub. Untuk membuat kustom yang AMIs diinstal dengan sistem operasi lain, lihat [Amazon EKS Sample Custom AMIs](https://github.com/aws-samples/amazon-eks-custom-amis) di GitHub.

Anda tidak dapat menggunakan referensi parameter dinamis untuk AMI IDs di Template Peluncuran yang digunakan dengan grup node terkelola.

**penting**  
Saat menentukan AMI, Amazon EKS tidak memvalidasi versi Kubernetes yang disematkan di AMI Anda terhadap versi control plane cluster Anda. Anda bertanggung jawab untuk memastikan bahwa versi Kubernetes dari AMI kustom Anda sesuai dengan kebijakan miring versi [Kubernetes](https://kubernetes.io/releases/version-skew-policy):  
`kubelet`Versi pada node Anda tidak boleh lebih baru dari versi cluster Anda
`kubelet`Versi pada node Anda harus sama dengan atau hingga 3 versi minor di belakang versi cluster Anda (untuk versi Kubernetes `1.28` atau lebih tinggi), atau hingga 2 versi minor di belakang versi cluster Anda (untuk versi Kubernetes atau lebih rendah) `1.27`  
Membuat grup node terkelola dengan pelanggaran versi miring dapat mengakibatkan:
Node gagal bergabung dengan cluster
Perilaku tidak terdefinisi atau ketidakcocokan API
Ketidakstabilan cluster atau kegagalan beban kerja
Saat menentukan AMI, Amazon EKS tidak menggabungkan data pengguna apa pun. Sebaliknya, Anda bertanggung jawab untuk menyediakan `bootstrap` perintah yang diperlukan untuk node untuk bergabung dengan cluster. Jika simpul Anda gagal untuk bergabung dengan klaster, tindakan Amazon EKS `CreateNodegroup` dan `UpdateNodegroupVersion` juga gagal.

## Batas dan ketentuan saat menentukan ID AMI
<a name="mng-ami-id-conditions"></a>

Berikut ini adalah batasan dan kondisi yang terkait dengan menentukan ID AMI dengan grup node terkelola:
+ Anda harus membuat grup node baru untuk beralih antara menentukan ID AMI dalam template peluncuran dan tidak menentukan ID AMI.
+ Anda tidak diberi tahu di konsol saat versi AMI yang lebih baru tersedia. Untuk memperbarui grup node ke versi AMI yang lebih baru, Anda perlu membuat versi baru template peluncuran dengan ID AMI yang diperbarui. Kemudian, Anda perlu memperbarui grup node dengan versi template peluncuran baru.
+ Kolom berikut tidak dapat disetel di API jika Anda menentukan ID AMI:
  +  `amiType` 
  +  `releaseVersion` 
  +  `version` 
+ Setiap `taints` set dalam API diterapkan secara asinkron jika Anda menentukan ID AMI. Untuk menerapkan taints sebelum node bergabung dengan cluster, Anda harus meneruskan taints ke `kubelet` dalam data pengguna Anda menggunakan flag baris `--register-with-taints` perintah. Untuk informasi selengkapnya, lihat [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) dalam dokumentasi Kubernetes.
+ Saat menentukan ID AMI khusus untuk grup node terkelola Windows, tambahkan `eks:kube-proxy-windows` ke peta konfigurasi AWS IAM Authenticator Anda. Ini diperlukan agar DNS berfungsi dengan baik.

  1. Buka peta konfigurasi AWS IAM Authenticator untuk mengedit.

     ```
     kubectl edit -n kube-system cm aws-auth
     ```

  1. Tambahkan entri ini ke `groups` daftar di bawah masing-masing `rolearn` yang terkait dengan node Windows. Peta konfigurasi Anda akan terlihat mirip [aws-auth-cm-windowsdengan.yaml.](https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml)

     ```
     - eks:kube-proxy-windows
     ```

  1. Simpan file dan keluar dari editor teks Anda.
+ Untuk AMI apa pun yang menggunakan templat peluncuran kustom, default `HttpPutResponseHopLimit` untuk grup node terkelola diatur ke`2`.

# Menghapus grup node terkelola dari klaster
<a name="delete-managed-node-group"></a>

Topik ini menjelaskan cara menghapus grup simpul terkelola Amazon EKS. Saat Anda menghapus grup node terkelola, Amazon EKS pertama-tama menetapkan ukuran minimum, maksimum, dan yang diinginkan dari grup Auto Scaling Anda ke nol. Ini kemudian menyebabkan grup node Anda menurunkan skala.

Sebelum setiap instance dihentikan, Amazon EKS mengirimkan sinyal untuk menguras node itu. Selama proses drain, Kubernetes melakukan hal berikut untuk setiap pod pada node: menjalankan semua kait `preStop` siklus hidup yang dikonfigurasi, mengirimkan `SIGTERM` sinyal ke container, lalu menunggu shutdown yang anggun. `terminationGracePeriodSeconds` Jika node belum terkuras setelah 5 menit, Amazon EKS memungkinkan Auto Scaling melanjutkan penghentian paksa instance. Setelah semua instance dihentikan, grup Auto Scaling akan dihapus.

**penting**  
Jika Anda menghapus grup node terkelola yang menggunakan peran IAM node yang tidak digunakan oleh grup node terkelola lainnya di klaster, peran tersebut akan dihapus dari. `aws-auth` `ConfigMap` Jika salah satu grup node yang dikelola sendiri di cluster menggunakan peran IAM node yang sama, node yang dikelola sendiri pindah ke status. `NotReady` Selain itu, operasi cluster juga terganggu. Untuk menambahkan pemetaan untuk peran yang Anda gunakan hanya untuk grup node yang dikelola sendiri, lihat[Buat entri akses](creating-access-entries.md), apakah versi platform klaster Anda setidaknya merupakan versi minimum yang tercantum di bagian prasyarat [Grant IAM pengguna akses ke Kubernetes dengan entri akses](access-entries.md) EKS. Jika versi platform Anda lebih awal dari versi minimum yang diperlukan untuk entri akses, Anda dapat menambahkan entri kembali ke `aws-auth``ConfigMap`. Untuk informasi lebih lanjut, masukkan `eksctl create iamidentitymapping --help` di terminal Anda.

Anda dapat menghapus grup node terkelola dengan:
+  [`eksctl`](#eksctl-delete-managed-nodegroup) 
+  [Konsol Manajemen AWS](#console-delete-managed-nodegroup) 
+  [AWS CLI](#awscli-delete-managed-nodegroup) 

## `eksctl`
<a name="eksctl-delete-managed-nodegroup"></a>

 **Hapus grup node terkelola dengan `eksctl`** 

Masukkan perintah berikut. Ganti setiap `<example value>` dengan nilai-nilai Anda sendiri.

```
eksctl delete nodegroup \
  --cluster <my-cluster> \
  --name <my-mng> \
  --region <region-code>
```

Untuk opsi lainnya, lihat [Menghapus dan menguras nodegroup](https://eksctl.io/usage/nodegroups/#deleting-and-draining-nodegroups) dalam dokumentasi. `eksctl`

## Konsol Manajemen AWS
<a name="console-delete-managed-nodegroup"></a>

 **Hapus grup node terkelola dengan Konsol Manajemen AWS ** 

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pada halaman **Clusters**, pilih cluster yang berisi grup node untuk dihapus.

1. Pada halaman cluster yang dipilih, pilih tab **Compute**.

1. Di bagian **Node groups**, pilih grup node yang akan dihapus. Lalu pilih **Hapus**.

1. Dalam kotak dialog **Hapus konfirmasi grup simpul**, masukkan nama grup simpul. Lalu pilih **Hapus**.

## AWS CLI
<a name="awscli-delete-managed-nodegroup"></a>

 **Hapus grup node terkelola dengan AWS CLI** 

1. Masukkan perintah berikut. Ganti setiap `<example value>` dengan nilai-nilai Anda sendiri.

   ```
   aws eks delete-nodegroup \
     --cluster-name <my-cluster> \
     --nodegroup-name <my-mng> \
     --region <region-code>
   ```

1. Jika `cli_pager=` diatur dalam konfigurasi CLI, gunakan tombol panah pada keyboard Anda untuk menggulir output respons. Tekan `q` tombol ketika Anda selesai.

   Untuk opsi lainnya, lihat ` [delete-nodegroup](https://docs.aws.amazon.com/cli/latest/reference/eks/delete-nodegroup.html) ` perintah di * AWS CLI Command* Reference.

# Pertahankan node sendiri dengan node yang dikelola sendiri
<a name="worker"></a>

Sebuah klaster berisi satu atau beberapa EC2 node Amazon tempat Pod dijadwalkan. Node Amazon EKS berjalan di AWS akun Anda dan terhubung ke bidang kontrol klaster Anda melalui titik akhir server API cluster. Anda ditagih untuk mereka berdasarkan EC2 harga Amazon. Untuk informasi selengkapnya, lihat [ EC2 harga Amazon](https://aws.amazon.com/ec2/pricing/).

Sebuah klaster dapat berisi beberapa grup simpul. Setiap grup node berisi satu atau beberapa node yang digunakan dalam grup [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html). [Jenis instance node dalam grup dapat bervariasi, seperti saat menggunakan [pemilihan tipe instance berbasis atribut](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html) dengan Karpenter.](https://karpenter.sh/) Semua instance dalam grup node harus menggunakan peran [IAM node Amazon EKS](create-node-role.md).

Amazon EKS menyediakan Gambar Mesin Amazon khusus (AMIs) yang disebut Amazon EKS dioptimalkan AMIs. Itu AMIs dikonfigurasi untuk bekerja dengan Amazon EKS. Komponen mereka termasuk`containerd`,`kubelet`, dan AWS IAM Authenticator. Ini AMIs juga berisi [skrip bootstrap](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) khusus yang memungkinkannya menemukan dan terhubung ke bidang kontrol cluster Anda secara otomatis.

Jika Anda membatasi akses ke titik akhir publik klaster Anda menggunakan blok CIDR, sebaiknya Anda juga mengaktifkan akses titik akhir pribadi. Ini agar node dapat berkomunikasi dengan cluster. Jika titik akhir privat diaktifkan, blok CIDR yang Anda tentukan untuk akses publik harus menyertakan sumber jalan keluar dari VPC Anda. Untuk informasi selengkapnya, lihat [Titik akhir server API kluster](cluster-endpoint.md).

Untuk menambahkan simpul-simpul yang dikelola sendiri untuk klaster Amazon EKS Anda, lihat topik-topik berikutnya. Jika Anda meluncurkan node yang dikelola sendiri secara manual, tambahkan tag berikut ke setiap node sambil memastikan bahwa itu `<cluster-name>` cocok dengan cluster Anda. Untuk informasi selengkapnya, lihat [Penambahan dan penghapusan tanda pada sumber daya individu](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#adding-or-deleting-tags). Jika Anda mengikuti langkah-langkah dalam panduan berikut, tag yang diperlukan secara otomatis ditambahkan ke node untuk Anda.


| Kunci | Nilai | 
| --- | --- | 
|   `kubernetes.io/cluster/<cluster-name>`   |   `owned`   | 

**penting**  
Tag di Amazon EC2 Instance Metadata Service (IMDS) tidak kompatibel dengan node EKS. Saat Tag Metadata Instance diaktifkan, penggunaan garis miring maju ('/') dalam nilai tag dicegah. Keterbatasan ini dapat menyebabkan kegagalan peluncuran instance, terutama saat menggunakan alat manajemen node seperti Karpenter atau Cluster Autoscaler, karena layanan ini mengandalkan tag yang berisi garis miring ke depan untuk fungsionalitas yang tepat.

Untuk informasi selengkapnya terkait simpul dari perspektif Kubernetes umum, lihat [Simpul](https://kubernetes.io/docs/concepts/architecture/nodes/) dalam dokumentasi Kubernetes.

**Topics**
+ [Buat node Amazon Linux yang dikelola sendiri](launch-workers.md)
+ [Buat node Bottlerocket yang dikelola sendiri](launch-node-bottlerocket.md)
+ [Buat node Microsoft Windows yang dikelola sendiri](launch-windows-workers.md)
+ [Buat node Linux Ubuntu yang dikelola sendiri](launch-node-ubuntu.md)
+ [Perbarui node yang dikelola sendiri untuk klaster Anda](update-workers.md)

# Buat node Amazon Linux yang dikelola sendiri
<a name="launch-workers"></a>

Topik ini menjelaskan bagaimana Anda dapat meluncurkan grup Auto Scaling dari node Linux yang mendaftar dengan kluster Amazon EKS Anda. Setelah simpul bergabung dengan klaster, Anda dapat men-deploy aplikasi Kubernetes pada mereka. Anda juga dapat meluncurkan node Amazon Linux yang dikelola sendiri dengan `eksctl` atau. Konsol Manajemen AWS Jika Anda perlu meluncurkan node di AWS Outposts, lihat. [Buat node Amazon Linux di AWS Outposts](eks-outposts-self-managed-nodes.md)
+ Sebuah klaster Amazon EKS yang sudah ada. Untuk menyebarkan satu, lihat[Buat kluster Amazon EKS](create-cluster.md). Jika Anda memiliki subnet di AWS Wilayah tempat Anda mengaktifkan AWS Outposts, AWS Wavelength, atau AWS Local Zones, subnet tersebut tidak boleh diteruskan saat Anda membuat klaster.
+ Peran IAM yang ada untuk digunakan node. Untuk membuatnya, lihat [IAM role simpul Amazon EKS](create-node-role.md). Jika peran ini tidak memiliki salah satu kebijakan untuk VPC CNI, peran terpisah yang mengikuti diperlukan untuk pod VPC CNI.
+ (Opsional, tetapi disarankan) Plugin Amazon VPC CNI untuk add-on Kubernetes dikonfigurasi dengan peran IAM sendiri yang memiliki kebijakan IAM yang diperlukan yang melekat padanya. Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).
+ Keakraban dengan pertimbangan yang tercantum dalam [Pilih jenis instans EC2 node Amazon yang](choosing-instance-type.md) optimal. Bergantung pada jenis instans yang Anda pilih, mungkin ada prasyarat tambahan untuk cluster dan VPC Anda.

Anda dapat meluncurkan node Linux yang dikelola sendiri menggunakan salah satu dari berikut ini:
+  [`eksctl`](#eksctl_create_managed_amazon_linux) 
+  [Konsol Manajemen AWS](#console_create_managed_amazon_linux) 

## `eksctl`
<a name="eksctl_create_managed_amazon_linux"></a>

 **Luncurkan node Linux yang dikelola sendiri menggunakan `eksctl`** 

1. Instal versi `0.215.0` atau yang lebih baru dari alat baris `eksctl` perintah yang diinstal pada perangkat Anda atau AWS CloudShell. Untuk menginstal atau memperbarui`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

1. (Opsional) Jika kebijakan IAM terkelola **Amazoneks\$1CNI\$1Policy** dilampirkan ke peran IAM [node Amazon EKS Anda, kami sarankan untuk menetapkannya ke peran IAM yang Anda](create-node-role.md) kaitkan ke akun layanan Kubernetes sebagai gantinya. `aws-node` Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).

1. Perintah berikutnya membuat grup simpul dalam klaster yang ada. Ganti *al-nodes* dengan nama untuk grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Ganti *my-cluster* dengan nama klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat klaster. Ganti sisanya *example value* dengan nilai Anda sendiri. Simpul dibuat dengan versi Kubernetes yang sama dengan bidang kendali, secara default.

   Sebelum memilih nilai untuk`--node-type`, tinjau [Pilih jenis instans EC2 node Amazon yang optimal](choosing-instance-type.md).

   Ganti *my-key* dengan nama Amazon EC2 key pair atau public key Anda. Kunci ini digunakan untuk SSH ke simpul Anda setelah diluncurkan. Jika Anda belum memiliki EC2 key pair Amazon, Anda dapat membuatnya di Konsol Manajemen AWS. Untuk informasi selengkapnya, lihat [pasangan EC2 kunci Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) *di Panduan EC2 Pengguna Amazon*.

   Buat grup simpul Anda dengan perintah berikut.
**penting**  
Jika Anda ingin menyebarkan grup node ke subnet AWS Outposts, Wavelength, atau Local Zone, ada pertimbangan tambahan:  
Subnet tidak boleh diteruskan saat Anda membuat cluster.
Anda harus membuat grup node dengan file konfigurasi yang menentukan subnet dan. ` [volumeType](https://eksctl.io/usage/schema/#nodeGroups-volumeType): gp2` Untuk informasi selengkapnya, lihat [Membuat nodegroup dari file konfigurasi dan skema](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) [file Config](https://eksctl.io/usage/schema/) dalam dokumentasi. `eksctl`

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --name al-nodes \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --ssh-access \
     --managed=false \
     --ssh-public-key my-key
   ```

   Untuk menyebarkan grup simpul yang:
   + dapat menetapkan jumlah alamat IP yang jauh lebih tinggi ke Pod daripada konfigurasi default, lihat[Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md).
   + dapat menetapkan `IPv4` alamat ke Pod dari blok CIDR yang berbeda dari instans, lihat. [Menerapkan Pod di subnet alternatif dengan jaringan khusus](cni-custom-network.md)
   + dapat menetapkan `IPv6` alamat ke Pod dan layanan, lihat[Pelajari tentang IPv6 alamat ke klaster, Pod, dan layanan](cni-ipv6.md).
   + tidak memiliki akses internet keluar, lihat[Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md).

     Untuk daftar lengkap semua opsi dan default yang tersedia, masukkan perintah berikut.

     ```
     eksctl create nodegroup --help
     ```

     Jika node gagal bergabung dengan cluster, maka lihat [Simpul gagal untuk bergabung dengan klaster](troubleshooting.md#worker-node-fail) di chapter Troubleshooting.

     Contoh output adalah sebagai berikut. Beberapa baris adalah output sementara node dibuat. Salah satu baris terakhir dari output adalah baris contoh berikutnya.

     ```
     [✔]  created 1 nodegroup(s) in cluster "my-cluster"
     ```

1. (Opsional) Deploy [aplikasi sampel](sample-deployment.md) untuk menguji simpul klaster dan Linux Anda.

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata EC2 instans Amazon (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## Konsol Manajemen AWS
<a name="console_create_managed_amazon_linux"></a>

 **Langkah 1: Luncurkan node Linux yang dikelola sendiri menggunakan Konsol Manajemen AWS ** 

1. Unduh versi terbaru dari AWS CloudFormation template.

   ```
   curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2025-11-26/amazon-eks-nodegroup.yaml
   ```

1. Tunggu status klaster Anda ditampilkan sebagai `ACTIVE`. Jika Anda meluncurkan node Anda sebelum cluster aktif, node gagal mendaftar dengan cluster dan Anda harus meluncurkannya kembali.

1. Buka [konsol AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/).

1. Pilih **Buat tumpukan** dan kemudian pilih **Dengan sumber daya baru (standar)**.

1. Untuk **Menentukan templat**, pilih **Unggah sebuah file templat** dan kemudian pilih **Pilih file**.

1. Pilih `amazon-eks-nodegroup.yaml` file yang Anda unduh.

1. Pilih **Selanjutnya**.

1. Pada halaman **Tentukan detail tumpukan**, masukkan parameter berikut yang sesuai, lalu pilih **Berikutnya**:
   +  **Nama tumpukan**: Pilih nama tumpukan untuk AWS CloudFormation tumpukan Anda. Misalnya, Anda bisa menyebutnya*my-cluster-nodes*. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat klaster.
   +  **ClusterName**: Masukkan nama yang Anda gunakan saat membuat cluster Amazon EKS Anda. Nama ini harus sama dengan nama cluster atau node Anda tidak dapat bergabung dengan cluster.
   +  **ClusterControlPlaneSecurityGroup**: Pilih **SecurityGroups**nilai dari AWS CloudFormation output yang Anda hasilkan saat Anda membuat [VPC](creating-a-vpc.md) Anda.

     Langkah-langkah berikut menunjukkan satu operasi untuk mengambil grup yang berlaku.

     1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Pilih nama cluster.

     1. Pilih tab **Jaringan**.

     1. Gunakan nilai **grup keamanan tambahan** sebagai referensi saat memilih dari daftar **ClusterControlPlaneSecurityGroup**tarik-turun.
   +  **ApiServerEndpoint**: Masukkan Endpoint API Server untuk EKS Cluster Anda. Ini dapat ditemukan di bagian Detail Konsol Kluster EKS
   +  **CertificateAuthorityData**: Masukkan data Otoritas Sertifikat yang dikodekan base64 yang juga dapat ditemukan di bagian Deatils Konsol Kluster EKS.
   +  **ServiceCidr**: Masukkan rentang CIDR yang digunakan untuk mengalokasikan alamat IP ke layanan Kubernetes di dalam klaster. Ini ditemukan dalam tab jaringan Konsol Kluster EKS.
   +  **AuthenticationMode**: Pilih Mode Otentikasi yang digunakan di Kluster EKS dengan meninjau tab akses dalam Konsol Kluster EKS.
   +  **NodeGroupName**: Masukkan nama untuk grup node Anda. Nama ini dapat digunakan nanti untuk mengidentifikasi grup node Auto Scaling yang dibuat untuk node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa.
   +  **NodeAutoScalingGroupMinSize**: Masukkan jumlah minimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
   +  **NodeAutoScalingGroupDesiredCapacity**: Masukkan jumlah node yang diinginkan untuk diskalakan saat tumpukan Anda dibuat.
   +  **NodeAutoScalingGroupMaxSize**: Masukkan jumlah maksimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
   +  **NodeInstanceType**: Pilih jenis instance untuk node Anda. Untuk informasi selengkapnya, lihat [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md).
   +  **NodeImageIdSSMParam**: Diisi sebelumnya dengan parameter Amazon EC2 Systems Manager dari Amazon EKS baru-baru ini yang mengoptimalkan Amazon Linux 2023 AMI untuk versi Kubernetes variabel. [Untuk menggunakan versi minor Kubernetes berbeda yang didukung dengan Amazon EKS, ganti *1.XX* dengan versi lain yang didukung.](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) Sebaiknya tentukan versi Kubernetes yang sama dengan klaster Anda.

     Anda juga dapat mengganti *amazon-linux-2023* dengan tipe AMI yang berbeda. Untuk informasi selengkapnya, lihat [Ambil AMI Amazon Linux yang direkomendasikan IDs](retrieve-ami-id.md).
**catatan**  
Node Amazon EKS AMIs didasarkan pada Amazon Linux. Anda dapat melacak peristiwa keamanan atau privasi untuk Amazon Linux 2023 di [Pusat Keamanan Amazon Linux](https://alas.aws.amazon.com/alas2023.html) atau berlangganan umpan [RSS](https://alas.aws.amazon.com/AL2023/alas.rss) terkait. Kejadian keamanan dan privasi mencakup gambaran umum mengenai masalah, paket apa yang terpengaruh, dan cara memperbarui instans Anda untuk memperbaiki masalah tersebut.
   +  **NodeImageId**: (Opsional) Jika Anda menggunakan AMI kustom Anda sendiri (bukan AMI yang dioptimalkan Amazon EKS), masukkan ID AMI node untuk AWS Wilayah Anda. Jika Anda menentukan nilai di sini, itu akan mengganti nilai apa pun di bidang. **NodeImageIdSSMParam**
   +  **NodeVolumeSize**: Tentukan ukuran volume root untuk node Anda, di GiB.
   +  **NodeVolumeType**: Tentukan jenis volume root untuk node Anda.
   +  **KeyName**: Masukkan nama key pair Amazon EC2 SSH yang dapat Anda gunakan untuk terhubung menggunakan SSH ke node Anda setelah diluncurkan. Jika Anda belum memiliki EC2 key pair Amazon, Anda dapat membuatnya di Konsol Manajemen AWS. Untuk informasi selengkapnya, lihat [pasangan EC2 kunci Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) *di Panduan EC2 Pengguna Amazon*.
   +  **VpcId**: Masukkan ID untuk [VPC](creating-a-vpc.md) yang Anda buat.
   +  **Subnet**: Pilih subnet yang sudah Anda buat untuk VPC Anda. Jika Anda membuat VPC menggunakan langkah-langkah yang dijelaskan dalam [Membuat VPC Amazon untuk kluster Amazon EKS Anda](creating-a-vpc.md), tentukan hanya subnet pribadi dalam VPC agar node Anda dapat diluncurkan. Anda dapat melihat subnet mana yang bersifat pribadi dengan membuka setiap subnet link dari tab **Networking** cluster Anda.
**penting**  
Jika salah satu subnet adalah subnet publik, maka mereka harus mengaktifkan pengaturan tugas alamat IP publik otomatis. Jika pengaturan tidak diaktifkan untuk subnet publik, maka node apa pun yang Anda terapkan ke subnet publik tersebut tidak akan diberi alamat IP publik dan tidak akan dapat berkomunikasi dengan cluster atau layanan lainnya. AWS Jika subnet digunakan sebelum 26 Maret 2020 menggunakan salah satu [templat AWS CloudFormation VPC Amazon](creating-a-vpc.md) EKS, atau dengan menggunakan`eksctl`, maka penetapan alamat IP publik otomatis dinonaktifkan untuk subnet publik. Untuk informasi tentang cara mengaktifkan penetapan alamat IP publik untuk subnet, lihat [Memodifikasi atribut IPv4 pengalamatan publik](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) untuk subnet Anda. Jika node dikerahkan ke subnet pribadi, maka node dapat berkomunikasi dengan cluster dan AWS layanan lainnya melalui gateway NAT.
Jika subnet tidak memiliki akses internet, pastikan Anda mengetahui pertimbangan dan langkah tambahan dalam [Menyebarkan kluster pribadi dengan](private-clusters.md) akses internet terbatas.
Jika Anda memilih subnet AWS Outposts, Wavelength, atau Local Zone, subnet tidak boleh diteruskan saat Anda membuat cluster.

1. Pilih pilihan yang Anda inginkan di halaman **Configure stack options**, lalu pilih **Next**.

1. Pilih kotak centang di sebelah kiri **Saya mengakui yang AWS CloudFormation mungkin membuat sumber daya IAM**. , dan kemudian pilih **Buat tumpukan**.

1. Setelah tumpukan Anda selesai dibuat, pilih tumpukan di konsol dan pilih **Outputs**. Jika Anda menggunakan Mode `EKS API and ConfigMap` Otentikasi `EKS API` atau, ini adalah langkah terakhir.

1. Jika Anda menggunakan Mode `ConfigMap` Otentikasi, rekam **NodeInstanceRole**untuk grup node yang telah dibuat.

 **Langkah 2: Aktifkan node untuk bergabung dengan cluster Anda** 

**catatan**  
Dua langkah berikut hanya diperlukan jika menggunakan Mode Otentikasi Configmap dalam Kluster EKS. Selain itu, jika Anda meluncurkan node di dalam VPC pribadi tanpa akses internet keluar, pastikan untuk mengaktifkan node untuk bergabung dengan cluster Anda dari dalam VPC.

1. Periksa untuk melihat apakah Anda sudah memiliki `aws-auth``ConfigMap`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Jika Anda ditampilkan `aws-auth``ConfigMap`, maka perbarui sesuai kebutuhan.

   1. Buka `ConfigMap` untuk mengedit.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Tambahkan `mapRoles` entri baru sesuai kebutuhan. Tetapkan `rolearn` nilai ke **NodeInstanceRole**nilai yang Anda rekam dalam prosedur sebelumnya.

      ```
      [...]
      data:
        mapRoles: |
          - rolearn: <ARN of instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
      [...]
      ```

   1. Simpan file dan keluar dari editor teks Anda.

1. Jika Anda menerima kesalahan yang menyatakan "`Error from server (NotFound): configmaps "aws-auth" not found`, maka terapkan stok`ConfigMap`.

   1. Unduh peta konfigurasi.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
      ```

   1. Dalam `aws-auth-cm.yaml` file, atur `rolearn` nilai ke **NodeInstanceRole**nilai yang Anda rekam dalam prosedur sebelumnya. Anda dapat melakukan ini dengan editor teks, atau dengan mengganti *my-node-instance-role* dan menjalankan perintah berikut:

      ```
      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
      ```

   1. Terapkan konfigurasi. Perintah ini mungkin memerlukan waktu beberapa menit untuk diselesaikan.

      ```
      kubectl apply -f aws-auth-cm.yaml
      ```

1. Perhatikan status simpul Anda dan tunggu sampai simpul mencapai Status `Ready`.

   ```
   kubectl get nodes --watch
   ```

   Masukkan `Ctrl`\$1`C` untuk kembali ke prompt shell.
**catatan**  
Jika Anda menerima kesalahan otorisasi atau jenis sumber daya, lihat [Tidak sah atau akses ditolak (`kubectl`)](troubleshooting.md#unauthorized) di topik pemecahan masalah.

   Jika node gagal bergabung dengan cluster, maka lihat [Simpul gagal untuk bergabung dengan klaster](troubleshooting.md#worker-node-fail) di chapter Troubleshooting.

1. (Hanya node GPU) Jika Anda memilih jenis instans GPU dan AMI akselerasi Amazon EKS yang dioptimalkan, Anda harus menerapkan [plugin perangkat NVIDIA untuk Kubernetes](https://github.com/NVIDIA/k8s-device-plugin) sebagai a di cluster Anda. DaemonSet Ganti *vX.X.X* dengan s-device-plugin versi [NVIDIA/K8](https://github.com/NVIDIA/k8s-device-plugin/releases) yang Anda inginkan sebelum menjalankan perintah berikut.

   ```
   kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
   ```

 **Langkah 3: Tindakan tambahan** 

1. (Opsional) Deploy [aplikasi sampel](sample-deployment.md) untuk menguji simpul klaster dan Linux Anda.

1. (Opsional) Jika kebijakan IAM terkelola **Amazoneks\$1CNI\$1Policy** (jika Anda memiliki klaster) atau *AmazonEKS\$1CNI\$1IPv6\$1Policy* (yang Anda [buat sendiri](cni-iam-role.md#cni-iam-role-create-ipv6-policy) jika Anda memiliki `IPv4` klaster) dilampirkan ke peran IAM [node Amazon EKS Anda, kami sarankan untuk menetapkannya ke peran IAM](create-node-role.md) yang Anda kaitkan ke akun layanan Kubernetes sebagai gantinya. `IPv6` `aws-node` Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata EC2 instans Amazon (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Buat node Bottlerocket yang dikelola sendiri
<a name="launch-node-bottlerocket"></a>

**catatan**  
Grup node terkelola mungkin menawarkan beberapa keuntungan untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md).

Topik ini menjelaskan cara meluncurkan grup Auto Scaling dari node [Bottlerocket](https://aws.amazon.com/bottlerocket/) yang mendaftar dengan cluster Amazon EKS Anda. Bottlerocket adalah sistem operasi open-source berbasis Linux AWS yang dapat Anda gunakan untuk menjalankan kontainer pada mesin virtual atau host bare metal. Setelah simpul bergabung dengan klaster, Anda dapat men-deploy aplikasi Kubernetes pada mereka. [Untuk informasi selengkapnya tentang Bottlerocket, lihat Menggunakan AMI [Bottlerocket dengan Amazon EKS aktif GitHub dan dukungan AMI](https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-EKS.md) Kustom dalam dokumentasi.](https://eksctl.io/usage/custom-ami-support/) `eksctl`

Untuk informasi tentang peningkatan di tempat, lihat Operator Pembaruan [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-update-operator) di. GitHub

**penting**  
Simpul Amazon EKS adalah instans Amazon EC2 standar, dan Anda dikenakan biaya berdasarkan harga instans Amazon EC2 normal. Untuk informasi selengkapnya, lihat [Harga Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Anda dapat meluncurkan node Bottlerocket di Amazon EKS cluster yang diperluas di AWS Outposts, tetapi Anda tidak dapat meluncurkannya di cluster lokal di Outposts. AWS Untuk informasi selengkapnya, lihat [Menerapkan Amazon EKS lokal dengan Outposts AWS](eks-outposts.md).
Anda dapat menerapkan ke instans Amazon EC2 `x86` dengan atau prosesor Arm. Namun, Anda tidak dapat menyebarkan ke instance yang memiliki chip Inferentia.
Bottlerocket kompatibel dengan. AWS CloudFormation Namun, tidak ada CloudFormation template resmi yang dapat disalin untuk menyebarkan node Bottlerocket untuk Amazon EKS.
Gambar bottlerocket tidak datang dengan server SSH atau shell. Anda dapat menggunakan metode out-of-band akses untuk memungkinkan SSH mengaktifkan wadah admin dan meneruskan beberapa langkah konfigurasi bootstrap dengan data pengguna. Untuk informasi lebih lanjut, lihat bagian ini di [bottlerocket](https://github.com/bottlerocket-os/bottlerocket) README.md di: GitHub  
 [Eksplorasi](https://github.com/bottlerocket-os/bottlerocket#exploration) 
 [Kontainer admin](https://github.com/bottlerocket-os/bottlerocket#admin-container) 
 [Pengaturan Kubernetes](https://github.com/bottlerocket-os/bottlerocket#kubernetes-settings) 

Prosedur ini membutuhkan `eksctl` versi `0.215.0` atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi. Catatan: Prosedur ini hanya berfungsi untuk cluster yang dibuat dengan. `eksctl`

1. Salin konten berikut ke perangkat Anda. Ganti *my-cluster* dengan nama klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat klaster. Ganti *ng-bottlerocket* dengan nama untuk grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Untuk menerapkan pada instance Arm, ganti *m5.large* dengan tipe instance Arm. Ganti *my-ec2-keypair-name* dengan nama key pair Amazon EC2 SSH yang dapat Anda gunakan untuk terhubung menggunakan SSH ke node Anda setelah diluncurkan. Jika Anda belum memiliki key pair Amazon EC2, Anda dapat membuatnya di. Konsol Manajemen AWS Untuk informasi selengkapnya, lihat [pasangan kunci Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon EC2*. Ganti semua nilai contoh yang tersisa dengan nilai Anda sendiri. Setelah Anda membuat penggantian, jalankan perintah yang dimodifikasi untuk membuat `bottlerocket.yaml` file.

   Jika menentukan jenis instans Arm Amazon EC2, tinjau pertimbangan [di Amazon EKS yang dioptimalkan Arm AMIs Amazon Linux sebelum menerapkan](eks-optimized-ami.md#arm-ami). Untuk petunjuk tentang cara menerapkan menggunakan AMI kustom, lihat [Membangun Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/BUILDING.md) dan dukungan [AMI GitHub ](https://eksctl.io/usage/custom-ami-support/) Kustom dalam dokumentasi. `eksctl` Untuk menerapkan grup node terkelola, terapkan AMI kustom menggunakan template peluncuran. Untuk informasi selengkapnya, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).
**penting**  
Untuk menyebarkan grup node ke subnet AWS Outposts, AWS Wavelength, atau AWS Local Zone, jangan lewatkan subnet AWS Outposts, Wavelength, atau Local Zone saat Anda membuat AWS cluster. AWS Anda harus menentukan subnet dalam contoh berikut. Untuk informasi selengkapnya lihat [Buat nodegroup dari file config](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) dan [Skema file config](https://eksctl.io/usage/schema/) di dalam dokumentasi `eksctl`. Ganti *region-code* dengan AWS Wilayah tempat klaster Anda berada.

   ```
   cat >bottlerocket.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-bottlerocket
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Bottlerocket
       ami: auto-ssm
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

1. Deploy simpul Anda dengan perintah berikut.

   ```
   eksctl create nodegroup --config-file=bottlerocket.yaml
   ```

   Contoh output adalah sebagai berikut.

   Beberapa baris adalah output sementara node dibuat. Salah satu baris terakhir output adalah baris contoh berikut.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Opsional) Buat [volume persisten](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) Kubernetes pada simpul Bottlerocket menggunakan [Plugin Amazon EBS CSI](https://github.com/kubernetes-sigs/aws-ebs-csi-driver). Driver Amazon EBS default bergantung pada alat sistem file yang tidak disertakan dengan Bottlerocket. Untuk informasi selengkapnya tentang cara membuat kelas penyimpanan menggunakan driver, lihat [Gunakan penyimpanan volume Kubernetes dengan Amazon EBS](ebs-csi.md).

1. (Opsional) Secara default, `kube-proxy` menetapkan parameter `nf_conntrack_max` kernel ke nilai default yang mungkin berbeda dari apa yang awalnya ditetapkan Bottlerocket saat boot. Untuk menjaga [pengaturan default](https://github.com/bottlerocket-os/bottlerocket-core-kit/blob/develop/packages/release/release-sysctl.conf) Bottlerocket, edit `kube-proxy` konfigurasi dengan perintah berikut.

   ```
   kubectl edit -n kube-system daemonset kube-proxy
   ```

   Tambahkan `--conntrack-max-per-core` dan `--conntrack-min` ke `kube-proxy` argumen yang ada dalam contoh berikut. Pengaturan `0` menyiratkan bahwa tidak ada perubahan.

   ```
         containers:
         - command:
           - kube-proxy
           - --v=2
           - --config=/var/lib/kube-proxy-config/config
           - --conntrack-max-per-core=0
           - --conntrack-min=0
   ```

1. (Opsional) Deploy [aplikasi sampel](sample-deployment.md) untuk menguji simpul Bottlerocket Anda.

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Buat node Microsoft Windows yang dikelola sendiri
<a name="launch-windows-workers"></a>

Topik ini menjelaskan cara meluncurkan grup Auto Scaling dari node Windows yang mendaftar dengan kluster Amazon EKS Anda. Setelah simpul bergabung dengan klaster, Anda dapat men-deploy aplikasi Kubernetes pada mereka.

**penting**  
Simpul Amazon EKS adalah instans Amazon EC2 standar, dan Anda dikenakan biaya berdasarkan harga instans Amazon EC2 normal. Untuk informasi selengkapnya, lihat [Harga Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Anda dapat meluncurkan node Windows di Amazon EKS cluster yang diperluas di AWS Outposts, tetapi Anda tidak dapat meluncurkannya di cluster AWS lokal di Outposts. Untuk informasi selengkapnya, lihat [Menerapkan Amazon EKS lokal dengan Outposts AWS](eks-outposts.md).

Aktifkan dukungan Windows untuk cluster Anda. Kami menyarankan Anda meninjau pertimbangan penting sebelum meluncurkan grup node Windows. Untuk informasi selengkapnya, lihat [Aktifkan dukungan Windows](windows-support.md#enable-windows-support).

Anda dapat meluncurkan node Windows yang dikelola sendiri dengan salah satu dari berikut ini:
+  [`eksctl`](#eksctl_create_windows_nodes) 
+  [Konsol Manajemen AWS](#console_create_windows_nodes) 

## `eksctl`
<a name="eksctl_create_windows_nodes"></a>

 **Luncurkan node Windows yang dikelola sendiri menggunakan `eksctl`** 

Prosedur ini mengharuskan Anda untuk sudah menginstal `eksctl`, dan bahwa `eksctl` versi yang Anda miliki setidaknya `0.215.0`. Anda dapat memeriksa versi Amazon Linux Anda dengan perintah berikut.

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

**catatan**  
Prosedur ini hanya bekerja untuk klaster yang dibuat dengan `eksctl`.

1. (Opsional) Jika kebijakan IAM terkelola **Amazoneks\$1CNI\$1Policy** (jika Anda memiliki klaster) atau *AmazonEKS\$1CNI\$1IPv6\$1Policy* (yang Anda [buat sendiri](cni-iam-role.md#cni-iam-role-create-ipv6-policy) jika Anda memiliki `IPv4` klaster) dilampirkan ke peran IAM [node Amazon EKS Anda, kami sarankan untuk menetapkannya ke peran IAM](create-node-role.md) yang Anda kaitkan ke akun layanan Kubernetes sebagai gantinya. `IPv6` `aws-node` Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).

1. Prosedur ini mengasumsikan bahwa Anda memiliki cluster yang ada. Jika Anda belum memiliki kluster Amazon EKS dan grup node Amazon Linux untuk menambahkan grup node Windows, kami sarankan Anda mengikuti[Memulai dengan Amazon EKS - `eksctl`](getting-started-eksctl.md). Panduan ini memberikan panduan lengkap tentang cara membuat cluster Amazon EKS dengan node Amazon Linux.

   Buat grup simpul Anda dengan perintah berikut. Ganti *region-code* dengan AWS Wilayah tempat cluster Anda berada. Ganti *my-cluster* dengan nama klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat cluster. Ganti *ng-windows* dengan nama untuk grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Anda dapat mengganti *2019* dengan `2022` menggunakan Windows Server 2022 atau `2025` menggunakan Windows Server 2025. Ganti sisa nilai contoh dengan nilai Anda sendiri.
**penting**  
Untuk menyebarkan grup node ke subnet AWS Outposts, AWS Wavelength, atau Local Zone, jangan lewatkan subnet AWS Outposts, Wavelength, AWS atau Local Zone saat Anda membuat cluster. Buat grup node dengan file konfigurasi, tentukan subnet AWS Outposts, Wavelength, atau Local Zone. Untuk informasi selengkapnya, lihat [Membuat nodegroup dari file konfigurasi dan skema](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) [file Config](https://eksctl.io/usage/schema/) dalam dokumentasi. `eksctl`

   ```
   eksctl create nodegroup \
       --region region-code \
       --cluster my-cluster \
       --name ng-windows \
       --node-type t2.large \
       --nodes 3 \
       --nodes-min 1 \
       --nodes-max 4 \
       --managed=false \
       --node-ami-family WindowsServer2019FullContainer
   ```
**catatan**  
Jika simpul gagal bergabung dengan klaster, lihat [Simpul gagal untuk bergabung dengan klaster](troubleshooting.md#worker-node-fail) dalam panduan Pemecahan Masalah.
Untuk melihat opsi yang tersedia untuk `eksctl` perintah, masukkan perintah berikut.  

     ```
     eksctl command -help
     ```

   Contoh output adalah sebagai berikut. Beberapa baris adalah output sementara node dibuat. Salah satu baris terakhir dari output adalah baris contoh berikutnya.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Opsional) Deploy [aplikasi sampel](sample-deployment.md) untuk menguji simpul klaster dan Windows Anda.

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

## Konsol Manajemen AWS
<a name="console_create_windows_nodes"></a>

 **Prasyarat** 
+ Klaster Amazon EKS yang sudah ada dan grup simpul Linux. Jika Anda tidak memiliki sumber daya ini, kami sarankan Anda membuatnya menggunakan salah satu panduan kami di[Memulai dengan Amazon EKS](getting-started.md). Panduan ini menjelaskan cara membuat cluster Amazon EKS dengan node Linux.
+ Grup VPC dan keamanan yang ada yang memenuhi persyaratan untuk klaster Amazon EKS. Untuk informasi selengkapnya, lihat [Lihat persyaratan jaringan Amazon EKS untuk VPC dan subnet](network-reqs.md) dan [Lihat persyaratan grup keamanan Amazon EKS untuk cluster](sec-group-reqs.md). Panduan dalam [Memulai dengan Amazon EKS](getting-started.md) membuat VPC yang memenuhi persyaratan. Atau, Anda juga dapat mengikuti [Buat VPC Amazon untuk kluster Amazon EKS](creating-a-vpc.md) Anda untuk membuatnya secara manual.
+ Cluster Amazon EKS yang ada yang menggunakan VPC dan grup keamanan yang memenuhi persyaratan kluster Amazon EKS. Untuk informasi selengkapnya, lihat [Buat kluster Amazon EKS](create-cluster.md). Jika Anda memiliki subnet di AWS Wilayah di mana Anda mengaktifkan AWS Outposts, AWS Wavelength, atau AWS Local Zones, subnet tersebut tidak boleh diteruskan saat Anda membuat cluster.

 **Langkah 1: Luncurkan node Windows yang dikelola sendiri menggunakan Konsol Manajemen AWS ** 

1. Tunggu status klaster Anda ditampilkan sebagai `ACTIVE`. Jika Anda meluncurkan node sebelum cluster aktif, node gagal mendaftar dengan cluster dan Anda perlu meluncurkannya kembali.

1. Buka [konsol AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/) 

1. Pilih **Buat tumpukan**.

1. Untuk **Tentukan templat**, pilih **Amazon S3 URL**.

1. Salin URL berikut dan tempel ke URL **Amazon S3**.

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml
   ```

1. Pilih **Berikutnya** dua kali.

1. Pada halaman **Quick create stack**, masukkan parameter berikut yang sesuai:
   +  **Nama tumpukan**: Pilih nama tumpukan untuk AWS CloudFormation tumpukan Anda. Misalnya, Anda bisa menyebutnya`my-cluster-nodes`.
   +  **ClusterName**: Masukkan nama yang Anda gunakan saat membuat cluster Amazon EKS Anda.
**penting**  
Nama ini harus sama persis dengan nama yang Anda gunakan di [Langkah 1: Buat cluster Amazon EKS Anda](getting-started-console.md#eks-create-cluster). Jika tidak, node Anda tidak dapat bergabung dengan cluster.
   +  **ClusterControlPlaneSecurityGroup**: Pilih grup keamanan dari AWS CloudFormation output yang Anda hasilkan saat membuat [VPC](creating-a-vpc.md) Anda. Langkah-langkah berikut menunjukkan satu metode untuk mengambil grup yang berlaku.

     1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

     1. Pilih nama cluster.

     1. Pilih tab **Jaringan**.

     1. Gunakan nilai **grup keamanan tambahan** sebagai referensi saat memilih dari daftar **ClusterControlPlaneSecurityGroup**tarik-turun.
   +  **NodeGroupName**: Masukkan nama untuk grup node Anda. Nama ini dapat digunakan nanti untuk mengidentifikasi grup node Auto Scaling yang dibuat untuk node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa.
   +  **NodeAutoScalingGroupMinSize**: Masukkan jumlah minimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
   +  **NodeAutoScalingGroupDesiredCapacity**: Masukkan jumlah node yang diinginkan untuk diskalakan saat tumpukan Anda dibuat.
   +  **NodeAutoScalingGroupMaxSize**: Masukkan jumlah maksimum node yang dapat diskalakan oleh grup Auto Scaling node Anda.
   +  **NodeInstanceType**: Pilih jenis instance untuk node Anda. Untuk informasi selengkapnya, lihat [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md).
**catatan**  
[Tipe instans yang didukung untuk versi terbaru [plugin Amazon VPC CNI untuk Kubernetes tercantum di vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s) on.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) GitHub Anda mungkin perlu memperbarui versi CNI untuk menggunakan jenis instans terbaru yang didukung. Untuk informasi selengkapnya, lihat [Tetapkan IPs ke Pod dengan Amazon VPC CNI](managing-vpc-cni.md).
   +  **NodeImageIdSSMParam**: Diisi sebelumnya dengan parameter Amazon EC2 Systems Manager dari ID AMI Windows Core Windows Core Amazon EKS yang direkomendasikan saat ini. Untuk menggunakan versi lengkap Windows, ganti *Core* dengan`Full`.
   +  **NodeImageId**: (Opsional) Jika Anda menggunakan AMI kustom Anda sendiri (bukan AMI yang dioptimalkan Amazon EKS), masukkan ID AMI node untuk AWS Wilayah Anda. Jika Anda menentukan nilai untuk bidang ini, itu akan menggantikan nilai apa pun di **NodeImageIdSSMParam**bidang.
   +  **NodeVolumeSize**: Tentukan ukuran volume root untuk node Anda, di GiB.
   +  **KeyName**: Masukkan nama key pair Amazon EC2 SSH yang dapat Anda gunakan untuk terhubung menggunakan SSH ke node Anda setelah diluncurkan. Jika Anda belum memiliki key pair Amazon EC2, Anda dapat membuatnya di. Konsol Manajemen AWS Untuk informasi selengkapnya, lihat [pasangan kunci Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html) di Panduan Pengguna *Amazon EC2*.
**catatan**  
Jika Anda tidak menyediakan key pair di sini, AWS CloudFormation tumpukan gagal dibuat.
   +  **BootstrapArguments**: Tentukan argumen opsional apa pun untuk diteruskan ke skrip bootstrap simpul, seperti `kubelet` argumen tambahan yang digunakan`-KubeletExtraArgs`.
   +  **Nonaktifkan IMDSv1**: Secara default, setiap node mendukung Layanan Metadata Instans Versi 1 (IMDSv1) dan. IMDSv2 Anda dapat menonaktifkan IMDSv1. Untuk mencegah penggunaan node dan Pod future dalam grup node MDSv1, setel **Disable IMDSv1** ke **true**. Untuk informasi selengkapnya tentang IMDS, lihat [Mengonfigurasi layanan metadata instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).
   +  **VpcId**: Pilih ID untuk [VPC](creating-a-vpc.md) yang Anda buat.
   +  **NodeSecurityGroups**: Pilih grup keamanan yang dibuat untuk grup node Linux Anda saat Anda membuat [VPC](creating-a-vpc.md) Anda. Jika node Linux Anda memiliki lebih dari satu grup keamanan yang melekat padanya, tentukan semuanya. Ini untuk, misalnya, jika grup node Linux dibuat dengan`eksctl`.
   +  **Subnet**: Pilih subnet yang Anda buat. Jika Anda membuat VPC menggunakan langkah-langkah dalam [Membuat VPC Amazon untuk kluster Amazon EKS Anda](creating-a-vpc.md), tentukan hanya subnet pribadi dalam VPC untuk node Anda untuk diluncurkan.
**penting**  
Jika salah satu subnet adalah subnet publik, maka mereka harus mengaktifkan pengaturan tugas alamat IP publik otomatis. Jika pengaturan tidak diaktifkan untuk subnet publik, maka node apa pun yang Anda terapkan ke subnet publik tersebut tidak akan diberi alamat IP publik dan tidak akan dapat berkomunikasi dengan cluster atau layanan lainnya. AWS Jika subnet digunakan sebelum 26 Maret 2020 menggunakan salah satu [templat AWS CloudFormation VPC Amazon](creating-a-vpc.md) EKS, atau dengan menggunakan`eksctl`, maka penetapan alamat IP publik otomatis dinonaktifkan untuk subnet publik. Untuk informasi tentang cara mengaktifkan penetapan alamat IP publik untuk subnet, lihat [Memodifikasi atribut IPv4 pengalamatan publik](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) untuk subnet Anda. Jika node dikerahkan ke subnet pribadi, maka node dapat berkomunikasi dengan cluster dan AWS layanan lainnya melalui gateway NAT.
Jika subnet tidak memiliki akses internet, pastikan Anda mengetahui pertimbangan dan langkah tambahan dalam [Menyebarkan kluster pribadi dengan](private-clusters.md) akses internet terbatas.
Jika Anda memilih subnet AWS Outposts, Wavelength, atau Local Zone, maka subnet tidak boleh diteruskan saat Anda membuat cluster.

1. Nyatakan bahwa tumpukan dapat membuat sumber daya IAM, kemudian pilih **Buat tumpukan**.

1. Setelah tumpukan Anda selesai dibuat, pilih tumpukan di konsol dan pilih **Outputs**.

1. Rekam **NodeInstanceRole**untuk grup node yang telah dibuat. Anda memerlukan ini saat mengonfigurasi simpul Amazon EKS Windows Anda.

 **Langkah 2: Aktifkan node untuk bergabung dengan cluster Anda** 

1. Periksa untuk melihat apakah Anda sudah memiliki `aws-auth``ConfigMap`.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Jika Anda ditampilkan `aws-auth``ConfigMap`, maka perbarui sesuai kebutuhan.

   1. Buka `ConfigMap` untuk mengedit.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Tambahkan `mapRoles` entri baru sesuai kebutuhan. Tetapkan `rolearn` nilai ke **NodeInstanceRole**nilai yang Anda rekam dalam prosedur sebelumnya.

      ```
      [...]
      data:
        mapRoles: |
      - rolearn: <ARN of linux instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
          - rolearn: <ARN of windows instance role (not instance profile)>
            username: system:node:{{EC2PrivateDNSName}}
            groups:
              - system:bootstrappers
              - system:nodes
              - eks:kube-proxy-windows
      [...]
      ```

   1. Simpan file dan keluar dari editor teks Anda.

1. Jika Anda menerima kesalahan yang menyatakan "`Error from server (NotFound): configmaps "aws-auth" not found`, maka terapkan stok`ConfigMap`.

   1. Unduh peta konfigurasi.

      ```
      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
      ```

   1. Dalam `aws-auth-cm-windows.yaml` file, atur `rolearn` nilai ke nilai yang berlaku **NodeInstanceRole**yang Anda rekam dalam prosedur sebelumnya. Anda dapat melakukan ini dengan editor teks, atau dengan mengganti nilai contoh dan menjalankan perintah berikut:

      ```
      sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \
          -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yaml
      ```
**penting**  
Jangan mengubah baris lain dalam file ini.
Jangan gunakan peran IAM yang sama untuk node Windows dan Linux.

   1. Terapkan konfigurasi. Perintah ini mungkin memakan waktu beberapa menit untuk menyelesaikannya.

      ```
      kubectl apply -f aws-auth-cm-windows.yaml
      ```

1. Perhatikan status simpul Anda dan tunggu sampai simpul mencapai Status `Ready`.

   ```
   kubectl get nodes --watch
   ```

   Masukkan `Ctrl`\$1`C` untuk kembali ke prompt shell.
**catatan**  
Jika Anda menerima kesalahan otorisasi atau jenis sumber daya, lihat [Tidak sah atau akses ditolak (`kubectl`)](troubleshooting.md#unauthorized) di topik pemecahan masalah.

   Jika node gagal bergabung dengan cluster, maka lihat [Simpul gagal untuk bergabung dengan klaster](troubleshooting.md#worker-node-fail) di chapter Troubleshooting.

 **Langkah 3: Tindakan tambahan** 

1. (Opsional) Deploy [aplikasi sampel](sample-deployment.md) untuk menguji simpul klaster dan Windows Anda.

1. (Opsional) Jika kebijakan IAM terkelola **Amazoneks\$1CNI\$1Policy** (jika Anda memiliki klaster) atau *AmazonEKS\$1CNI\$1IPv6\$1Policy* (yang Anda [buat sendiri](cni-iam-role.md#cni-iam-role-create-ipv6-policy) jika Anda memiliki `IPv4` klaster) dilampirkan ke peran IAM [node Amazon EKS Anda, kami sarankan untuk menetapkannya ke peran IAM](create-node-role.md) yang Anda kaitkan ke akun layanan Kubernetes sebagai gantinya. `IPv6` `aws-node` Untuk informasi selengkapnya, lihat [Konfigurasikan plugin Amazon VPC CNI untuk menggunakan IRSA](cni-iam-role.md).

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Buat node Linux Ubuntu yang dikelola sendiri
<a name="launch-node-ubuntu"></a>

**catatan**  
Grup node terkelola mungkin menawarkan beberapa keuntungan untuk kasus penggunaan Anda. Untuk informasi selengkapnya, lihat [Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md).

Topik ini menjelaskan cara meluncurkan grup Auto Scaling [Ubuntu di Amazon Elastic Kubernetes Service (EKS) atau Ubuntu Pro di node Amazon Elastic Kubernetes Service](https://cloud-images.ubuntu.com/aws-eks/) [(EKS) yang mendaftar dengan cluster Amazon EKS](https://ubuntu.com/blog/ubuntu-pro-for-eks-is-now-generally-available) Anda. Ubuntu dan Ubuntu Pro untuk EKS didasarkan pada Ubuntu Minimal LTS resmi, termasuk AWS kernel khusus yang dikembangkan bersama AWS, dan telah dibangun khusus untuk EKS. Ubuntu Pro menambahkan cakupan keamanan tambahan dengan mendukung periode dukungan EKS yang diperpanjang, livepatch kernel, kepatuhan FIPS, dan kemampuan untuk menjalankan kontainer Pro tanpa batas.

Setelah node bergabung dengan cluster, Anda dapat menyebarkan aplikasi kontainer ke mereka. Untuk informasi selengkapnya, kunjungi dokumentasi untuk [Ubuntu on AWS](https://documentation.ubuntu.com/aws/en/latest/) dan [dukungan Custom AMI](https://eksctl.io/usage/custom-ami-support/) dalam `eksctl` dokumentasi.

**penting**  
Simpul Amazon EKS adalah instans Amazon EC2 standar, dan Anda dikenakan biaya berdasarkan harga instans Amazon EC2 normal. Untuk informasi selengkapnya, lihat [Harga Amazon EC2](https://aws.amazon.com/ec2/pricing/).
Anda dapat meluncurkan node Ubuntu di Amazon EKS cluster yang diperluas di AWS Outposts, tetapi Anda tidak dapat meluncurkannya di cluster AWS lokal di Outposts. Untuk informasi selengkapnya, lihat [Menerapkan Amazon EKS lokal dengan Outposts AWS](eks-outposts.md).
Anda dapat menerapkan ke instans Amazon EC2 `x86` dengan atau prosesor Arm. Namun, contoh yang memiliki chip Inferentia mungkin perlu menginstal [Neuron SDK](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/) terlebih dahulu.

Prosedur ini membutuhkan `eksctl` versi `0.215.0` atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi. Catatan: Prosedur ini hanya berfungsi untuk cluster yang dibuat dengan. `eksctl`

1. Salin konten berikut ke perangkat Anda. Ganti `my-cluster` dengan nama klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfabet dan tidak boleh lebih dari 100 karakter. Ganti `ng-ubuntu` dengan nama untuk grup node Anda. Nama grup node tidak boleh lebih dari 63 karakter. Itu harus dimulai dengan huruf atau digit, tetapi juga dapat menyertakan tanda hubung dan garis bawah untuk karakter yang tersisa. Untuk menerapkan pada instance Arm, ganti `m5.large` dengan tipe instance Arm. Ganti `my-ec2-keypair-name` dengan nama key pair Amazon EC2 SSH yang dapat Anda gunakan untuk terhubung menggunakan SSH ke node Anda setelah diluncurkan. Jika Anda belum memiliki key pair Amazon EC2, Anda dapat membuatnya di. Konsol Manajemen AWS Untuk informasi selengkapnya, lihat [pasangan kunci Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) di Panduan Pengguna Amazon EC2. Ganti semua nilai contoh yang tersisa dengan nilai Anda sendiri. Setelah Anda membuat penggantian, jalankan perintah yang dimodifikasi untuk membuat `ubuntu.yaml` file.
**penting**  
Untuk menyebarkan grup node ke subnet AWS Outposts, AWS Wavelength, atau AWS Local Zone, jangan lewatkan subnet AWS Outposts, Wavelength, atau Local Zone saat Anda membuat AWS cluster. AWS Anda harus menentukan subnet dalam contoh berikut. Untuk informasi selengkapnya lihat [Buat nodegroup dari file config](https://eksctl.io/usage/nodegroups/#creating-a-nodegroup-from-a-config-file) dan [Skema file config](https://eksctl.io/usage/schema/) di dalam dokumentasi `eksctl`. Ganti *region-code* dengan AWS Wilayah tempat klaster Anda berada.

   ```
   cat >ubuntu.yaml <<EOF
   ---
   apiVersion: eksctl.io/v1alpha5
   kind: ClusterConfig
   
   metadata:
     name: my-cluster
     region: region-code
     version: '1.35'
   
   iam:
     withOIDC: true
   
   nodeGroups:
     - name: ng-ubuntu
       instanceType: m5.large
       desiredCapacity: 3
       amiFamily: Ubuntu2204
       iam:
          attachPolicyARNs:
             - arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy
             - arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
             - arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
             - arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy
       ssh:
           allow: true
           publicKeyName: my-ec2-keypair-name
   EOF
   ```

   Untuk membuat grup node Ubuntu Pro, cukup ubah `amiFamily` nilainya menjadi`UbuntuPro2204`.

1. Deploy simpul Anda dengan perintah berikut.

   ```
   eksctl create nodegroup --config-file=ubuntu.yaml
   ```

   Contoh output adalah sebagai berikut.

   Beberapa baris adalah output sementara node dibuat. Salah satu baris terakhir dari output adalah baris contoh berikutnya.

   ```
   [✔]  created 1 nodegroup(s) in cluster "my-cluster"
   ```

1. (Opsional) Menyebarkan [aplikasi sampel](sample-deployment.md) untuk menguji node Ubuntu Anda.

1. Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

   Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

# Perbarui node yang dikelola sendiri untuk klaster Anda
<a name="update-workers"></a>

Saat AMI Amazon EKS baru yang dioptimalkan dirilis, pertimbangkan untuk mengganti node di grup node yang dikelola sendiri dengan AMI baru. Demikian juga, jika Anda telah memperbarui versi Kubernetes untuk cluster Amazon EKS Anda, perbarui node untuk menggunakan node dengan versi Kubernetes yang sama.

**penting**  
Topik ini mencakup pembaruan simpul untuk simpul yang dikelola sendiri. Jika Anda menggunakan [grup node terkelola](managed-node-groups.md), lihat[Memperbarui grup node terkelola untuk klaster Anda](update-managed-node-group.md).

Ada dua cara dasar untuk memperbarui grup simpul yang dikelola sendiri di klaster Anda untuk menggunakan AMI baru:

 **[Migrasikan aplikasi ke grup node baru](migrate-stack.md)**   
Buat grup node baru dan migrasi Pod Anda ke grup tersebut. Migrasi ke grup node baru lebih anggun daripada sekadar memperbarui ID AMI di tumpukan yang ada AWS CloudFormation . Ini karena proses migrasi [menodai](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) grup node lama `NoSchedule` dan menguras node setelah tumpukan baru siap menerima beban kerja Pod yang ada.

 **[Perbarui tumpukan AWS CloudFormation simpul](update-stack.md)**   
Perbarui AWS CloudFormation tumpukan untuk grup node yang ada untuk menggunakan AMI baru. Metode ini tidak didukung untuk grup node yang dibuat dengan`eksctl`.

# Migrasikan aplikasi ke grup node baru
<a name="migrate-stack"></a>

Topik ini menjelaskan bagaimana Anda dapat membuat grup node baru, dengan anggun memigrasikan aplikasi yang ada ke grup baru, dan menghapus grup node lama dari cluster Anda. Anda dapat bermigrasi ke grup simpul baru menggunakan `eksctl` atau Konsol Manajemen AWS.
+  [`eksctl`](#eksctl_migrate_apps) 
+  [Konsol Manajemen AWS dan AWS CLI](#console_migrate_apps) 

## `eksctl`
<a name="eksctl_migrate_apps"></a>

 **Migrasikan aplikasi Anda ke grup node baru dengan `eksctl`** 

Untuk informasi selengkapnya tentang penggunaan eksctl untuk migrasi, lihat [Nodegroup tidak dikelola](https://eksctl.io/usage/nodegroup-unmanaged/) dalam dokumentasi. `eksctl`

Prosedur ini membutuhkan `eksctl` versi `0.215.0` atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

**catatan**  
Prosedur ini hanya bekerja untuk grup klaster dan simpul yang dibuat dengan `eksctl`.

1. Ambil nama grup node yang ada, ganti *my-cluster* dengan nama cluster Anda.

   ```
   eksctl get nodegroups --cluster=my-cluster
   ```

   Contoh output adalah sebagai berikut.

   ```
   CLUSTER      NODEGROUP          CREATED               MIN SIZE      MAX SIZE     DESIRED CAPACITY     INSTANCE TYPE     IMAGE ID
   default      standard-nodes   2019-05-01T22:26:58Z  1             4            3                    t3.medium         ami-05a71d034119ffc12
   ```

1. Luncurkan grup node baru `eksctl` dengan perintah berikut. Dalam perintah, ganti setiap *example value* dengan nilai Anda sendiri. Nomor versi tidak boleh lebih lambat dari versi Kubernetes untuk pesawat kontrol Anda. Selain itu, tidak boleh lebih dari dua versi minor lebih awal dari versi Kubernetes untuk pesawat kontrol Anda. Kami menyarankan Anda menggunakan versi yang sama dengan pesawat kontrol Anda.

   Sebaiknya blokir akses Pod ke IMDS jika kondisi berikut benar:
   + Anda berencana untuk menetapkan peran IAM ke semua akun layanan Kubernetes Anda sehingga Pod hanya memiliki izin minimum yang mereka butuhkan.
   + Tidak ada Pod dalam klaster yang memerlukan akses ke layanan metadata instans Amazon EC2 (IMDS) karena alasan lain, seperti mengambil Region saat ini. AWS 

     Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

     Untuk memblokir akses Pod ke IMDS, tambahkan `--disable-pod-imds` opsi ke perintah berikut.
**catatan**  
Untuk lebih banyak flag yang tersedia dan deskripsinya, lihat https://eksctl.io/.

   ```
   eksctl create nodegroup \
     --cluster my-cluster \
     --version 1.35 \
     --name standard-nodes-new \
     --node-type t3.medium \
     --nodes 3 \
     --nodes-min 1 \
     --nodes-max 4 \
     --managed=false
   ```

1. Setelah perintah sebelumnya selesai, verifikasi bahwa semua simpul Anda telah mencapai status `Ready` dengan perintah berikut:

   ```
   kubectl get nodes
   ```

1. Hapus grup node asli dengan perintah berikut. Dalam perintah, ganti setiap *example value* dengan nama grup cluster dan node Anda:

   ```
   eksctl delete nodegroup --cluster my-cluster --name standard-nodes-old
   ```

## Konsol Manajemen AWS dan AWS CLI
<a name="console_migrate_apps"></a>

 **Migrasikan aplikasi Anda ke grup node baru dengan Konsol Manajemen AWS dan CLI AWS ** 

1. Luncurkan grup node baru dengan mengikuti langkah-langkah yang diuraikan dalam [Buat node Amazon Linux yang dikelola sendiri](launch-workers.md).

1. Setelah tumpukan Anda selesai dibuat, pilih tumpukan di konsol dan pilih **Outputs**.

1.  Rekam **NodeInstanceRole**untuk grup node yang telah dibuat. Anda memerlukan ini untuk menambahkan simpul Amazon EKS baru ke klaster Anda.
**catatan**  
Jika Anda melampirkan kebijakan IAM tambahan ke peran IAM grup node lama Anda, lampirkan kebijakan yang sama tersebut ke peran IAM grup node baru Anda untuk mempertahankan fungsionalitas tersebut pada grup baru. Ini berlaku bagi Anda jika Anda menambahkan izin untuk [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), misalnya.

1. Perbarui grup keamanan untuk kedua grup simpul sehingga mereka dapat berkomunikasi satu sama lain. Untuk informasi selengkapnya, lihat [Lihat persyaratan grup keamanan Amazon EKS untuk cluster](sec-group-reqs.md).

   1. Rekam grup keamanan IDs untuk kedua grup node. Ini ditampilkan sebagai **NodeSecurityGroup**nilai dalam output AWS CloudFormation stack.

      Anda dapat menggunakan perintah AWS CLI berikut untuk mendapatkan grup keamanan IDs dari nama tumpukan. Dalam perintah ini, `oldNodes` adalah nama AWS CloudFormation tumpukan untuk tumpukan node lama Anda, dan `newNodes` merupakan nama tumpukan tempat Anda bermigrasi. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      ```

   1. Tambahkan aturan masuk ke setiap grup keamanan simpul sehingga mereka menerima lalu lintas dari satu sama lain.

      Perintah AWS CLI berikut menambahkan aturan masuk ke setiap grup keamanan yang memungkinkan semua lalu lintas pada semua protokol dari grup keamanan lainnya. Konfigurasi ini memungkinkan Pod di setiap grup node untuk berkomunikasi satu sama lain saat Anda memigrasikan beban kerja Anda ke grup baru.

      ```
      aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 authorize-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

1. Edit configmap `aws-auth` untuk memetakan peran instans simpul baru di RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Tambahkan entri `mapRoles` baru untuk grup simpul baru.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: ARN of instance role (not instance profile)
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
   ```

   Ganti *ARN of instance role (not instance profile)* cuplikan dengan **NodeInstanceRole**nilai yang Anda rekam pada langkah [sebelumnya](#node-instance-role-step). Kemudian, simpan dan tutup file untuk menerapkan configmap yang diperbarui.

1. Perhatikan status simpul Anda dan tunggu simpul baru Anda bergabung dengan klaster dan mencapai status `Ready` tersebut.

   ```
   kubectl get nodes --watch
   ```

1. (Opsional) Jika Anda menggunakan [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), turunkan skala deployment ke nol (0) replika untuk menghindari tindakan penskalaan yang bertentangan.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1. Gunakan perintah berikut untuk mencemari setiap node yang ingin Anda hapus. `NoSchedule` Hal ini agar Pod baru tidak dijadwalkan atau dijadwal ulang pada node yang Anda ganti. Untuk informasi selengkapnya, lihat [Taints and Tolerations dalam dokumentasi](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) Kubernetes.

   ```
   kubectl taint nodes node_name key=value:NoSchedule
   ```

   Jika Anda memutakhirkan node Anda ke versi Kubernetes baru, Anda dapat mengidentifikasi dan mencemari semua node dari versi Kubernetes tertentu (dalam hal ini,) dengan cuplikan kode berikut. `1.33` Nomor versi tidak boleh lebih lambat dari versi Kubernetes dari pesawat kontrol Anda. Ini juga tidak boleh lebih dari dua versi minor lebih awal dari versi Kubernetes dari pesawat kontrol Anda. Kami menyarankan Anda menggunakan versi yang sama dengan pesawat kontrol Anda.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Tainting $node"
       kubectl taint nodes $node key=value:NoSchedule
   done
   ```

1.  Tentukan penyedia DNS cluster Anda.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   Contoh output adalah sebagai berikut. Cluster ini menggunakan CoreDNS untuk resolusi DNS, tetapi klaster Anda dapat kembali sebagai gantinya): `kube-dns`

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Jika deployment Anda saat ini berjalan kurang dari dua replika, skalakan deployment menjadi dua replika. Ganti *coredns* dengan `kubedns` jika output perintah Anda sebelumnya mengembalikannya.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Keluarkan setiap simpul yang Anda ingin hapus dari klaster Anda dengan perintah berikut:

   ```
   kubectl drain node_name --ignore-daemonsets --delete-local-data
   ```

   Jika Anda memutakhirkan node Anda ke versi Kubernetes baru, identifikasi dan tiriskan semua node dari versi Kubernetes tertentu (dalam hal ini,*1.33*) dengan cuplikan kode berikut.

   ```
   K8S_VERSION=1.33
   nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
   for node in ${nodes[@]}
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-local-data
   done
   ```

1. Setelah node lama Anda selesai menguras, cabut aturan masuk grup keamanan yang Anda otorisasi sebelumnya. Kemudian, hapus AWS CloudFormation tumpukan untuk mengakhiri instance.
**catatan**  
Jika Anda melampirkan kebijakan IAM tambahan apa pun ke peran IAM grup node lama Anda, seperti menambahkan izin untuk [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler), lepaskan kebijakan tambahan tersebut dari peran tersebut sebelum Anda dapat menghapus tumpukan Anda. AWS CloudFormation 

   1. Cabut aturan masuk yang Anda buat untuk grup keamanan node Anda sebelumnya. Dalam perintah ini, `oldNodes` adalah nama AWS CloudFormation tumpukan untuk tumpukan node lama Anda, dan `newNodes` merupakan nama tumpukan tempat Anda bermigrasi.

      ```
      oldNodes="old_node_CFN_stack_name"
      newNodes="new_node_CFN_stack_name"
      
      oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \
      --query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \
      --output text)
      aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \
      --source-group $newSecGroup --protocol -1
      aws ec2 revoke-security-group-ingress --group-id $newSecGroup \
      --source-group $oldSecGroup --protocol -1
      ```

   1. Buka [konsol AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/).

   1. Pilih tumpukan simpul lama Anda.

   1. Pilih **Hapus**.

   1. Di kotak dialog **Hapus tumpukan** konfirmasi, pilih **Hapus tumpukan**.

1. Edit `aws-auth` configmap untuk menghapus peran instans simpul lama dari RBAC.

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   Hapus `mapRoles` entri untuk grup simpul lama.

   ```
   apiVersion: v1
   data:
     mapRoles: |
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes
       - rolearn: arn:aws: iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5
         username: system:node:{{EC2PrivateDNSName}}
         groups:
           - system:bootstrappers
           - system:nodes>
   ```

   Simpan dan tutup file untuk menerapkan configmap yang diperbarui.

1. (Opsional) Jika Anda menggunakan [Autoscaler Klaster](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) Kubernetes, skalakan kembali deployment ke satu replika.
**catatan**  
Anda juga harus menandai grup Auto Scaling baru Anda dengan tepat (misalnya,`k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster`) dan memperbarui perintah untuk penerapan Cluster Autoscaler Anda untuk menunjuk ke grup Auto Scaling yang baru ditandai. Untuk informasi selengkapnya, lihat [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/cluster-autoscaler-release-1.3/cluster-autoscaler/cloudprovider/aws) di. AWS

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Opsional) Verifikasi bahwa Anda menggunakan versi terbaru dari [plugin Amazon VPC CNI](https://github.com/aws/amazon-vpc-cni-k8s) untuk Kubernetes. Anda mungkin perlu memperbarui versi CNI untuk menggunakan jenis instans terbaru yang didukung. Untuk informasi selengkapnya, lihat [Tetapkan IPs ke Pod dengan Amazon VPC CNI](managing-vpc-cni.md).

1. Jika klaster Anda menggunakan `kube-dns` resolusi DNS (lihat[[migrate-determine-dns-step]](#migrate-determine-dns-step)), skalakan `kube-dns` penerapan ke satu replika.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

# Perbarui tumpukan AWS CloudFormation simpul
<a name="update-stack"></a>

Topik ini menjelaskan bagaimana Anda dapat memperbarui tumpukan node yang AWS CloudFormation dikelola sendiri dengan AMI baru. Anda dapat menggunakan prosedur ini untuk memperbarui node Anda ke versi baru Kubernetes setelah pembaruan klaster. Jika tidak, Anda dapat memperbarui ke AMI Amazon EKS terbaru yang dioptimalkan untuk versi Kubernetes yang ada.

**penting**  
Topik ini mencakup pembaruan simpul untuk simpul yang dikelola sendiri. Untuk informasi tentang penggunaan [Simplify node lifecycle dengan grup node terkelola](managed-node-groups.md), lihat. [Memperbarui grup node terkelola untuk klaster Anda](update-managed-node-group.md)

 AWS CloudFormation Template node Amazon EKS default terbaru dikonfigurasi untuk meluncurkan instance dengan AMI baru ke dalam klaster Anda sebelum menghapus yang lama, satu per satu. Konfigurasi ini memastikan bahwa Anda selalu memiliki jumlah instans aktif yang diinginkan grup Auto Scaling di klaster selama pembaruan bergulir.

**catatan**  
Metode ini tidak didukung untuk grup simpul yang dibuat dengan`eksctl`. Jika Anda membuat grup klaster atau simpul dengan `eksctl`, lihat [Migrasikan aplikasi ke grup node baru](migrate-stack.md).

1. Tentukan penyedia DNS untuk klaster Anda.

   ```
   kubectl get deployments -l k8s-app=kube-dns -n kube-system
   ```

   Contoh output adalah sebagai berikut. Cluster ini menggunakan CoreDNS untuk resolusi DNS, tetapi klaster Anda mungkin kembali. `kube-dns` Output Anda mungkin terlihat berbeda tergantung pada versi `kubectl` yang Anda gunakan.

   ```
   NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
   coredns   1         1         1            1           31m
   ```

1. Jika deployment Anda saat ini berjalan kurang dari dua replika, skalakan deployment menjadi dua replika. Ganti *coredns* dengan `kube-dns` jika output perintah Anda sebelumnya mengembalikannya.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. (Opsional) Jika Anda menggunakan Kubernetes [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md), turunkan skala deployment ke nol (0) replika untuk menghindari tindakan penskalaan yang bertentangan.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system
   ```

1.  Tentukan jenis instance dan jumlah instans yang diinginkan dari grup node Anda saat ini. Anda memasukkan nilai-nilai ini nanti ketika Anda memperbarui AWS CloudFormation template untuk grup.

   1. Buka konsol Amazon EC2 di. https://console.aws.amazon.com/ec2/

   1. Di panel navigasi kiri, pilih **Luncurkan Konfigurasi**, dan catat jenis instans untuk konfigurasi peluncuran node yang ada.

   1. **Di panel navigasi kiri, pilih Grup **Auto Scaling**, dan catat jumlah instans yang diinginkan untuk grup Auto Scaling node yang ada.**

1. Buka [konsol AWS CloudFormation ](https://console.aws.amazon.com/cloudformation/).

1. Pilih tumpukan grup simpul Anda, dan kemudian pilih **Perbarui**.

1. Pilih **Ganti template saat ini** dan pilih **URL Amazon S3**.

1. Untuk **URL Amazon S3**, rekatkan URL berikut ke area teks untuk memastikan bahwa Anda menggunakan template node AWS CloudFormation versi terbaru. Kemudian, pilih **Berikutnya**:

   ```
   https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
   ```

1. Pada halaman **Menentukan detail tumpukan**, isilah parameter berikut dan pilih **Selanjutnya**:
   +  **NodeAutoScalingGroupDesiredCapacity**— Masukkan jumlah instans yang diinginkan yang Anda rekam pada [langkah sebelumnya](#existing-worker-settings-step). Atau, masukkan jumlah node baru yang Anda inginkan untuk diskalakan saat tumpukan Anda diperbarui.
   +  **NodeAutoScalingGroupMaxSize**— Masukkan jumlah maksimum node yang dapat diskalakan oleh grup Auto Scaling node Anda. Nilai ini harus setidaknya satu node lebih dari kapasitas yang Anda inginkan. Ini agar Anda dapat melakukan pembaruan bergulir dari node Anda tanpa mengurangi jumlah node Anda selama pembaruan.
   +  **NodeInstanceType**— Pilih jenis instans yang Anda rekam di [langkah sebelumnya](#existing-worker-settings-step). Atau, pilih jenis instance yang berbeda untuk node Anda. Sebelum memilih jenis instans yang berbeda, tinjau [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md). Setiap jenis instans Amazon EC2 mendukung jumlah maksimum antarmuka jaringan elastis (antarmuka jaringan) dan setiap antarmuka jaringan mendukung jumlah maksimum alamat IP. Karena setiap node pekerja dan Pod, diberi alamat IP sendiri, penting untuk memilih jenis instance yang akan mendukung jumlah maksimum Pod yang ingin Anda jalankan di setiap node Amazon EC2. Untuk daftar jumlah antarmuka jaringan dan alamat IP yang didukung oleh jenis instans, lihat [alamat IP per antarmuka jaringan per jenis instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI). Misalnya, tipe `m5.large` instans mendukung maksimal 30 alamat IP untuk node pekerja dan Pod.
**catatan**  
[Tipe instans yang didukung untuk versi terbaru [plugin Amazon VPC CNI untuk Kubernetes ditampilkan di vpc\$1ip\$1resource\$1limit.go](https://github.com/aws/amazon-vpc-cni-k8s) on.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) GitHub Anda mungkin perlu memperbarui plugin Amazon VPC CNI untuk versi Kubernetes untuk menggunakan jenis instans terbaru yang didukung. Untuk informasi selengkapnya, lihat [Tetapkan IPs ke Pod dengan Amazon VPC CNI](managing-vpc-cni.md).
**penting**  
Beberapa jenis instance mungkin tidak tersedia di semua AWS Wilayah.
   +  **NodeImageIdSSMParam**— Parameter Amazon EC2 Systems Manager dari ID AMI yang ingin Anda perbarui. Nilai berikut menggunakan AMI Amazon EKS terbaru yang dioptimalkan untuk versi Kubernetes. `1.35`

     ```
     /aws/service/eks/optimized-ami/1.35/amazon-linux-2/recommended/image_id
     ```

     Anda dapat mengganti *1.35* dengan [versi platform yang](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) sama. Atau, itu harus hingga satu versi lebih awal dari versi Kubernetes yang berjalan di bidang kontrol Anda. Kami rekomendasikan supaya Anda menyimpan simpul pada versi yang sama dengan bidang kendali Anda. Anda juga dapat mengganti *amazon-linux-2* dengan tipe AMI yang berbeda. Untuk informasi selengkapnya, lihat [Ambil AMI Amazon Linux yang direkomendasikan IDs](retrieve-ami-id.md).
**catatan**  
Menggunakan parameter Amazon EC2 Systems Manager memungkinkan Anda memperbarui node di masa mendatang tanpa harus mencari dan menentukan ID AMI. Jika AWS CloudFormation tumpukan Anda menggunakan nilai ini, setiap pembaruan tumpukan selalu meluncurkan AMI terbaru yang dioptimalkan Amazon EKS yang dioptimalkan untuk versi Kubernetes yang Anda tentukan. Ini bahkan terjadi bahkan jika Anda tidak mengubah nilai apa pun di template.
   +  **NodeImageId**— Untuk menggunakan AMI kustom Anda sendiri, masukkan ID untuk AMI yang akan digunakan.
**penting**  
Nilai ini mengesampingkan nilai apa pun yang ditentukan untuk. **NodeImageIdSSMParam** Jika Anda ingin menggunakan **NodeImageIdSSMParam**nilainya, pastikan nilainya kosong. **NodeImageId**
   +  **Nonaktifkan IMDSv1** — Secara default, setiap node mendukung Layanan Metadata Instans Versi 1 (IMDSv1) dan. IMDSv2 Namun, Anda dapat menonaktifkan IMDSv1. Pilih **true** jika Anda tidak ingin node atau Pod apa pun yang dijadwalkan dalam grup node untuk digunakan IMDSv1. Untuk informasi selengkapnya tentang IMDS, lihat [Mengonfigurasi layanan metadata instans](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). Jika Anda telah menerapkan peran IAM untuk akun layanan, tetapkan izin yang diperlukan secara langsung ke semua Pod yang memerlukan akses ke layanan. AWS Dengan cara ini, tidak ada Pod di klaster Anda yang memerlukan akses ke IMDS karena alasan lain, seperti mengambil Region saat ini AWS . Kemudian, Anda juga dapat menonaktifkan akses ke IMDSv2 Pod yang tidak menggunakan jaringan host. Untuk informasi selengkapnya, lihat [Membatasi akses ke profil instance yang ditetapkan ke node pekerja](https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node).

1. (Opsional) Di halaman **Opsi**, tandai sumber daya tumpukan Anda. Pilih **Berikutnya**.

1. Pada halaman **Tinjauan**, tinjau informasi Anda, nyatakan bahwa tumpukan dapat membuat sumber daya IAM, kemudian pilih **Perbarui tumpukan**.
**catatan**  
Pembaruan setiap simpul dalam klaster membutuhkan waktu beberapa menit. Tunggu pembaruan semua simpul selesai sebelum melakukan langkah berikutnya.

1. Jika penyedia DNS klaster Anda`kube-dns`, skalakan `kube-dns` penerapan ke satu replika.

   ```
   kubectl scale deployments/kube-dns --replicas=1 -n kube-system
   ```

1. (Opsional) Jika Anda menggunakan [Autoscaler Klaster](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/README.md) Kubernetes, skalakan kembali deployment ke jumlah replika yang Anda inginkan.

   ```
   kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system
   ```

1. (Opsional) Verifikasi bahwa Anda menggunakan versi terbaru dari [plugin Amazon VPC CNI](https://github.com/aws/amazon-vpc-cni-k8s) untuk Kubernetes. Anda mungkin perlu memperbarui plugin Amazon VPC CNI untuk versi Kubernetes untuk menggunakan jenis instans terbaru yang didukung. Lihat informasi yang lebih lengkap di [Tetapkan IPs ke Pod dengan Amazon VPC CNI](managing-vpc-cni.md).

# Sederhanakan manajemen komputasi dengan Fargate AWS
<a name="fargate"></a>

Topik ini membahas penggunaan Amazon EKS untuk menjalankan Kubernetes Pods di Fargate. AWS [Fargate adalah teknologi yang menyediakan kapasitas komputasi sesuai permintaan dan berukuran tepat untuk kontainer.](https://aws.amazon.com/what-are-containers) Dengan Fargate, Anda tidak perlu menyediakan, mengonfigurasi, atau menskalakan grup mesin virtual sendiri untuk menjalankan kontainer. Anda juga tidak perlu memilih jenis server, memutuskan kapan harus menskalakan grup node Anda, atau mengoptimalkan pengemasan cluster.

[Anda dapat mengontrol Pod mana yang dimulai di Fargate dan bagaimana mereka berjalan dengan profil Fargate.](fargate-profile.md) Profil Fargate didefinisikan sebagai bagian dari cluster Amazon EKS Anda. Amazon EKS mengintegrasikan Kubernetes dengan Fargate dengan menggunakan kontroler yang dibangun menggunakan model upstream yang dapat diperluas yang disediakan AWS oleh Kubernetes. Pengontrol ini berjalan sebagai bagian dari bidang kontrol Kubernetes yang dikelola Amazon EKS dan bertanggung jawab untuk menjadwalkan Pod Kubernetes asli ke Fargate. Pengendali Fargate termasuk penjadwal baru yang berjalan dengan penjadwal Kubernetes default selain beberapa pengendali masuk urusan mutasi dan validasi. Ketika Anda memulai sebuah Pod yang memenuhi kriteria untuk berjalan di Fargate, pengendali Fargate yang berjalan di klaster mengenali, memperbarui, dan menjadwalkan Pod ke Fargate.

Topik ini menjelaskan berbagai komponen Pod yang berjalan di Fargate, dan memunculkan pertimbangan khusus untuk menggunakan Fargate dengan Amazon EKS.

## AWS Pertimbangan Fargate
<a name="fargate-considerations"></a>

Berikut adalah beberapa hal yang perlu dipertimbangkan tentang menggunakan Fargate di Amazon EKS.
+ Setiap Pod yang berjalan di Fargate memiliki batas komputasinya sendiri. Mereka tidak berbagi kernel yang mendasarinya, sumber daya CPU, sumber daya memori, atau elastic network interface dengan Pod lain.
+ Network Load Balancers dan Application Load Balancers (ALBs) dapat digunakan dengan Fargate dengan target IP saja. Untuk informasi selengkapnya, lihat [Buat penyeimbang beban jaringan](network-load-balancing.md#network-load-balancer) dan [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md).
+ Layanan terbuka Fargate hanya berjalan pada mode IP tipe target, dan bukan pada mode IP node. Cara yang disarankan untuk memeriksa konektivitas dari layanan yang berjalan pada node terkelola dan layanan yang berjalan di Fargate adalah dengan menghubungkan melalui nama layanan.
+ Pod harus cocok dengan profil Fargate pada saat mereka dijadwalkan untuk berjalan di Fargate. Pod yang tidak cocok dengan profil Fargate mungkin macet sebagai. `Pending` Jika ada profil Fargate yang cocok, Anda dapat menghapus Pod yang tertunda yang telah Anda buat untuk menjadwalkannya kembali ke Fargate.
+ Daemonset tidak didukung di Fargate. Jika aplikasi Anda memerlukan daemon, konfigurasikan ulang daemon tersebut untuk dijalankan sebagai wadah sespan di Pod Anda.
+ Kontainer istimewa tidak didukung di Fargate.
+ Pod yang berjalan di Fargate tidak dapat menentukan `HostPort` atau `HostNetwork` dalam manifes Pod.
+ Default `nofile` dan `nproc` soft limit adalah 1024 dan hard limit adalah 65535 untuk Fargate Pods.
+ GPUs saat ini tidak tersedia di Fargate.
+ Pod yang berjalan di Fargate hanya didukung pada subnet pribadi (dengan akses gateway NAT ke AWS layanan, tetapi bukan rute langsung ke Internet Gateway), jadi VPC klaster Anda harus memiliki subnet pribadi yang tersedia. Untuk klaster tanpa akses internet luar, lihat [Menyebarkan kluster pribadi dengan akses internet terbatas](private-clusters.md).
+ Anda dapat menggunakan [sumber daya Adjust pod dengan Vertical Pod Autoscaler](vertical-pod-autoscaler.md) untuk mengatur ukuran CPU dan memori awal yang benar untuk Pod Fargate Anda, dan kemudian menggunakan [penerapan pod Scale dengan Horizontal Pod Autoscaler untuk menskalakan Pod](horizontal-pod-autoscaler.md) tersebut. Jika Anda ingin Vertical Pod Autoscaler untuk secara otomatis men-deploy ulang Pod ke Fargate dengan kombinasi CPU dan memori yang lebih besar, atur mode untuk Vertical Pod Autoscaler ke salah satu atau untuk memastikan fungsionalitas yang benar. `Auto` `Recreate` Untuk informasi selengkapnya, lihat dokumentasi [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) pada. GitHub
+ Resolusi DNS dan nama host DNS harus diaktifkan untuk VPC Anda. Untuk informasi selengkapnya, lihat [Melihat dan memperbarui dukungan DNS untuk VPC Anda](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating).
+ Amazon EKS Fargate menambahkan aplikasi defense-in-depth Kubernetes dengan mengisolasi setiap Pod dalam Virtual Machine (VM). Batas VM ini mencegah akses ke sumber daya berbasis host yang digunakan oleh Pod lain jika terjadi pelarian kontainer, yang merupakan metode umum untuk menyerang aplikasi kontainer dan mendapatkan akses ke sumber daya di luar container.

  Menggunakan Amazon EKS tidak mengubah tanggung jawab Anda berdasarkan [model tanggung jawab bersama](security.md). Anda harus hati-hati mempertimbangkan konfigurasi keamanan klaster dan kontrol tata kelola. Cara teraman untuk mengisolasi aplikasi adalah selalu menjalankannya di cluster terpisah.
+ Profil Fargate mendukung penentuan subnet dari blok CIDR sekunder VPC. Anda mungkin ingin menentukan blok CIDR sekunder. Ini karena ada sejumlah alamat IP yang tersedia di subnet. Akibatnya, ada juga sejumlah Pod yang dapat dibuat di klaster. Dengan menggunakan subnet yang berbeda untuk Pod, Anda dapat menambah jumlah alamat IP yang tersedia. Untuk informasi selengkapnya, lihat [Menambahkan blok IPv4 CIDR ke VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html#vpc-resize). 
+ Layanan metadata EC2 instans Amazon (IMDS) tidak tersedia untuk Pod yang di-deploy ke node Fargate. [Jika Anda memiliki Pod yang di-deploy ke Fargate yang membutuhkan kredensyal IAM, tetapkan Pod tersebut ke Pod Anda menggunakan peran IAM untuk akun layanan.](iam-roles-for-service-accounts.md) Jika Pod Anda memerlukan akses ke informasi lain yang tersedia melalui IMDS, maka Anda harus membuat kode keras informasi ini ke dalam spesifikasi Pod Anda. Ini termasuk AWS Region atau Availability Zone tempat Pod digunakan.
+ Anda tidak dapat menerapkan Pod Fargate ke AWS Outposts, AWS Wavelength, atau Local Zones. AWS 
+ Amazon EKS harus menambal Pod Fargate secara berkala agar tetap aman. Kami mencoba pembaruan dengan cara yang mengurangi dampak, tetapi ada kalanya Pod harus dihapus jika tidak berhasil diusir. Ada beberapa tindakan yang dapat Anda lakukan untuk meminimalkan gangguan. Untuk informasi selengkapnya, lihat [Tetapkan tindakan untuk AWS acara patching OS Fargate](fargate-pod-patching.md).
+ [Plugin Amazon VPC CNI untuk Amazon EKS diinstal](https://github.com/aws/amazon-vpc-cni-plugins) pada node Fargate. Anda tidak dapat menggunakan [plugin Alternatif CNI untuk kluster Amazon EKS dengan node Fargate](alternate-cni-plugins.md).
+ Pod yang berjalan di Fargate secara otomatis memasang sistem file Amazon EFS, tanpa memerlukan langkah penginstalan driver secara manual. Anda tidak dapat menggunakan penyediaan volume persisten dinamis dengan node Fargate, tetapi Anda dapat menggunakan penyediaan statis.
+ Amazon EKS tidak mendukung Fargate Spot.
+ Anda tidak dapat memasang volume Amazon EBS ke Pod Fargate.
+ Anda dapat menjalankan pengontrol Amazon EBS CSI di node Fargate, tetapi node Amazon EBS CSI DaemonSet hanya dapat berjalan di instans Amazon. EC2 
+ Setelah [Job Kubernetes](https://kubernetes.io/docs/concepts/workloads/controllers/job/) `Completed` ditandai `Failed` atau, Pod yang dibuat oleh Job biasanya akan tetap ada. Perilaku ini memungkinkan Anda untuk melihat log dan hasil Anda, tetapi dengan Fargate Anda akan dikenakan biaya jika Anda tidak membersihkan Job sesudahnya.

  Untuk menghapus Pod terkait secara otomatis setelah Job selesai atau gagal, Anda dapat menentukan periode waktu menggunakan pengontrol time-to-live (TTL). Contoh berikut menunjukkan spesifikasi `.spec.ttlSecondsAfterFinished` dalam manifes Job Anda.

  ```
  apiVersion: batch/v1
  kind: Job
  metadata:
    name: busybox
  spec:
    template:
      spec:
        containers:
        - name: busybox
          image: busybox
          command: ["/bin/sh", "-c", "sleep 10"]
        restartPolicy: Never
    ttlSecondsAfterFinished: 60 # <-- TTL controller
  ```

## Tabel Perbandingan Fargate
<a name="_fargate_comparison_table"></a>


| Kriteria |  AWS Fargate | 
| --- | --- | 
|  [Dapat dikerahkan ke Outposts AWS](https://docs.aws.amazon.com/outposts/latest/userguide/what-is-outposts.html)   |  Tidak  | 
|  Dapat dikerahkan ke Zona [AWS Lokal](local-zones.md)   |  Tidak  | 
|  Dapat menjalankan kontainer yang memerlukan Windows  |  Tidak  | 
|  Dapat menjalankan kontainer yang membutuhkan Linux  |  Ya  | 
|  Dapat menjalankan beban kerja yang memerlukan Chip Inferentia  |  Tidak  | 
|  Dapat menjalankan beban kerja yang memerlukan GPU  |  Tidak  | 
|  Dapat menjalankan beban kerja yang memerlukan prosesor Arm  |  Tidak  | 
|  Dapat menjalankan AWS [Bottlerocket](https://aws.amazon.com/bottlerocket/)   |  Tidak  | 
|  Pod berbagi lingkungan runtime kernel dengan Pod lain  |  Tidak - Setiap Pod memiliki kernel khusus  | 
|  Pod berbagi CPU, memori, penyimpanan, dan sumber daya jaringan dengan Pod lain.  |  Tidak - Setiap Pod memiliki sumber daya khusus dan dapat diukur secara independen untuk memaksimalkan pemanfaatan sumber daya.  | 
|  Pod dapat menggunakan lebih banyak perangkat keras dan memori daripada yang diminta dalam spesifikasi Pod  |  Tidak - Pod dapat di-deploy ulang menggunakan vCPU dan konfigurasi memori yang lebih besar.  | 
|  Harus menerapkan dan mengelola instans Amazon EC2   |  Tidak  | 
|  Harus mengamankan, memelihara, dan menambal sistem operasi EC2 instans Amazon  |  Tidak  | 
|  Dapat memberikan argumen bootstrap pada penerapan node, seperti argumen [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) ekstra.  |  Tidak  | 
|  Dapat menetapkan alamat IP ke Pod dari blok CIDR yang berbeda dari alamat IP yang ditetapkan ke node.  |  Tidak  | 
|  Dapat SSH ke simpul  |  Tidak - Tidak ada sistem operasi host node untuk SSH.  | 
|  Dapat men-deploy AMI kustom Anda sendiri ke simpul  |  Tidak  | 
|  Dapat men-deploy CNI kustom Anda sendiri ke simpul  |  Tidak  | 
|  Harus memperbarui node AMI sendiri  |  Tidak  | 
|  Harus memperbarui versi node Kubernetes sendiri  |  Tidak - Anda tidak mengelola node.  | 
|  Dapat menggunakan penyimpanan Amazon EBS dengan Pod  |  Tidak  | 
|  Dapat menggunakan penyimpanan Amazon EFS dengan Pod  |   [Ya](efs-csi.md)   | 
|  Dapat menggunakan Amazon FSx untuk penyimpanan Lustre dengan Pod  |  Tidak  | 
|  Dapat menggunakan Network Load Balancer untuk layanan  |  Ya, saat menggunakan [Buat penyeimbang beban jaringan](network-load-balancing.md#network-load-balancer)   | 
|  Pods dapat berjalan dalam subnet publik  |  Tidak  | 
|  Dapat menetapkan grup keamanan VPC yang berbeda ke masing-masing Pod  |  Ya  | 
|  Dapat menjalankan Kubernetes DaemonSets  |  Tidak  | 
|  Support `HostPort` dan `HostNetwork` dalam manifes Pod  |  Tidak  | 
|   AWS Ketersediaan wilayah  |   [Beberapa wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   | 
|  Dapat menjalankan kontainer di host EC2 khusus Amazon  |  Tidak  | 
|  Harga  |  Biaya memori Fargate secara individu dan konfigurasi CPU. Setiap Pod memiliki biaya sendiri. Untuk informasi lebih lanjut, lihat [AWS harga Fargate](https://aws.amazon.com/fargate/pricing/).  | 

# Memulai AWS Fargate untuk klaster Anda
<a name="fargate-getting-started"></a>

Topik ini menjelaskan cara memulai menjalankan Pod di AWS Fargate dengan klaster Amazon EKS Anda.

Jika Anda membatasi akses ke titik akhir publik klaster Anda menggunakan blok CIDR, sebaiknya Anda juga mengaktifkan akses titik akhir pribadi. Dengan cara ini, Fargate Pod dapat berkomunikasi dengan cluster. Tanpa mengaktifkan titik akhir pribadi, blok CIDR yang Anda tentukan untuk akses publik harus menyertakan sumber keluar dari VPC Anda. Untuk informasi selengkapnya, lihat [Titik akhir server API kluster](cluster-endpoint.md).

**Prasyarat**  
Sebuah klaster yang sudah ada. Jika Anda belum memiliki kluster Amazon EKS, lihat[Memulai dengan Amazon EKS](getting-started.md).

## Langkah 1: Pastikan node yang ada dapat berkomunikasi dengan Fargate Pods
<a name="fargate-gs-check-compatibility"></a>

Jika Anda bekerja dengan cluster baru tanpa node, atau cluster dengan hanya grup node terkelola (lihat[Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md)), Anda dapat melompat ke[Langkah 2: Buat peran eksekusi Fargate Pod](#fargate-sg-pod-execution-role).

Asumsikan bahwa Anda bekerja dengan cluster yang sudah ada yang sudah memiliki node yang terkait dengannya. Pastikan bahwa Pod pada node ini dapat berkomunikasi secara bebas dengan Pod yang berjalan di Fargate. Pod yang berjalan di Fargate secara otomatis dikonfigurasi untuk menggunakan grup keamanan klaster untuk klaster yang terkait dengannya. Pastikan bahwa setiap node yang ada di cluster Anda dapat mengirim dan menerima lalu lintas ke dan dari grup keamanan klaster. Grup node terkelola secara otomatis dikonfigurasi untuk menggunakan grup keamanan klaster juga, jadi Anda tidak perlu memodifikasi atau memeriksa kompatibilitas ini (lihat[Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md)).

Untuk grup node yang sudah ada yang dibuat dengan `eksctl` atau AWS CloudFormation templat terkelola Amazon EKS, Anda dapat menambahkan grup keamanan klaster ke node secara manual. Atau, sebagai alternatif, Anda dapat memodifikasi templat peluncuran grup Auto Scaling untuk grup node untuk melampirkan grup keamanan klaster ke instance. Untuk informasi selengkapnya, lihat [Mengubah grup keamanan instans](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SG_Changing_Group_Membership) di *Panduan Pengguna Amazon VPC*.

Anda dapat memeriksa grup keamanan untuk klaster Anda di bagian Konsol Manajemen AWS bawah **Jaringan** untuk klaster. Atau, Anda dapat melakukan ini menggunakan perintah AWS CLI berikut. Saat menggunakan perintah ini, ganti `<my-cluster>` dengan nama cluster Anda.

```
aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId
```

## Langkah 2: Buat peran eksekusi Fargate Pod
<a name="fargate-sg-pod-execution-role"></a>

Saat klaster Anda membuat Pod di AWS Fargate, komponen yang berjalan di infrastruktur Fargate harus melakukan panggilan atas nama Anda. AWS APIs Peran eksekusi Amazon EKS Pod memberikan izin IAM untuk melakukan ini. Untuk membuat peran eksekusi AWS Fargate Pod, lihat. [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md)

**catatan**  
Jika Anda membuat klaster dengan `eksctl` menggunakan `--fargate` opsi, klaster Anda sudah memiliki peran eksekusi Pod yang dapat Anda temukan di konsol IAM dengan pola `eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL` tersebut. Demikian pula, jika Anda menggunakan `eksctl` untuk membuat profil Fargate Anda, `eksctl` buat peran eksekusi Pod Anda jika belum dibuat.

## Langkah 3: Buat profil Fargate untuk cluster Anda
<a name="fargate-gs-create-profile"></a>

Sebelum Anda dapat menjadwalkan Pod yang berjalan di Fargate di klaster Anda, Anda harus menentukan profil Fargate yang menentukan Pod mana yang menggunakan Fargate saat diluncurkan. Untuk informasi selengkapnya, lihat [Tentukan Pod mana yang menggunakan AWS Fargate saat diluncurkan](fargate-profile.md).

**catatan**  
Jika Anda membuat klaster dengan `eksctl` menggunakan `--fargate` opsi, maka profil Fargate sudah dibuat untuk klaster Anda dengan pemilih untuk semua Pod di dan namespace. `kube-system` `default` Gunakan prosedur berikut untuk membuat profil Fargate untuk namespaces lain yang ingin Anda gunakan dengan Fargate.

Anda dapat membuat profil Fargate menggunakan salah satu alat ini:
+  [`eksctl`](#eksctl_fargate_profile_create) 
+  [Konsol Manajemen AWS](#console_fargate_profile_create) 

### `eksctl`
<a name="eksctl_fargate_profile_create"></a>

Prosedur ini membutuhkan `eksctl` versi `0.215.0` atau yang lebih baru. Anda dapat memeriksa versi Anda dengan perintah berikut:

```
eksctl version
```

Untuk petunjuk tentang cara menginstal atau meningkatkan`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

 **Untuk membuat profil Fargate dengan `eksctl`** 

Buat profil Fargate Anda dengan `eksctl` perintah berikut, ganti masing-masing `<example value>` dengan nilai Anda sendiri. Anda diminta untuk menentukan namespace. Namun, `--labels` opsi tidak diperlukan.

```
eksctl create fargateprofile \
    --cluster <my-cluster> \
    --name <my-fargate-profile> \
    --namespace <my-kubernetes-namespace> \
    --labels <key=value>
```

Anda dapat menggunakan wildcard tertentu untuk `<my-kubernetes-namespace>` dan `<key=value>` label. Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](fargate-profile.md#fargate-profile-wildcards).

### Konsol Manajemen AWS
<a name="console_fargate_profile_create"></a>

 **Untuk membuat profil Fargate dengan Konsol Manajemen AWS ** 

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih klaster untuk membuat profil Fargate untuk.

1. Pilih tab **Compute**.

1. Di bawah **Profil Fargate**, pilih **Tambahkan profil Fargate**.

1. Pada halaman **profil Konfigurasi Fargate**, lakukan hal berikut:

   1. Untuk **Nama**, masukkan nama untuk profil Fargate Anda. Nama harus unik.

   1. Untuk **peran eksekusi Pod**, pilih peran eksekusi Pod yang akan digunakan dengan profil Fargate Anda. Hanya peran IAM dengan kepala `eks-fargate-pods.amazonaws.com` layanan yang ditampilkan. Jika Anda tidak melihat peran apa pun yang terdaftar, Anda harus membuatnya. Untuk informasi selengkapnya, lihat [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md).

   1. Ubah **Subnet** yang dipilih sesuai kebutuhan.
**catatan**  
Hanya subnet pribadi yang didukung untuk Pod yang berjalan di Fargate.

   1. Untuk **Tandai**, Anda dapat menandai profil Fargate Anda secara opsional. Tag ini tidak menyebar ke sumber daya lain yang terkait dengan profil seperti Pod.

   1. Pilih **Berikutnya**.

1. Pada halaman **pemilihan Configure Pod**, lakukan hal berikut:

   1. Untuk **Namespace**, masukkan namespace yang cocok dengan Pod.
      + Anda dapat menggunakan ruang nama tertentu untuk mencocokkan, seperti `kube-system` atau. `default`
      + Anda dapat menggunakan wildcard tertentu (misalnya,`prod-*`) untuk mencocokkan beberapa ruang nama (misalnya, `prod-deployment` dan). `prod-test` Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. (Opsional) Tambahkan label Kubernetes ke pemilih. Secara khusus menambahkannya ke salah satu yang harus dicocokkan dengan Pod di namespace tertentu.
      + Anda dapat menambahkan label `infrastructure: fargate` ke pemilih sehingga hanya Pod di namespace tertentu yang juga memiliki label `infrastructure: fargate` Kubernetes yang cocok dengan pemilih.
      + Anda dapat menggunakan wildcard tertentu (misalnya,`key?: value?`) untuk mencocokkan beberapa ruang nama (misalnya, `keya: valuea` dan). `keyb: valueb` Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](fargate-profile.md#fargate-profile-wildcards).

   1. Pilih **Berikutnya**.

1. Pada halaman **Periksa dan buat**, tinjau informasi untuk profil Fargate Anda dan pilih **Buat**.

## Langkah 4: Perbarui CoreDNS
<a name="fargate-gs-coredns"></a>

Secara default, CoreDNS dikonfigurasi untuk berjalan di EC2 infrastruktur Amazon di kluster Amazon EKS. Jika Anda *hanya* ingin menjalankan Pod di Fargate di klaster Anda, selesaikan langkah-langkah berikut.

**catatan**  
Jika Anda membuat cluster Anda dengan `eksctl` menggunakan `--fargate` opsi, maka Anda dapat melompat ke[Langkah selanjutnya](#fargate-gs-next-steps).

1. Buat profil Fargate untuk CoreDNS dengan perintah berikut. Ganti `<my-cluster>` dengan nama klaster Anda, `<111122223333>` dengan ID akun Anda, `<AmazonEKSFargatePodExecutionRole>` dengan nama peran eksekusi Pod Anda, dan `<000000000000000a>``<000000000000000b>`,, dan `<000000000000000c>` dengan subnet pribadi Anda. IDs Jika Anda tidak memiliki peran eksekusi Pod, Anda harus membuatnya terlebih dahulu (lihat[Langkah 2: Buat peran eksekusi Fargate Pod](#fargate-sg-pod-execution-role)).
**penting**  
Peran ARN tidak dapat menyertakan [jalur](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) selain. `/` Misalnya, jika nama peran Anda`development/apps/AmazonEKSFargatePodExecutionRole`, Anda perlu mengubahnya menjadi `AmazonEKSFargatePodExecutionRole` saat menentukan ARN untuk peran tersebut. Format ARN peran harus ` arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>`.

   ```
   aws eks create-fargate-profile \
       --fargate-profile-name coredns \
       --cluster-name <my-cluster> \
       --pod-execution-role-arn arn:aws: iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \
       --selectors namespace=kube-system,labels={k8s-app=kube-dns} \
       --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
   ```

1. Memicu peluncuran penyebaran. `coredns`

   ```
   kubectl rollout restart -n kube-system deployment coredns
   ```

## Langkah selanjutnya
<a name="fargate-gs-next-steps"></a>
+ Anda dapat mulai memigrasi aplikasi yang ada untuk berjalan di Fargate dengan alur kerja berikut.

  1.  [Buat profil Fargate](fargate-profile.md#create-fargate-profile)yang cocok dengan namespace Kubernetes dan label Kubernetes aplikasi Anda.

  1. Hapus dan buat ulang Pod yang ada sehingga dijadwalkan di Fargate. Ubah `<namespace>` dan `<deployment-type>` untuk memperbarui Pod spesifik Anda.

     ```
     kubectl rollout restart -n <namespace> deployment <deployment-type>
     ```
+ Terapkan [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md) untuk mengizinkan objek Ingress untuk Pod Anda yang berjalan di Fargate.
+ Anda dapat menggunakannya [Sesuaikan sumber daya pod dengan Vertical Pod Autoscaler](vertical-pod-autoscaler.md) untuk mengatur ukuran CPU dan memori awal yang benar untuk Pod Fargate Anda, lalu gunakan [Menskalakan penerapan pod dengan Horizontal Pod Autoscaler](horizontal-pod-autoscaler.md) untuk menskalakan Pod tersebut. Jika Anda ingin Vertical Pod Autoscaler untuk secara otomatis men-deploy ulang Pod ke Fargate dengan kombinasi CPU dan memori yang lebih tinggi, atur mode Vertical Pod Autoscaler ke salah satu atau. `Auto` `Recreate` Ini untuk memastikan fungsionalitas yang benar. Untuk informasi selengkapnya, lihat dokumentasi [Vertical Pod Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler#quick-start) pada. GitHub
+ Anda dapat mengatur kolektor [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel) (ADOT) untuk pemantauan aplikasi dengan mengikuti petunjuk [ini](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-otel.html).

# Tentukan Pod mana yang menggunakan AWS Fargate saat diluncurkan
<a name="fargate-profile"></a>

Sebelum Anda menjadwalkan Pod di Fargate di klaster Anda, Anda harus menentukan setidaknya satu profil Fargate yang menentukan Pod mana yang menggunakan Fargate saat diluncurkan.

Sebagai administrator, Anda dapat menggunakan profil Fargate untuk mendeklarasikan Pod mana yang berjalan di Fargate. Anda dapat melakukan ini melalui pemilih profil. Anda dapat menambahkan hingga lima pemilih ke setiap profil. Setiap pemilih harus berisi namespace. Pemilih juga dapat menyertakan label. Bidang label terdiri dari beberapa pasangan nilai kunci opsional. Pod yang cocok dengan pemilih dijadwalkan di Fargate. Pod dicocokkan menggunakan namespace dan label yang ditentukan dalam pemilih. Jika pemilih namespace didefinisikan tanpa label, Amazon EKS mencoba menjadwalkan semua Pod yang berjalan di namespace tersebut ke Fargate menggunakan profil tersebut. Jika to-be-scheduled Pod cocok dengan salah satu pemilih di profil Fargate, maka Pod tersebut dijadwalkan di Fargate.

Jika sebuah Pod cocok dengan beberapa profil Fargate, Anda dapat menentukan profil mana yang digunakan Pod dengan menambahkan label Kubernetes berikut ke spesifikasi Pod:. `eks.amazonaws.com/fargate-profile: my-fargate-profile` Pod harus cocok dengan pemilih dalam profil tersebut untuk dijadwalkan ke Fargate. Aturan afinitas/anti-afinitas Kubernetes tidak berlaku dan tidak diperlukan dengan Pod Fargate Amazon EKS.

Saat Anda membuat profil Fargate, Anda harus menentukan peran eksekusi Pod. Peran eksekusi ini untuk komponen Amazon EKS yang berjalan di infrastruktur Fargate menggunakan profil. Ini ditambahkan ke Kubernetes [Role Based Access Control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) cluster untuk otorisasi. Dengan begitu, `kubelet` yang berjalan pada infrastruktur Fargate dapat mendaftar dengan cluster Amazon EKS Anda dan muncul di cluster Anda sebagai node. Peran eksekusi Pod juga memberikan izin IAM ke infrastruktur Fargate untuk memungkinkan akses baca ke repositori image Amazon ECR. Untuk informasi selengkapnya, lihat [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md).

Profil Fargate tidak dapat diubah. Namun, Anda dapat membuat profil baru yang diperbarui untuk mengganti profil yang ada, dan kemudian menghapus yang asli.

**catatan**  
Pod apa pun yang berjalan menggunakan profil Fargate akan dihentikan dan dimasukkan ke dalam status tertunda saat profil dihapus.

Jika ada profil Fargate dalam klaster dalam `DELETING` status, Anda harus menunggu sampai setelah profil Fargate dihapus sebelum Anda membuat profil lain di cluster itu.

**catatan**  
Fargate saat ini tidak mendukung Kubernetes. [topologySpreadConstraints](https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/)

Amazon EKS dan Fargate menyebarkan Pod di setiap subnet yang ditentukan dalam profil Fargate. Namun, Anda mungkin berakhir dengan penyebaran yang tidak merata. Jika Anda harus memiliki spread yang merata, gunakan dua profil Fargate. Bahkan spread penting dalam skenario di mana Anda ingin menerapkan dua replika dan tidak ingin downtime. Kami merekomendasikan bahwa setiap profil hanya memiliki satu subnet.

## Komponen profil Fargate
<a name="fargate-profile-components"></a>

Komponen-komponen berikut yang terkandung dalam profil Fargate.

 **Peran eksekusi pod**   
Saat klaster Anda membuat Pod di AWS Fargate, `kubelet` yang berjalan di infrastruktur Fargate harus melakukan panggilan atas nama Anda. AWS APIs Misalnya, perlu melakukan panggilan untuk menarik gambar kontainer dari Amazon ECR. Peran eksekusi Amazon EKS Pod memberikan izin IAM untuk melakukan ini.  
Saat Anda membuat profil Fargate, Anda harus menentukan peran eksekusi Pod yang akan digunakan dengan Pod Anda. Peran ini ditambahkan ke Kubernetes [Role-based access control](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) klaster untuk otorisasi. Ini agar yang berjalan di infrastruktur Fargate dapat mendaftar dengan cluster Amazon EKS Anda dan muncul di cluster Anda sebagai node. `kubelet` Untuk informasi selengkapnya, lihat [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md).

 **Subnet**   
Subnet untuk meluncurkan Pod ke dalamnya menggunakan profil ini. IDs Saat ini, Pod yang berjalan di Fargate tidak diberi alamat IP publik. Oleh karena itu, hanya subnet pribadi tanpa rute langsung ke Internet Gateway yang diterima untuk parameter ini.

 **Selektor**   
Selector untuk mencocokkan Pod untuk menggunakan profil Fargate ini. Anda dapat menentukan hingga lima pemilih dalam profil Fargate. Penyeleksi memiliki komponen-komponen berikut:  
+  **Namespace** – Anda harus menentukan namespace untuk pemilih. Selector hanya cocok dengan Pod yang dibuat di namespace ini. Namun, Anda dapat membuat beberapa penyeleksi untuk menargetkan beberapa ruang nama.
+  **Label** — Anda dapat menentukan label Kubernetes untuk dicocokkan dengan pemilih. Pemilih hanya cocok dengan Pod yang memiliki semua label yang ditentukan dalam pemilih.

## Wildcard profil Fargate
<a name="fargate-profile-wildcards"></a>

Selain karakter yang diizinkan oleh Kubernetes, Anda diizinkan untuk menggunakan `*` dan `?` dalam kriteria pemilih untuk namespace, kunci label, dan nilai label:
+  `*`mewakili tidak ada, satu, atau beberapa karakter. Misalnya, `prod*` dapat mewakili `prod` dan`prod-metrics`.
+  `?`mewakili satu karakter (misalnya, `value?` dapat mewakili`valuea`). Namun, itu tidak dapat mewakili `value` dan`value-a`, karena hanya `?` dapat mewakili tepat satu karakter.

Karakter wildcard ini dapat digunakan dalam posisi apa pun dan dalam kombinasi (misalnya,, `prod*``*dev`, dan`frontend*?`). Wildcard lain dan bentuk pencocokan pola, seperti ekspresi reguler, tidak didukung.

Jika ada beberapa profil yang cocok untuk namespace dan label dalam spesifikasi Pod, Fargate mengambil profil berdasarkan pengurutan alfanumerik berdasarkan nama profil. Misalnya, jika kedua profil A (dengan nama`beta-workload`) dan profil B (dengan nama`prod-workload`) memiliki pemilih yang cocok untuk Pod yang akan diluncurkan, Fargate memilih profil A `beta-workload` () untuk Pod. Pod memiliki label dengan profil A pada Pod (misalnya,`eks.amazonaws.com/fargate-profile=beta-workload`).

Jika Anda ingin memigrasikan Pod Fargate yang ada ke profil baru yang menggunakan wildcard, ada dua cara untuk melakukannya:
+ Buat profil baru dengan penyeleksi yang cocok, lalu hapus profil lama. Pod yang diberi label dengan profil lama dijadwal ulang ke profil baru yang cocok.
+ Jika Anda ingin memigrasikan beban kerja tetapi tidak yakin label Fargate pada setiap Pod Fargate, Anda dapat menggunakan metode berikut. Buat profil baru dengan nama yang mengurutkan secara alfanumerik terlebih dahulu di antara profil di cluster yang sama. Kemudian, daur ulang Pod Fargate yang perlu dimigrasikan ke profil baru.

## Buat profil Fargate
<a name="create-fargate-profile"></a>

Bagian ini menjelaskan cara membuat profil Fargate. Anda juga harus telah membuat peran eksekusi Pod untuk digunakan untuk profil Fargate Anda. Untuk informasi selengkapnya, lihat [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md). Pod yang berjalan di Fargate hanya didukung pada subnet pribadi dengan akses [gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) ke AWS layanan, tetapi bukan rute langsung ke Internet Gateway. Ini agar VPC cluster Anda harus memiliki subnet pribadi yang tersedia.

Anda dapat membuat profil dengan yang berikut ini:
+  [`eksctl`](#eksctl_create_a_fargate_profile) 
+  [Konsol Manajemen AWS](#console_create_a_fargate_profile) 

## `eksctl`
<a name="eksctl_create_a_fargate_profile"></a>

 **Untuk membuat profil Fargate dengan `eksctl`** 

Buat profil Fargate Anda dengan `eksctl` perintah berikut, ganti setiap nilai contoh dengan nilai Anda sendiri. Anda diminta untuk menentukan namespace. Namun, `--labels` opsi tidak diperlukan.

```
eksctl create fargateprofile \
    --cluster my-cluster \
    --name my-fargate-profile \
    --namespace my-kubernetes-namespace \
    --labels key=value
```

Anda dapat menggunakan wildcard tertentu untuk `my-kubernetes-namespace` dan `key=value` label. Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](#fargate-profile-wildcards).

## Konsol Manajemen AWS
<a name="console_create_a_fargate_profile"></a>

 **Untuk membuat profil Fargate dengan Konsol Manajemen AWS ** 

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih klaster untuk membuat profil Fargate untuk.

1. Pilih tab **Compute**.

1. Di bawah **Profil Fargate**, pilih **Tambahkan profil Fargate**.

1. Pada halaman **profil Konfigurasi Fargate**, lakukan hal berikut:

   1. Untuk **Nama**, masukkan nama unik untuk profil Fargate Anda, seperti `my-profile`.

   1. Untuk **peran eksekusi Pod**, pilih peran eksekusi Pod yang akan digunakan dengan profil Fargate Anda. Hanya peran IAM dengan kepala `eks-fargate-pods.amazonaws.com` layanan yang ditampilkan. Jika Anda tidak melihat peran apa pun yang terdaftar, Anda harus membuatnya. Untuk informasi selengkapnya, lihat [Peran IAM eksekusi Pod Amazon EKS](pod-execution-role.md).

   1. Ubah **Subnet** yang dipilih sesuai kebutuhan.
**catatan**  
Hanya subnet pribadi yang didukung untuk Pod yang berjalan di Fargate.

   1. Untuk **Tandai**, Anda dapat menandai profil Fargate Anda secara opsional. Tag ini tidak menyebar ke sumber daya lain yang terkait dengan profil, seperti Pod.

   1. Pilih **Berikutnya**.

1. Pada halaman **pemilihan Configure Pod**, lakukan hal berikut:

   1. Untuk **Namespace**, masukkan namespace yang cocok dengan Pod.
      + Anda dapat menggunakan ruang nama tertentu untuk mencocokkan, seperti `kube-system` atau. `default`
      + Anda dapat menggunakan wildcard tertentu (misalnya,`prod-*`) untuk mencocokkan beberapa ruang nama (misalnya, `prod-deployment` dan). `prod-test` Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](#fargate-profile-wildcards).

   1. (Opsional) Tambahkan label Kubernetes ke pemilih. Secara khusus, tambahkan ke salah satu yang harus dicocokkan dengan Pod di namespace tertentu.
      + Anda dapat menambahkan label `infrastructure: fargate` ke pemilih sehingga hanya Pod di namespace tertentu yang juga memiliki label `infrastructure: fargate` Kubernetes yang cocok dengan pemilih.
      + Anda dapat menggunakan wildcard tertentu (misalnya,`key?: value?`) untuk mencocokkan beberapa ruang nama (misalnya, `keya: valuea` dan). `keyb: valueb` Untuk informasi selengkapnya, lihat [Wildcard profil Fargate](#fargate-profile-wildcards).

   1. Pilih **Berikutnya**.

1. Pada halaman **Periksa dan buat**, tinjau informasi untuk profil Fargate Anda dan pilih **Buat**.

# Hapus profil Fargate
<a name="delete-fargate-profile"></a>

Topik ini menjelaskan cara menghapus profil Fargate. Saat Anda menghapus profil Fargate, semua Pod yang dijadwalkan ke Fargate dengan profil akan dihapus. Jika Pod tersebut cocok dengan profil Fargate lainnya, maka mereka dijadwalkan di Fargate dengan profil itu. Jika mereka tidak lagi cocok dengan profil Fargate, maka mereka tidak dijadwalkan ke Fargate dan mungkin tetap tertunda.

Hanya satu profil Fargate dalam sebuah klaster yang dapat memiliki status `DELETING` pada satu waktu. Tunggu profil Fargate selesai dihapus sebelum Anda dapat menghapus profil lain di cluster itu.

Anda dapat menghapus profil dengan salah satu alat berikut:
+  [`eksctl`](#eksctl_delete_a_fargate_profile) 
+  [Konsol Manajemen AWS](#console_delete_a_fargate_profile) 
+  [AWS CLI](#awscli_delete_a_fargate_profile) 

## `eksctl`
<a name="eksctl_delete_a_fargate_profile"></a>

 **Hapus profil Fargate dengan `eksctl`** 

Gunakan perintah berikut untuk menghapus profil dari klaster. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

```
eksctl delete fargateprofile  --name my-profile --cluster my-cluster
```

## Konsol Manajemen AWS
<a name="console_delete_a_fargate_profile"></a>

 **Hapus profil Fargate dengan Konsol Manajemen AWS ** 

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pada panel navigasi sebelah kiri, pilih **Klaster**. Dalam daftar cluster, pilih cluster tempat Anda ingin menghapus profil Fargate.

1. Pilih tab **Compute**.

1. **Pilih profil Fargate untuk dihapus, lalu pilih Hapus.**

1. **Pada halaman **Hapus profil Fargate**, masukkan nama profil, lalu pilih Hapus.**

## AWS CLI
<a name="awscli_delete_a_fargate_profile"></a>

 **Hapus profil Fargate dengan CLI AWS ** 

Gunakan perintah berikut untuk menghapus profil dari klaster. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

```
aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster
```

# Memahami detail konfigurasi Fargate Pod
<a name="fargate-pod-configuration"></a>

Bagian ini menjelaskan beberapa detail konfigurasi Pod yang unik untuk menjalankan Pod Kubernetes di Fargate. AWS 

## Pod CPU dan memori
<a name="fargate-cpu-and-memory"></a>

Dengan Kubernetes, Anda dapat menentukan permintaan, jumlah minimum vCPU, dan sumber daya memori yang dialokasikan ke setiap kontainer dalam sebuah Pod. Pod dijadwalkan oleh Kubernetes untuk memastikan bahwa setidaknya sumber daya yang diminta untuk setiap Pod tersedia di sumber daya komputasi. Untuk informasi lebih lanjut, lihat [Mengelola sumber daya komputasi untuk kontainer](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) dalam dokumentasi Kubernetes.

**catatan**  
Karena Amazon EKS Fargate hanya menjalankan satu Pod per node, skenario penggusuran Pod jika sumber daya lebih sedikit tidak terjadi. Semua Pod Amazon EKS Fargate berjalan dengan prioritas terjamin, sehingga CPU dan memori yang diminta harus sama dengan batas untuk semua container. Untuk informasi selengkapnya, lihat [Mengkonfigurasi Kualitas Layanan untuk Pod](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/) dalam dokumentasi Kubernetes.

Ketika Pod dijadwalkan di Fargate, reservasi vCPU dan memori dalam spesifikasi Pod menentukan berapa banyak CPU dan memori yang akan disediakan untuk Pod.
+ Permintaan maksimum dari setiap kontainer Init digunakan untuk menentukan permintaan Init vCPU dan memori persyaratan.
+ Permintaan untuk semua kontainer berjalan lama ditambahkan untuk menentukan lama berjalan permintaan vCPU dan memori persyaratan.
+ Nilai yang lebih besar dari dua nilai sebelumnya dipilih untuk vCPU dan permintaan memori yang akan digunakan untuk Pod Anda.
+ Fargate menambahkan 256 MB ke setiap reservasi memori Pod untuk komponen Kubernetes yang diperlukan (`kubelet`,, dan). `kube-proxy` `containerd`

Fargate membulatkan ke konfigurasi komputasi berikut yang paling cocok dengan jumlah permintaan vCPU dan memori untuk memastikan Pod selalu memiliki sumber daya yang mereka butuhkan untuk menjalankannya.

Jika Anda tidak menentukan kombinasi vCPU dan memori, maka kombinasi terkecil yang tersedia digunakan (0,25 vCPU dan memori 0,5 GB).

Tabel berikut menunjukkan kombinasi vCPU dan memori yang tersedia untuk Pod yang berjalan di Fargate.


| Nilai vCPU | Nilai memori | 
| --- | --- | 
|  0,25 vCPU  |  0,5 GB, 1 GB, 2 GB  | 
|  0,5 vCPU  |  1 GB, 2 GB, 3 GB, 4 GB  | 
|  1 vCPU  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  | 
|  2 vCPU  |  Antara 4 GB dan 16 GB dalam kenaikan 1-GB  | 
|  4 vCPU  |  Antara 8 GB dan 30 GB dalam tambahan 1-GB  | 
|  8 vCPU  |  Antara 16 GB dan 60 GB dengan peningkatan 4-GB  | 
|  16 vCPU  |  Antara 32 GB dan 120 GB dengan peningkatan 8-GB  | 

Memori tambahan yang disediakan untuk komponen Kubernetes dapat menyebabkan tugas Fargate dengan lebih banyak v CPUs dari yang diminta untuk disediakan. Misalnya, permintaan untuk 1 vCPU dan memori 8 GB akan memiliki 256 MB yang ditambahkan ke permintaan memorinya, dan akan menyediakan tugas Fargate dengan memori 2 v CPUs dan 9 GB, karena tidak ada tugas dengan 1 vCPU dan memori 9 GB yang tersedia.

Tidak ada korelasi antara ukuran Pod yang berjalan di Fargate dan ukuran node yang dilaporkan oleh Kubernetes dengan. `kubectl get nodes` Ukuran node yang dilaporkan seringkali lebih besar dari kapasitas Pod. Anda dapat memverifikasi kapasitas Pod dengan perintah berikut. Ganti *default* dengan namespace Pod Anda dan *pod-name* dengan nama Pod Anda.

```
kubectl describe pod --namespace default pod-name
```

Contoh output adalah sebagai berikut.

```
[...]
annotations:
    CapacityProvisioned: 0.25vCPU 0.5GB
[...]
```

`CapacityProvisioned`Anotasi tersebut mewakili kapasitas Pod yang diberlakukan dan menentukan biaya Pod Anda yang berjalan di Fargate. [Untuk informasi harga untuk konfigurasi komputasi, lihat Harga Fargate AWS .](https://aws.amazon.com/fargate/pricing/)

## Penyimpanan Fargate
<a name="fargate-storage"></a>

Pod yang berjalan di Fargate secara otomatis memasang sistem file Amazon EFS, tanpa memerlukan langkah penginstalan driver manual. Anda tidak dapat menggunakan penyediaan volume persisten dinamis dengan node Fargate, tetapi Anda dapat menggunakan penyediaan statis. Untuk informasi selengkapnya, lihat [Driver Amazon EFS CSI](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/docs/README.md) di GitHub.

Saat disediakan, setiap Pod yang berjalan di Fargate menerima penyimpanan sementara 20 GiB default. Jenis penyimpanan ini dihapus setelah Pod berhenti. Pod baru yang diluncurkan ke Fargate memiliki enkripsi volume penyimpanan sementara yang diaktifkan secara default. Penyimpanan Pod sementara dienkripsi dengan algoritma enkripsi AES-256 menggunakan kunci terkelola Fargate. AWS 

**catatan**  
Penyimpanan default yang dapat digunakan untuk Amazon EKS Pods yang berjalan di Fargate kurang dari 20 GiB. Ini karena beberapa ruang digunakan oleh modul Kubernetes `kubelet` dan modul Kubernetes lainnya yang dimuat di dalam Pod.

Anda dapat meningkatkan jumlah total penyimpanan sementara hingga maksimum 175 GiB. Untuk mengkonfigurasi ukuran dengan Kubernetes, tentukan permintaan `ephemeral-storage` sumber daya untuk setiap kontainer dalam sebuah Pod. Ketika Kubernetes menjadwalkan Pod, Kubernetes memastikan bahwa jumlah permintaan sumber daya untuk setiap Pod kurang dari kapasitas tugas Fargate. Untuk informasi selengkapnya, lihat [Manajemen Sumber Daya untuk Pod dan Container](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/) di dokumentasi Kubernetes.

Amazon EKS Fargate menyediakan lebih banyak penyimpanan sementara daripada yang diminta untuk tujuan penggunaan sistem. Misalnya, permintaan 100 GiB akan menyediakan tugas Fargate dengan penyimpanan sementara 115 GiB.

# Tetapkan tindakan untuk AWS acara patching OS Fargate
<a name="fargate-pod-patching"></a>

Amazon EKS secara berkala menambal OS untuk node AWS Fargate agar tetap aman. Sebagai bagian dari proses patching, kami mendaur ulang node untuk menginstal patch OS. Pembaruan dicoba dengan cara yang menciptakan dampak paling kecil pada layanan Anda. Namun, jika Pod tidak berhasil diusir, ada kalanya Pod tersebut harus dihapus. Berikut ini adalah tindakan yang dapat Anda lakukan untuk meminimalkan potensi gangguan:
+ Tetapkan anggaran gangguan Pod (PDBs) yang sesuai untuk mengontrol jumlah Pod yang turun secara bersamaan.
+ Buat EventBridge aturan Amazon untuk menangani penggusuran yang gagal sebelum Pod dihapus.
+ Mulai ulang pod Anda yang terpengaruh secara manual sebelum tanggal penggusuran diposting di notifikasi yang Anda terima.
+ Buat konfigurasi notifikasi di Pemberitahuan AWS Pengguna.

Amazon EKS bekerja sama dengan komunitas Kubernetes untuk membuat perbaikan bug dan patch keamanan tersedia secepat mungkin. Semua Pod Fargate dimulai pada versi patch Kubernetes terbaru, yang tersedia dari Amazon EKS untuk versi Kubernetes dari klaster Anda. Jika Anda memiliki Pod dengan versi patch yang lebih lama, Amazon EKS mungkin mendaur ulangnya untuk memperbaruinya ke versi terbaru. Ini memastikan bahwa Pod Anda dilengkapi dengan pembaruan keamanan terbaru. Dengan begitu, jika ada masalah [Common Vulnerabilities and Exposures](https://cve.mitre.org/) (CVE) yang kritis, Anda tetap up to date untuk mengurangi risiko keamanan.

Saat OS AWS Fargate diperbarui, Amazon EKS akan mengirimkan pemberitahuan yang menyertakan sumber daya yang terpengaruh dan tanggal penggusuran pod yang akan datang. Jika tanggal penggusuran yang diberikan tidak nyaman, Anda memiliki opsi untuk me-restart pod yang terpengaruh secara manual sebelum tanggal penggusuran yang diposting di notifikasi. Pod apa pun yang dibuat sebelum waktu Anda menerima notifikasi akan dikenakan penggusuran. Lihat [Dokumentasi Kubernetes](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_rollout/kubectl_rollout_restart) untuk petunjuk lebih lanjut tentang cara me-restart pod Anda secara manual.

Untuk membatasi jumlah Pod yang turun pada satu waktu ketika Pod didaur ulang, Anda dapat mengatur anggaran gangguan Pod (). PDBs Anda dapat menggunakan PDBs untuk menentukan ketersediaan minimum berdasarkan persyaratan masing-masing aplikasi Anda sambil tetap mengizinkan pembaruan terjadi. Ketersediaan minimum PDB Anda harus kurang dari 100%. Untuk informasi selengkapnya, lihat [Menentukan Anggaran Gangguan untuk Aplikasi Anda](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) di Dokumentasi Kubernetes.

Amazon EKS menggunakan [Eviction API](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/#eviction-api) untuk menguras Pod dengan aman sambil menghormati PDBs yang Anda tetapkan untuk aplikasi tersebut. Pod diusir oleh Availability Zone untuk meminimalkan dampak. Jika penggusuran berhasil, Pod baru mendapatkan patch terbaru dan tidak diperlukan tindakan lebih lanjut.

Ketika penggusuran Pod gagal, Amazon EKS mengirimkan peristiwa ke akun Anda dengan rincian tentang Pod yang gagal penggusuran. Anda dapat menindaklanjuti pesan sebelum waktu penghentian yang dijadwalkan. Waktu spesifik bervariasi berdasarkan urgensi tambalan. Ketika tiba waktunya, Amazon EKS mencoba untuk mengusir Pod lagi. Namun, kali ini acara baru tidak dikirim jika penggusuran gagal. Jika penggusuran gagal lagi, Pod Anda yang ada akan dihapus secara berkala sehingga Pod baru dapat memiliki patch terbaru.

Berikut ini adalah contoh peristiwa yang diterima ketika penggusuran Pod gagal. Ini berisi rincian tentang cluster, nama Pod, namespace Pod, profil Fargate, dan waktu terminasi yang dijadwalkan.

```
{
    "version": "0",
    "id": "12345678-90ab-cdef-0123-4567890abcde",
    "detail-type": "EKS Fargate Pod Scheduled Termination",
    "source": "aws.eks",
    "account": "111122223333",
    "time": "2021-06-27T12:52:44Z",
    "region": "region-code",
    "resources": [
        "default/my-database-deployment"
    ],
    "detail": {
        "clusterName": "my-cluster",
        "fargateProfileName": "my-fargate-profile",
        "podName": "my-pod-name",
        "podNamespace": "default",
        "evictErrorMessage": "Cannot evict pod as it would violate the pod's disruption budget",
        "scheduledTerminationTime": "2021-06-30T12:52:44.832Z[UTC]"
    }
}
```

Selain itu, memiliki beberapa PDBs yang terkait dengan Pod dapat menyebabkan peristiwa kegagalan penggusuran. Acara ini mengembalikan pesan galat berikut.

```
"evictErrorMessage": "This pod has multiple PodDisruptionBudget, which the eviction subresource does not support",
```

Anda dapat membuat tindakan yang diinginkan berdasarkan acara ini. Misalnya, Anda dapat menyesuaikan anggaran gangguan Pod (PDB) untuk mengontrol cara Pod diusir. Lebih khusus lagi, misalkan Anda memulai dengan PDB yang menentukan persentase target Pod yang tersedia. Sebelum Pod dihentikan secara paksa selama upgrade, Anda dapat menyesuaikan PDB ke persentase Pod yang berbeda. Untuk menerima acara ini, Anda harus membuat EventBridge aturan Amazon di AWS akun dan AWS Wilayah tempat cluster tersebut berada. Aturan harus menggunakan **pola Kustom** berikut. Untuk informasi selengkapnya, lihat [Membuat EventBridge aturan Amazon yang bereaksi terhadap peristiwa](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) di *Panduan EventBridge Pengguna Amazon*.

```
{
  "source": ["aws.eks"],
  "detail-type": ["EKS Fargate Pod Scheduled Termination"]
}
```

Target yang sesuai dapat ditetapkan untuk acara untuk menangkapnya. Untuk daftar lengkap target yang tersedia, lihat [ EventBridge target Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) di *Panduan EventBridge Pengguna Amazon*. Anda juga dapat membuat konfigurasi notifikasi di Pemberitahuan AWS Pengguna. **Saat menggunakan Konsol Manajemen AWS untuk membuat notifikasi, di bawah **Aturan Acara**, pilih **Elastic Kubernetes Service (EKS) untuk **nama AWS layanan** dan EKS** **Fargate Pod Terjadwal Terminasi** untuk tipe Event.** Untuk informasi selengkapnya, lihat [Memulai Pemberitahuan AWS Pengguna](https://docs.aws.amazon.com/notifications/latest/userguide/getting-started.html) di Panduan AWS Pengguna Pemberitahuan Pengguna.

Lihat [FAQs: Pemberitahuan penggusuran Fargate Pod di * AWS re:Post* untuk pertanyaan umum tentang Penggusuran](https://repost.aws/knowledge-center/fargate-pod-eviction-notice) Pod EKS.

# Kumpulkan aplikasi AWS Fargate dan metrik penggunaan
<a name="monitoring-fargate-usage"></a>

Anda dapat mengumpulkan metrik sistem dan metrik CloudWatch penggunaan untuk AWS Fargate.

## Metrik aplikasi
<a name="fargate-application-metrics"></a>

Untuk aplikasi yang berjalan di Amazon EKS dan AWS Fargate, Anda dapat menggunakan AWS Distro for OpenTelemetry (ADOT). ADOT memungkinkan Anda mengumpulkan metrik sistem dan mengirimkannya ke dasbor CloudWatch Container Insights. Untuk memulai ADOT untuk aplikasi yang berjalan di Fargate, [lihat CloudWatch Menggunakan Wawasan Kontainer AWS dengan Distro OpenTelemetry](https://aws-otel.github.io/docs/getting-started/container-insights) untuk dokumentasi ADOT.

## Metrik penggunaan
<a name="fargate-usage-metrics"></a>

Anda dapat menggunakan metrik CloudWatch penggunaan untuk memberikan visibilitas ke dalam penggunaan sumber daya akun Anda. Gunakan metrik ini untuk memvisualisasikan penggunaan layanan Anda saat ini pada CloudWatch grafik dan dasbor.

 AWS Metrik penggunaan Fargate sesuai dengan kuota layanan. AWS Anda dapat mengonfigurasi alarm yang memberi tahu Anda saat penggunaan mendekati kuota layanan. Untuk informasi lebih lanjut tentang kuota layanan Fargate, lihat [Lihat dan kelola kuota layanan Amazon EKS dan Fargate](service-quotas.md).

 AWS Fargate menerbitkan metrik berikut di namespace. ` AWS/Usage`


| Metrik | Deskripsi | 
| --- | --- | 
|   `ResourceCount`   |  Jumlah sumber daya tertentu yang berjalan di akun Anda. Sumber daya ditentukan oleh dimensi yang terkait dengan metrik.  | 

Dimensi berikut digunakan untuk menyempurnakan metrik penggunaan yang diterbitkan oleh AWS Fargate.


| Dimensi | Deskripsi | 
| --- | --- | 
|   `Service`   |  Nama AWS layanan yang berisi sumber daya. Untuk metrik penggunaan AWS Fargate, nilai untuk dimensi ini adalah. `Fargate`  | 
|   `Type`   |  Jenis entitas yang dilaporkan. Saat ini, satu-satunya nilai yang valid untuk metrik penggunaan AWS Fargate adalah. `Resource`  | 
|   `Resource`   |  Jenis sumber daya yang sedang berjalan. Saat ini, AWS Fargate mengembalikan informasi tentang penggunaan Fargate On-Demand Anda. Nilai sumber daya untuk penggunaan Sesuai Permintaan Fargate adalah `OnDemand`. [CATATAN] ==== Penggunaan Fargate On-Demand menggabungkan Pod Amazon EKS menggunakan Fargate, tugas Amazon ECS menggunakan tipe peluncuran Fargate dan tugas Amazon ECS menggunakan penyedia kapasitas. `FARGATE` ====  | 
|   `Class`   |  Kelas sumber daya yang akan dilacak. Saat ini, AWS Fargate tidak menggunakan dimensi kelas.  | 

### Membuat CloudWatch alarm untuk memantau metrik penggunaan sumber daya Fargate
<a name="service-quota-alarm"></a>

 AWS Fargate menyediakan metrik CloudWatch penggunaan yang sesuai dengan kuota AWS layanan untuk penggunaan sumber daya Fargate On-Demand. Di konsol Service Quotas, Anda dapat memvisualisasikan penggunaan Anda pada grafik. Anda juga dapat mengonfigurasi alarm yang memberi tahu Anda ketika penggunaan mendekati kuota layanan. Untuk informasi selengkapnya, lihat [Kumpulkan aplikasi AWS Fargate dan metrik penggunaan](#monitoring-fargate-usage).

Gunakan langkah-langkah berikut untuk membuat CloudWatch alarm berdasarkan metrik penggunaan sumber daya Fargate.

1. Buka konsol Service Quotas di. https://console.aws.amazon.com/servicequotas/

1. Di panel navigasi kiri, pilih ** AWS layanan**.

1. Dari daftar ** AWS layanan**, cari dan pilih ** AWS Fargate**.

1. Dalam daftar **Kuota Layanan**, pilih kuota penggunaan Fargate yang ingin Anda buat alarm.

1. Di bagian CloudWatch alarm Amazon, pilih **Buat**.

1. Untuk **Ambang batas Alarm**, pilih persentase nilai kuota yang ingin Anda tetapkan sebagai nilai alarm.

1. Untuk **Nama alarm**, masukkan nama untuk alarm, lalu pilih **Buat**.

# Mulai pencatatan AWS Fargate untuk klaster Anda
<a name="fargate-logging"></a>

Amazon EKS di Fargate menawarkan router log bawaan berdasarkan Fluent Bit. Ini berarti Anda tidak secara eksplisit menjalankan container Fluent Bit sebagai sespan, tetapi Amazon menjalankannya untuk Anda. Yang harus Anda lakukan adalah mengkonfigurasi router log. Konfigurasi terjadi melalui dedicated `ConfigMap` yang harus memenuhi kriteria berikut:
+ Bernama `aws-logging` 
+ Dibuat di namespace khusus yang disebut `aws-observability` 
+ Tidak dapat melebihi 5300 karakter.

Setelah Anda membuat`ConfigMap`, Amazon EKS di Fargate secara otomatis mendeteksi dan mengonfigurasi router log dengannya. Fargate menggunakan versi AWS untuk Fluent Bit, distribusi Fluent Bit yang sesuai dengan hulu yang dikelola oleh. AWS Untuk informasi lebih lanjut, lihat [AWS Fluent Bit](https://github.com/aws/aws-for-fluent-bit) on GitHub.

Router log memungkinkan Anda untuk menggunakan luasnya layanan di AWS untuk analisis log dan penyimpanan. Anda dapat melakukan streaming log dari Fargate langsung ke Amazon, CloudWatch Amazon OpenSearch Service. [Anda juga dapat melakukan streaming log ke tujuan seperti [Amazon S3](https://aws.amazon.com/s3/), [Amazon Kinesis Data Streams, dan alat mitra melalui Amazon Data](https://aws.amazon.com/kinesis/data-streams/) Firehose.](https://aws.amazon.com/kinesis/data-firehose/)
+ Profil Fargate yang sudah ada yang menentukan namespace Kubernetes yang sudah ada yang kamu gunakan untuk Pod Fargate. Untuk informasi selengkapnya, lihat [Langkah 3: Buat profil Fargate untuk cluster Anda](fargate-getting-started.md#fargate-gs-create-profile).
+ Peran eksekusi Fargate Pod yang ada. Untuk informasi selengkapnya, lihat [Langkah 2: Buat peran eksekusi Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role).

## Konfigurasi router log
<a name="fargate-logging-log-router-configuration"></a>

**penting**  
Agar log berhasil dipublikasikan, harus ada akses jaringan dari VPC tempat klaster Anda berada ke tujuan log. Ini terutama menyangkut pengguna yang menyesuaikan aturan jalan keluar untuk VPC mereka. Untuk contoh menggunakan CloudWatch, lihat [Menggunakan CloudWatch Log dengan titik akhir VPC antarmuka](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html) di Panduan Pengguna *Amazon CloudWatch Logs*.

Pada langkah-langkah berikut, ganti masing-masing *example value* dengan nilai Anda sendiri.

1. Buat namespace Kubernetes khusus bernama. `aws-observability`

   1. Simpan konten berikut ini ke file bernama `aws-observability-namespace.yaml` pada komputer Anda. Nilai untuk `name` harus `aws-observability` dan `aws-observability: enabled` label diperlukan.

      ```
      kind: Namespace
      apiVersion: v1
      metadata:
        name: aws-observability
        labels:
          aws-observability: enabled
      ```

   1. Buat namespace.

      ```
      kubectl apply -f aws-observability-namespace.yaml
      ```

1. Buat `ConfigMap` dengan nilai `Fluent Conf` data untuk mengirimkan log kontainer ke tujuan. Fluent Conf adalah Fluent Bit, yang merupakan bahasa konfigurasi prosesor log yang cepat dan ringan yang digunakan untuk merutekan log kontainer ke tujuan log pilihan Anda. Untuk informasi lebih lanjut, lihat [File konfigurasi](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/classic-mode/configuration-file) dalam dokumentasi Fluent Bit.
**penting**  
Bagian utama yang termasuk dalam tipikal `Fluent Conf` adalah`Service`,`Input`,`Filter`, dan`Output`. Namun, router log Fargate hanya menerima:  
`Output`Bagian `Filter` dan.
Sebuah `Parser` bagian.
Jika Anda memberikan bagian lain, mereka akan ditolak.

   Router log Fargate mengelola bagian `Service` dan`Input`. Ini memiliki `Input` bagian berikut, yang tidak dapat dimodifikasi dan tidak diperlukan di Anda`ConfigMap`. Namun, Anda bisa mendapatkan wawasan darinya, seperti batas buffer memori dan tag yang diterapkan untuk log.

   ```
   [INPUT]
       Name tail
       Buffer_Max_Size 66KB
       DB /var/log/flb_kube.db
       Mem_Buf_Limit 45MB
       Path /var/log/containers/*.log
       Read_From_Head On
       Refresh_Interval 10
       Rotate_Wait 30
       Skip_Long_Lines On
       Tag kube.*
   ```

   Saat membuat`ConfigMap`, pertimbangkan aturan berikut yang digunakan Fargate untuk memvalidasi bidang:
   +  `[FILTER]`,`[OUTPUT]`, dan seharusnya `[PARSER]` ditentukan di bawah setiap kunci yang sesuai. Contohnya, `[FILTER]` harus berada dalam `filters.conf`. Anda dapat memiliki satu atau lebih `[FILTER]` s di bawah`filters.conf`. `[PARSER]`Bagian `[OUTPUT]` dan juga harus berada di bawah kunci yang sesuai. Dengan menentukan beberapa `[OUTPUT]` bagian, Anda dapat merutekan log Anda ke tujuan yang berbeda secara bersamaan.
   + Fargate memvalidasi kunci yang diperlukan untuk setiap bagian. `Name` dan `match` diperlukan untuk setiap `[FILTER]` dan `[OUTPUT]`. `Name` dan `format` diperlukan untuk setiap `[PARSER]`. Kunci peka terhadap huruf besar dan kecil.
   + Variabel lingkungan seperti `${ENV_VAR}` tidak diizinkan di`ConfigMap`.
   + Indentasi harus sama dengan arahan atau pasangan nilai kunci dalam setiap `filters.conf`, `output.conf`, dan `parsers.conf`. Pasangan nilai kunci yang harus menjorok lebih dari arahan.
   + Fargate memvalidasi terhadap filter yang didukung berikut:`grep`,,`parser`,,`record_modifier`, `rewrite_tag` `throttle``nest`, `modify` dan. `kubernetes`
   + Fargate memvalidasi output yang didukung berikut: `es`, `firehose`, `kinesis_firehose`, `cloudwatch`, `cloudwatch_logs`, dan `kinesis`.
   + Setidaknya satu `Output` plugin yang didukung harus disediakan di `ConfigMap` untuk mengaktifkan logging. `Filter`dan `Parser` tidak diperlukan untuk mengaktifkan logging.

     Anda juga dapat menjalankan Fluent Bit di Amazon EC2 menggunakan konfigurasi yang diinginkan untuk memecahkan masalah apa pun yang timbul dari validasi. Buat Anda `ConfigMap` menggunakan salah satu contoh berikut.
**penting**  
Amazon EKS Fargate logging tidak mendukung konfigurasi dinamis file. `ConfigMap` Setiap perubahan pada a hanya `ConfigMap` diterapkan pada Pod baru. Perubahan tidak diterapkan pada Pod yang ada.

     Buat `ConfigMap` menggunakan contoh untuk tujuan log yang Anda inginkan.
**catatan**  
Anda juga dapat menggunakan Amazon Kinesis Data Streams untuk tujuan log Anda. Jika Anda menggunakan Kinesis Data Streams, pastikan bahwa peran eksekusi pod telah `kinesis:PutRecords` diberikan izin. Untuk informasi selengkapnya, lihat Izin Amazon Kinesis [Data](https://docs.fluentbit.io/manual/pipeline/outputs/kinesis#permissions) Streams *di Bit Lancar: Manual* Resmi.  
**Example**  

------
#### [ CloudWatch ]

   Anda memiliki dua opsi output saat menggunakan CloudWatch:
   +  [Plugin keluaran yang ditulis dalam C](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/cloudwatch) 
   +  [Plugin keluaran yang ditulis dalam Golang](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) 

   Contoh berikut menunjukkan cara menggunakan `cloudwatch_logs` plugin untuk mengirim log ke CloudWatch.

   1. Simpan konten berikut ini ke file bernama `aws-logging-cloudwatch-configmap.yaml`. Ganti *region-code* dengan AWS Wilayah tempat cluster Anda berada. Parameter di bawah `[OUTPUT]` diperlukan.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        flb_log_cw: "false"  # Set to true to ship Fluent Bit process logs to CloudWatch.
        filters.conf: |
          [FILTER]
              Name parser
              Match *
              Key_name log
              Parser crio
          [FILTER]
              Name kubernetes
              Match kube.*
              Merge_Log On
              Keep_Log Off
              Buffer_Size 0
              Kube_Meta_Cache_TTL 300s
        output.conf: |
          [OUTPUT]
              Name cloudwatch_logs
              Match   kube.*
              region region-code
              log_group_name my-logs
              log_stream_prefix from-fluent-bit-
              log_retention_days 60
              auto_create_group true
        parsers.conf: |
          [PARSER]
              Name crio
              Format Regex
              Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$
              Time_Key    time
              Time_Format %Y-%m-%dT%H:%M:%S.%L%z
      ```

   1. Menerapkan manifes ke klaster Anda.

      ```
      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
      ```

------
#### [ Amazon OpenSearch Service ]

   Jika Anda ingin mengirim log ke Amazon OpenSearch Service, Anda dapat menggunakan [es](https://docs.fluentbit.io/manual/v/1.5/pipeline/outputs/elasticsearch) output, yang merupakan plugin yang ditulis dalam C. Contoh berikut menunjukkan cara menggunakan plugin untuk mengirim log ke OpenSearch.

   1. Simpan konten berikut ini ke file bernama `aws-logging-opensearch-configmap.yaml`. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

      ```
      kind: ConfigMap
      apiVersion: v1
      metadata:
        name: aws-logging
        namespace: aws-observability
      data:
        output.conf: |
          [OUTPUT]
            Name  es
            Match *
            Host  search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com
            Port  443
            Index example
            Type  example_type
            AWS_Auth On
            AWS_Region region-code
            tls   On
      ```

   1. Menerapkan manifes ke klaster Anda.

      ```
      kubectl apply -f aws-logging-opensearch-configmap.yaml
      ```

------
#### [ Firehose ]

   Anda memiliki dua opsi output saat mengirim log ke Firehose:
   +  [kinesis\$1firehose](https://docs.fluentbit.io/manual/pipeline/outputs/firehose) — Plugin keluaran yang ditulis dalam C.
   +  [firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) - Plugin keluaran yang ditulis dalam Golang.

     Contoh berikut menunjukkan cara menggunakan `kinesis_firehose` plugin untuk mengirim log ke Firehose.

     1. Simpan konten berikut ini ke file bernama `aws-logging-firehose-configmap.yaml`. Ganti *region-code* dengan AWS Wilayah tempat cluster Anda berada.

        ```
        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: aws-logging
          namespace: aws-observability
        data:
          output.conf: |
            [OUTPUT]
             Name  kinesis_firehose
             Match *
             region region-code
             delivery_stream my-stream-firehose
        ```

     1. Menerapkan manifes ke klaster Anda.

        ```
        kubectl apply -f aws-logging-firehose-configmap.yaml
        ```

------

1. Siapkan izin untuk peran eksekusi Fargate Pod untuk mengirim log ke tujuan Anda.

   1. Unduh kebijakan IAM untuk tujuan Anda ke komputer Anda.  
**Example**  

------
#### [ CloudWatch ]

      Unduh kebijakan CloudWatch IAM ke komputer Anda. Anda juga dapat [melihat kebijakan](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json) di GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
      ```

------
#### [ Amazon OpenSearch Service ]

      Unduh kebijakan OpenSearch IAM ke komputer Anda. Anda juga dapat [melihat kebijakan](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json) di GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json
      ```

      Pastikan kontrol akses OpenSearch Dashboard dikonfigurasi dengan benar. OpenSearch Dashboard `all_access role` in harus memiliki peran eksekusi Fargate Pod dan peran IAM yang dipetakan. Pemetaan yang sama harus dilakukan untuk `security_manager` peran tersebut. Anda dapat menambahkan pemetaan sebelumnya dengan memilih`Menu`, kemudian, lalu `Security``Roles`, dan kemudian memilih peran masing-masing. Untuk informasi selengkapnya, lihat [Bagaimana cara memecahkan masalah CloudWatch Log sehingga mengalir ke domain Amazon ES saya](https://aws.amazon.com/tr/premiumsupport/knowledge-center/es-troubleshoot-cloudwatch-logs/)? .

------
#### [ Firehose ]

      Unduh kebijakan Firehose IAM ke komputer Anda. Anda juga dapat [melihat kebijakan](https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json) di GitHub.

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json
      ```

------

   1. Buat kebijakan IAM dari file kebijakan yang Anda unduh.

      ```
      aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
      ```

   1. Lampirkan kebijakan IAM ke peran eksekusi pod yang ditentukan untuk profil Fargate Anda dengan perintah berikut. Ganti *111122223333* dengan ID akun Anda. Ganti *AmazonEKSFargatePodExecutionRole* dengan peran eksekusi Pod Anda (untuk informasi selengkapnya, lihat[Langkah 2: Buat peran eksekusi Fargate Pod](fargate-getting-started.md#fargate-sg-pod-execution-role)).

      ```
      aws iam attach-role-policy \
        --policy-arn arn:aws: iam::111122223333:policy/eks-fargate-logging-policy \
        --role-name AmazonEKSFargatePodExecutionRole
      ```

### Dukungan filter Kubernetes
<a name="fargate-logging-kubernetes-filter"></a>

Filter Fluent Bit Kubernetes memungkinkan Anda menambahkan metadata Kubernetes ke file log Anda. Untuk informasi selengkapnya tentang filter, lihat [Kubernetes](https://docs.fluentbit.io/manual/pipeline/filters/kubernetes) di dokumentasi Fluent Bit. Anda dapat menerapkan filter menggunakan titik akhir server API.

```
filters.conf: |
    [FILTER]
        Name             kubernetes
        Match            kube.*
        Merge_Log           On
        Buffer_Size         0
        Kube_Meta_Cache_TTL 300s
```

**penting**  
 `Kube_URL`,`Kube_CA_File`,`Kube_Token_Command`, dan `Kube_Token_File` merupakan parameter konfigurasi yang dimiliki layanan dan tidak boleh ditentukan. Amazon EKS Fargate mengisi nilai-nilai ini.
 `Kube_Meta_Cache_TTL`adalah waktu Fluent Bit menunggu hingga berkomunikasi dengan server API untuk metadata terbaru. Jika `Kube_Meta_Cache_TTL` tidak ditentukan, Amazon EKS Fargate menambahkan nilai default 30 menit untuk mengurangi beban pada server API.

### Untuk mengirimkan log proses Fluent Bit ke akun Anda
<a name="ship-fluent-bit-process-logs"></a>

Anda dapat secara opsional mengirimkan log proses Fluent Bit ke Amazon CloudWatch menggunakan yang berikut ini. `ConfigMap` Pengiriman log proses Fluent Bit ke CloudWatch membutuhkan biaya konsumsi dan penyimpanan log tambahan. Ganti *region-code* dengan AWS Wilayah tempat cluster Anda berada.

```
kind: ConfigMap
apiVersion: v1
metadata:
  name: aws-logging
  namespace: aws-observability
  labels:
data:
  # Configuration files: server, input, filters and output
  # ======================================================
  flb_log_cw: "true"  # Ships Fluent Bit process logs to CloudWatch.

  output.conf: |
    [OUTPUT]
        Name cloudwatch
        Match kube.*
        region region-code
        log_group_name fluent-bit-cloudwatch
        log_stream_prefix from-fluent-bit-
        auto_create_group true
```

Log berada CloudWatch di AWS Wilayah yang sama dengan cluster. Nama grup log adalah ` my-cluster-fluent-bit-logs` dan nama logstream Fluent Bit adalah. `fluent-bit-podname-pod-namespace `

**catatan**  
Log proses dikirim hanya ketika proses Bit Lancar berhasil dimulai. Jika ada kegagalan saat memulai Fluent Bit, log proses terlewatkan. Anda hanya dapat mengirimkan log proses ke CloudWatch.
Untuk men-debug log proses pengiriman ke akun Anda, Anda dapat menerapkan sebelumnya `ConfigMap` untuk mendapatkan log proses. Fluent Bit gagal memulai biasanya karena Anda `ConfigMap` tidak diurai atau diterima oleh Fluent Bit saat memulai.

### Untuk menghentikan pengiriman log proses Fluent Bit
<a name="stop-fluent-bit-process-logs"></a>

Pengiriman log proses Fluent Bit ke CloudWatch membutuhkan biaya konsumsi dan penyimpanan log tambahan. Untuk mengecualikan log proses dalam `ConfigMap` pengaturan yang ada, lakukan langkah-langkah berikut.

1. Temukan grup CloudWatch log yang dibuat secara otomatis untuk log proses Fluent Bit klaster Amazon EKS Anda setelah mengaktifkan logging Fargate. Ini mengikuti format` my-cluster-fluent-bit-logs`.

1. Hapus aliran CloudWatch log yang ada yang dibuat untuk setiap log proses Pod di grup CloudWatch log.

1. Edit `ConfigMap` dan atur`flb_log_cw: "false"`.

1. Mulai ulang semua Pod yang ada di klaster.

## Aplikasi uji
<a name="fargate-logging-test-application"></a>

1. Menerapkan contoh Pod.

   1. Simpan konten berikut ini ke file bernama `sample-app.yaml` pada komputer Anda.

      ```
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sample-app
        namespace: same-namespace-as-your-fargate-profile
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
                ports:
                  - name: http
                    containerPort: 80
      ```

   1. Menerapkan manifes ke klaster.

      ```
      kubectl apply -f sample-app.yaml
      ```

1. Lihat log NGINX menggunakan tujuan yang Anda konfigurasikan di. `ConfigMap`

## Pertimbangan ukuran
<a name="fargate-logging-size-considerations"></a>

Kami menyarankan Anda merencanakan hingga 50 MB memori untuk router log. Jika Anda mengharapkan aplikasi Anda untuk menghasilkan catatan pada throughput yang sangat tinggi, maka Anda harus menyediakan memori hingga 100 MB.

## Pemecahan Masalah
<a name="fargate-logging-troubleshooting"></a>

Untuk mengonfirmasi apakah fitur logging diaktifkan atau dinonaktifkan karena beberapa alasan, seperti tidak valid`ConfigMap`, dan mengapa fitur tersebut tidak valid, periksa peristiwa Pod Anda. `kubectl describe pod pod-name ` Outputnya mungkin mencakup peristiwa Pod yang menjelaskan apakah logging diaktifkan atau tidak, seperti contoh keluaran berikut.

```
[...]
Annotations:          CapacityProvisioned: 0.25vCPU 0.5GB
                      Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
[...]
Events:
  Type     Reason           Age        From                                                           Message
  ----     ------           ----       ----                                                           -------
  Warning  LoggingDisabled  <unknown>  fargate-scheduler                                              Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
```

Peristiwa Pod bersifat sementara dengan periode waktu tergantung pada pengaturan. Anda juga dapat melihat anotasi Pod menggunakan`kubectl describe pod pod-name `. Dalam anotasi Pod, terdapat informasi tentang apakah fitur logging diaktifkan atau dinonaktifkan dan alasannya.

# Pilih jenis instans node Amazon EC2 yang optimal
<a name="choosing-instance-type"></a>

Amazon EC2 menyediakan berbagai pilihan jenis instans untuk node pekerja. Setiap jenis instans menawarkan kemampuan komputasi, memori, penyimpanan, dan jaringan yang berbeda. Setiap instance juga dikelompokkan dalam keluarga instance berdasarkan kemampuan ini. Untuk daftar, lihat [Jenis instans yang tersedia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#AvailableInstanceTypes) di *Panduan Pengguna Amazon EC2*. Amazon EKS merilis beberapa variasi Amazon EC2 AMIs untuk mengaktifkan dukungan. Untuk memastikan bahwa jenis instans yang Anda pilih kompatibel dengan Amazon EKS, pertimbangkan kriteria berikut.
+ Semua Amazon EKS saat ini AMIs tidak mendukung `mac` keluarga.
+ Amazon EKS lengan dan non-akselerasi AMIs tidak mendukung`g3`,`g4`,`inf`, dan `p` keluarga.
+ Amazon EKS yang dipercepat AMIs tidak mendukung`a`,`c`,`hpc`,`m`, dan `t` keluarga.
+ Untuk instans berbasis ARM, Amazon Linux 2023 (AL2023) hanya mendukung jenis instans yang menggunakan prosesor Graviton2 atau yang lebih baru. AL2023 tidak mendukung `A1` instance.

Saat memilih di antara jenis instans yang didukung oleh Amazon EKS, pertimbangkan kemampuan masing-masing jenis berikut.

 **Jumlah instance dalam grup node**   
Secara umum, instance yang lebih sedikit dan lebih besar lebih baik, terutama jika Anda memiliki banyak Daemonset. Setiap instance memerlukan panggilan API ke server API, jadi semakin banyak instance yang Anda miliki, semakin banyak beban di server API.

 **Sistem operasi**   
Tinjau jenis instans yang didukung untuk [Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html), [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html), dan [Bottlerocket](https://aws.amazon.com/bottlerocket/faqs/). Sebelum membuat instance Windows, tinjau [Deploy node Windows di kluster EKS](windows-support.md).

 **Arsitektur perangkat keras**   
Apakah Anda membutuhkan x86 atau Arm? Sebelum menerapkan instance Arm, tinjau Arm [Amazon Linux yang dioptimalkan oleh Amazon EKS](eks-optimized-ami.md#arm-ami). AMIs Apakah Anda memerlukan instance yang dibangun di atas Sistem Nitro ([Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances) atau [Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)) atau yang memiliki kemampuan [Akselerasi?](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/accelerated-computing-instances.html) Jika Anda membutuhkan kemampuan yang dipercepat, Anda hanya dapat menggunakan Linux dengan Amazon EKS.

 **Jumlah maksimum Pod**   
Karena setiap Pod diberi alamat IP sendiri, jumlah alamat IP yang didukung oleh tipe instance merupakan faktor dalam menentukan jumlah Pod yang dapat dijalankan pada instance. Untuk menentukan secara manual berapa banyak Pod yang didukung oleh tipe instance, lihat.  
AWS Jenis instans [Sistem Nitro](https://aws.amazon.com/ec2/nitro/) secara opsional mendukung lebih banyak alamat IP daripada jenis instans Sistem non-Nitro. Namun, tidak semua alamat IP yang ditetapkan untuk sebuah instance tersedia untuk Pod. Untuk menetapkan jumlah alamat IP yang jauh lebih besar ke instans Anda, Anda harus memiliki versi `1.9.0` atau yang lebih baru dari add-on Amazon VPC CNI yang diinstal di cluster Anda dan dikonfigurasi dengan tepat. Untuk informasi selengkapnya, lihat [Tetapkan lebih banyak alamat IP ke node Amazon EKS dengan awalan](cni-increase-ip-addresses.md). Untuk menetapkan jumlah alamat IP terbesar ke instans Anda, Anda harus memiliki versi `1.10.1` atau yang lebih baru dari add-on Amazon VPC CNI yang diinstal di cluster Anda dan menyebarkan cluster dengan keluarga. `IPv6`

 **Keluarga IP**   
Anda dapat menggunakan jenis instans apa pun yang didukung saat menggunakan `IPv4` keluarga untuk klaster, yang memungkinkan klaster Anda menetapkan `IPv4` alamat pribadi ke Pod dan Layanan Anda. Tetapi jika Anda ingin menggunakan `IPv6` keluarga untuk cluster Anda, maka Anda harus menggunakan jenis instance [AWS Nitro System](https://aws.amazon.com/ec2/nitro/) atau tipe instance bare metal. Hanya `IPv4` didukung untuk instance Windows. Cluster Anda harus menjalankan versi `1.10.1` atau yang lebih baru dari add-on Amazon VPC CNI. Untuk informasi selengkapnya tentang penggunaan `IPv6`, lihat [Pelajari tentang IPv6 alamat ke klaster, Pod, dan layanan](cni-ipv6.md).

 **Versi add-on Amazon VPC CNI yang Anda jalankan**   
[Versi terbaru [plugin Amazon VPC CNI untuk Kubernetes](https://github.com/aws/amazon-vpc-cni-k8s) mendukung jenis instans ini.](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/pkg/vpc/vpc_ip_resource_limit.go) Anda mungkin perlu memperbarui versi add-on Amazon VPC CNI untuk memanfaatkan jenis instans terbaru yang didukung. Untuk informasi selengkapnya, lihat [Tetapkan IPs ke Pod dengan Amazon VPC CNI](managing-vpc-cni.md). Versi terbaru mendukung fitur terbaru untuk digunakan dengan Amazon EKS. Versi sebelumnya tidak mendukung semua fitur. Anda dapat melihat fitur yang didukung oleh versi yang berbeda di [Changelog aktif](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/CHANGELOG.md). GitHub

 ** AWS Wilayah tempat Anda membuat node**   
Tidak semua tipe instans tersedia di semua AWS Wilayah.

 **Apakah Anda menggunakan grup keamanan untuk Pod**   
Jika Anda menggunakan grup keamanan untuk Pod, hanya tipe instance tertentu yang didukung. Untuk informasi selengkapnya, lihat [Menetapkan grup keamanan ke Pod individual](security-groups-for-pods.md).

## Bagaimana MaxPods ditentukan
<a name="max-pods-precedence"></a>

`maxPods`Nilai akhir yang diterapkan pada node tergantung pada beberapa komponen yang berinteraksi dalam urutan prioritas tertentu. Memahami urutan ini membantu Anda menghindari perilaku tak terduga saat menyesuaikan`maxPods`.

 **Urutan prioritas (tertinggi ke terendah):** 

1.  **Penegakan grup node terkelola** — Saat Anda menggunakan grup node terkelola tanpa [AMI kustom](launch-templates.md#launch-template-custom-ami), Amazon EKS memberlakukan batasan `maxPods` pada data pengguna node. Untuk contoh dengan kurang dari 30 vCPUs, tutupnya adalah`110`. Untuk contoh dengan lebih besar dari 30 vCPUs, tutupnya adalah`250`. Nilai ini lebih diutamakan daripada `maxPods` konfigurasi lainnya, termasuk. `maxPodsExpression`

1.  **`maxPods`konfigurasi kubelet** - Jika Anda mengatur `maxPods` secara langsung dalam konfigurasi kubelet (misalnya, melalui template peluncuran dengan AMI kustom), nilai ini lebih diutamakan. `maxPodsExpression`

1.  **nodeadm `maxPodsExpression`** — Jika Anda menggunakan [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/examples/#defining-a-max-pods-expression)dalam Anda`NodeConfig`, nodeadm mengevaluasi ekspresi untuk menghitung. `maxPods` Ini hanya efektif jika nilainya belum ditetapkan oleh sumber prioritas yang lebih tinggi.

1.  **Perhitungan berbasis ENI default** - Jika tidak ada nilai lain yang ditetapkan, AMI menghitung `maxPods` berdasarkan jumlah antarmuka jaringan elastis dan alamat IP yang didukung oleh jenis instans. Ini setara dengan rumus`(number of ENIs × (IPs per ENI − 1)) + 2`. `+ 2`Akun untuk Amazon VPC CNI dan `kube-proxy` berjalan di setiap node, yang tidak menggunakan alamat IP Pod.

**penting**  
Jika Anda menggunakan grup node terkelola dan disetel `maxPodsExpression``NodeConfig`, penegakan grup node terkelola akan mengesampingkan ekspresi Anda. Untuk menggunakan `maxPods` nilai kustom dengan grup node terkelola, Anda harus menentukan AMI kustom di template peluncuran dan menyetelnya `maxPods` secara langsung. Untuk informasi selengkapnya, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).

 **Grup simpul terkelola vs. node yang dikelola sendiri** 

Dengan grup node terkelola (tanpa AMI khusus), Amazon EKS menyuntikkan `maxPods` nilai ke dalam data pengguna bootstrap node. Ini berarti:
+ `maxPods`Nilai selalu dibatasi pada `110` atau `250` tergantung pada ukuran instance.
+ Setiap yang `maxPodsExpression` Anda konfigurasikan akan diganti oleh nilai yang disuntikkan ini.
+ Untuk menggunakan `maxPods` nilai yang berbeda, tentukan AMI kustom di template peluncuran Anda dan `--use-max-pods false` teruskan `--kubelet-extra-args '--max-pods=my-value'` ke `bootstrap.sh` skrip. Sebagai contoh, lihat [Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).

Dengan node yang dikelola sendiri, Anda memiliki kontrol penuh atas proses bootstrap. Anda dapat menggunakan `maxPodsExpression` di Anda `NodeConfig` atau lulus `--max-pods` langsung ke`bootstrap.sh`.

## Pertimbangan untuk Mode Otomatis EKS
<a name="_considerations_for_eks_auto_mode"></a>

Mode Otomatis EKS membatasi jumlah pod pada node ke yang lebih rendah dari:
+ 110 polong tutup keras
+ Hasil perhitungan pod maks yang dijelaskan di atas.

# Buat node dengan gambar yang dioptimalkan sebelumnya
<a name="eks-optimized-amis"></a>

Anda dapat menerapkan node dengan Amazon EKS yang dioptimalkan [Amazon Machine Images](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMIs) atau kustom Anda sendiri AMIs saat menggunakan grup node terkelola atau node yang dikelola sendiri. Jika Anda menjalankan node hybrid, lihat[Siapkan sistem operasi untuk node hybrid](hybrid-nodes-os.md). Untuk informasi tentang setiap jenis AMI Amazon EKS yang dioptimalkan, lihat salah satu topik berikut. Untuk petunjuk tentang cara membuat AMI kustom Anda sendiri, lihat[Buat AMI Amazon Linux yang dioptimalkan EKS khusus](eks-ami-build-scripts.md).

Dengan Amazon EKS Auto Mode, EKS mengelola EC2 instans termasuk memilih dan memperbarui AMI.

**Topics**
+ [Panduan untuk fitur AMIs transisi EKS AL2 & AL2 -Dipercepat](eks-ami-deprecation-faqs.md)
+ [Buat node dengan Amazon Linux yang dioptimalkan AMIs](eks-optimized-ami.md)
+ [Buat node dengan Bottlerocket yang dioptimalkan AMIs](eks-optimized-ami-bottlerocket.md)
+ [Buat node dengan Ubuntu Linux yang dioptimalkan AMIs](eks-partner-amis.md)
+ [Buat node dengan Windows yang dioptimalkan AMIs](eks-optimized-windows-ami.md)

# Panduan untuk fitur AMIs transisi EKS AL2 & AL2 -Dipercepat
<a name="eks-ami-deprecation-faqs"></a>

**Awas**  
Amazon EKS berhenti menerbitkan Amazon Linux 2 (AL2) yang dioptimalkan EKS AMIs pada 26 November 2025. AL2023 dan Bottlerocket berbasis Amazon EKS tersedia AMIs untuk semua versi Kubernetes yang didukung termasuk 1,33 dan yang lebih tinggi.

 AWS akan mengakhiri dukungan untuk EKS AL2 -dioptimalkan dan AL2 -dipercepat AMIs, efektif 26 November 2025. Meskipun Anda dapat terus menggunakan EKS AL2 AMIs setelah tanggal end-of-support (EOS) (26 November 2025), EKS tidak akan lagi merilis versi atau pembaruan Kubernetes baru AL2 AMIs, termasuk rilis minor, tambalan, dan perbaikan bug setelah tanggal ini. Kami merekomendasikan untuk meningkatkan ke Amazon Linux 2023 (AL2023) atau Bottlerocket: AMIs
+ AL2023 memungkinkan secure-by-default pendekatan dengan kebijakan keamanan yang telah dikonfigurasi sebelumnya, SELinux dalam mode permisif, mode IMDSv2 -only diaktifkan secara default, waktu boot yang dioptimalkan, dan manajemen paket yang ditingkatkan untuk meningkatkan keamanan dan kinerja, cocok untuk infrastruktur yang membutuhkan penyesuaian signifikan seperti akses tingkat OS langsung atau perubahan node yang ekstensif. Untuk mempelajari lebih lanjut, lihat [AL2023 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs/) atau lihat panduan migrasi terperinci kami di[Tingkatkan dari Amazon Linux 2 ke Amazon Linux 2023](al2023.md).
+ Bottlerocket memungkinkan peningkatan keamanan, waktu boot yang lebih cepat, dan permukaan serangan yang lebih kecil untuk meningkatkan efisiensi dengan desain kontainer yang dibuat khusus dan dioptimalkan, sangat cocok untuk pendekatan asli kontainer dengan kustomisasi node minimal. Untuk mempelajari lebih lanjut, lihat [Bottlerocket FAQs](https://aws.amazon.com/bottlerocket/faqs/) atau lihat panduan migrasi terperinci kami di. [Buat node dengan Bottlerocket yang dioptimalkan AMIs](eks-optimized-ami-bottlerocket.md)

Atau, Anda bisa [Buat AMI Amazon Linux yang dioptimalkan EKS khusus](eks-ami-build-scripts.md) sampai tanggal EOS (26 November 2025). Selain itu, Anda dapat membuat AMI khusus dengan instans dasar Amazon Linux 2 hingga tanggal Amazon Linux 2 EOS (30 Juni 2026).

## Migrasi dan dukungan FAQs
<a name="_migration_and_support_faqs"></a>

### Bagaimana cara saya bermigrasi dari AMI saya AL2 ke AL2 023 AMI?
<a name="_how_do_i_migrate_from_my_al2_to_an_al2023_ami"></a>

Sebaiknya buat dan implementasikan rencana migrasi yang mencakup pengujian beban kerja aplikasi menyeluruh dan prosedur rollback yang terdokumentasi, lalu ikuti step-by-step petunjuk dalam Upgrade [dari Amazon Linux 2 ke Amazon Linux 2023](https://docs.aws.amazon.com/eks/latest/userguide/al2023.html) dalam dokumentasi resmi EKS.

### Dapatkah saya membuat AL2 AMI kustom melewati tanggal EKS end-of-support (EOS) untuk EKS yang dioptimalkan? AL2 AMIs
<a name="_can_i_build_a_custom_al2_ami_past_the_eks_end_of_support_eos_date_for_eks_optimized_al2_amis"></a>

Meskipun kami merekomendasikan pindah ke EKS yang didukung dan dipublikasikan secara resmi yang dioptimalkan AMIs untuk AL2 023 atau Bottlerocket, Anda dapat membuat EKS kustom yang dioptimalkan AL2 dan -dipercepat AL2 hingga AMIs tanggal AL2 AMI EOS (26 November 2025). Atau, Anda dapat membuat AMI kustom dengan instans dasar Amazon Linux 2 hingga tanggal Amazon Linux 2 EOS (30 Juni 2026). Untuk step-by-step petunjuk untuk membuat AMI yang AL2 dioptimalkan dan dipercepat EKS kustom, lihat [Membuat AL2 AMI Amazon Linux kustom di dokumentasi](https://docs.aws.amazon.com/eks/latest/userguide/eks-ami-build-scripts.html) resmi EKS.

### Apakah kebijakan dukungan versi EKS Kubernetes berlaku untuk distribusi Amazon Linux?
<a name="_does_the_eks_kubernetes_version_support_policy_apply_to_amazon_linux_distributions"></a>

Tidak. Tanggal EOS untuk EKS yang AL2 dioptimalkan dan AL2 dipercepat AMIs tidak tergantung pada garis waktu dukungan standar dan diperpanjang untuk versi Kubernetes oleh EKS. Anda perlu bermigrasi ke AL2 023 atau Bottlerocket bahkan jika Anda menggunakan dukungan tambahan EKS.

### Bagaimana pergeseran dari cgroupv1 ke cgroupv2 memengaruhi migrasi saya?
<a name="_how_does_the_shift_from_cgroupv1_to_cgroupv2_affect_my_migration"></a>

[Komunitas Kubernetes](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/4569-cgroup-v1-maintenance-mode/README.md) memindahkan `cgroupv1` dukungan (digunakan oleh AL2) ke mode pemeliharaan, yang berarti tidak ada fitur baru yang akan ditambahkan dan hanya keamanan kritis dan perbaikan bug utama yang akan disediakan. Untuk mengadopsi `cgroupv2` di Kubernetes, Anda perlu memastikan kompatibilitas di seluruh komponen OS, kernel, runtime container, dan Kubernetes. Ini membutuhkan distribusi Linux yang memungkinkan secara `cgroupv2` default, seperti AL2 023, Bottlerocket, Red Hat Enterprise Linux (RHEL) 9\$1, Ubuntu 22.04\$1, atau Debian 11\$1. Distribusi ini dikirimkan dengan versi kernel ≥5.8, yang merupakan persyaratan minimum untuk `cgroupv2` dukungan di Kubernetes. Untuk mempelajari lebih lanjut, lihat [Tentang cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).

### Apa yang harus saya lakukan jika saya membutuhkan Neuron di AL2 AMI khusus saya?
<a name="_what_do_i_do_if_i_need_neuron_in_my_custom_al2_ami"></a>

Anda tidak dapat menjalankan aplikasi penuh bertenaga Neuron Anda secara native berbasis. AL2 AMIs Untuk memanfaatkan AWS Neuron pada AL2 AMI, Anda harus mengkontainerisasi aplikasi Anda menggunakan wadah yang didukung Neuron dengan distribusi AL2 non-Linux (misalnya, Ubuntu 22.04, Amazon Linux 2023, dll.) Dan kemudian menyebarkan kontainer tersebut pada AL2 AMI berbasis yang memiliki Neuron Driver () diinstal. `aws-neuronx-dkms`

### Haruskah saya beralih ke instans dasar Amazon Linux 2 setelah tanggal EKS AL2 AMI EOS (26 November 2025)?
<a name="_should_i_switch_to_a_bare_amazon_linux_2_base_instance_after_the_eks_al2_ami_eos_date_november_26_2025"></a>

Beralih ke instans dasar Amazon Linux 2 tidak memiliki pengoptimalan spesifik, konfigurasi runtime kontainer, dan penyesuaian yang disediakan oleh EKS resmi yang dioptimalkan dan dipercepat. AL2 AL2 AMIs Sebagai gantinya, jika Anda harus terus menggunakan solusi AL2 berbasis, kami sarankan untuk membuat AMI khusus menggunakan resep EKS AMI di [Buat AMI Amazon Linux yang dioptimalkan EKS khusus](eks-ami-build-scripts.md) atau [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami). Ini memastikan kompatibilitas dengan beban kerja Anda yang ada dan menyertakan pembaruan AL2 kernel hingga tanggal Amazon Linux 2 EOS (30 Juni 2026).

### Saat membuat AL2 AMI khusus menggunakan GitHub repositori EKS AMI setelah tanggal EKS AL2 AMI EOS (26 November 2025), dukungan apa yang tersedia untuk paket dari repositori seperti amzn2-core dan amzn2extra-docker?
<a name="_when_building_a_custom_al2_ami_using_the_eks_ami_github_repository_after_the_eks_al2_ami_eos_date_november_26_2025_what_support_is_available_for_packages_from_repositories_like_amzn2_core_and_amzn2extra_docker"></a>

[Resep EKS AMI di [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) menarik paket melalui YUM dari perangkat lunak Amazon Linux 2 standar seperti [amzn2-core dan amzn2extra-docker](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html).](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) Setelah tanggal EKS AL2 AMI EOS (26 November 2025), perangkat lunak ini akan terus didukung hingga tanggal Amazon Linux 2 EOS yang lebih luas (30 Juni 2026). Perhatikan bahwa dukungan terbatas pada pembaruan kernel selama periode ini, yang berarti Anda perlu mengelola dan menerapkan pembaruan paket lainnya secara manual, patch keamanan, dan dependensi non-kernel untuk menjaga keamanan dan kompatibilitas.

### Mengapa aplikasi Java menggunakan versi lama JDK8 di Amazon EKS dengan AL2 023 mengalami pengecualian Out of Memory (OOM) dan pod restart, dan bagaimana ini dapat diselesaikan?
<a name="_why_might_java_applications_using_older_versions_of_jdk8_on_amazon_eks_with_al2023_experience_out_of_memory_oom_exceptions_and_pod_restarts_and_how_can_this_be_resolved"></a>

Saat berjalan di node Amazon EKS dengan AL2 023, aplikasi Java yang mengandalkan versi JDK 8 sebelumnya `jdk8u372` dapat menyebabkan pengecualian OOM dan pod restart karena JVM tidak kompatibel dengannya. `cgroupv2` Masalah ini muncul secara khusus dari ketidakmampuan JVM untuk mendeteksi batas memori kontainer menggunakan`cgroupv2`, default di Amazon Linux 2023. Akibatnya, ia mendasarkan alokasi heap pada total memori node daripada batas yang ditentukan pod. Ini berasal dari `cgroupv2` mengubah lokasi penyimpanan untuk data batas memori, menyebabkan versi Java yang lebih lama salah membaca memori yang tersedia dan mengasumsikan sumber daya tingkat node. Beberapa opsi yang mungkin meliputi:
+  **Tingkatkan versi JDK**: Memutakhirkan ke `jdk8u372` atau yang lebih baru, atau ke versi JDK yang lebih baru dengan `cgroupv2` dukungan penuh, dapat menyelesaikan masalah ini. Untuk daftar versi Java kompatibel yang sepenuhnya mendukung`cgroupv2`, lihat [Tentang cgroup v2](https://kubernetes.io/docs/concepts/architecture/cgroups/).
+  **Buat AMI kustom**: Jika Anda harus terus menggunakan solusi AL2 berbasis, Anda dapat membuat AMI AL2 berbasis kustom (hingga 26 November 2025) menggunakan [Buat AMI Amazon Linux yang dioptimalkan EKS khusus](eks-ami-build-scripts.md) atau [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami). Misalnya, Anda dapat membuat AMI v1.33 AL2 berbasis (hingga 26 November 2025). Amazon EKS akan menyediakan AL2 berbasis AMIs hingga tanggal AL2 EKS EOS (26 November 2025). Setelah tanggal EOS (26 November 2025), Anda perlu membuat AMI sendiri.
+  **Aktifkan cgroupv1**: Jika Anda harus terus menggunakan`cgroupv1`, Anda dapat mengaktifkan `cgroupv1` pada AMI EKS 023 AL2. Untuk mengaktifkan, jalankan, `sudo grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=0"` dan reboot sistem (misalnya, EC2 instance atau node yang menjalankan Amazon Linux 2023). Ini akan memodifikasi parameter boot untuk sistem (misalnya, dengan menambahkan parameter kernel 'systemd.unified\$1cgroup\$1hierarchy=0' ke konfigurasi GRUB, yang menginstruksikan systemd untuk menggunakan hierarki lama) dan mengaktifkan. `cgroupv1` `cgroupv1` Perhatikan bahwa ketika Anda menjalankan perintah kotor ini, Anda mengkonfigurasi ulang kernel untuk diluncurkan dengan `cgroupv1` diaktifkan dan dinonaktifkan. `cgroupv2` Hanya satu dari versi cgroup ini yang digunakan untuk manajemen sumber daya aktif pada sebuah node. Ini tidak sama `cgroupv2` dengan berjalan dengan kompatibilitas mundur untuk `cgroupv1` API.

**Awas**  
Kami tidak merekomendasikan penggunaan berkelanjutan`cgroupv1`. Sebagai gantinya, kami sarankan untuk bermigrasi ke`cgroupv2`. Komunitas Kubernetes memindahkan `cgroupv1` dukungan (digunakan oleh AL2) ke mode pemeliharaan, yang berarti tidak ada fitur atau pembaruan baru yang akan ditambahkan dan hanya keamanan kritis dan perbaikan bug utama yang akan disediakan. Penghapusan penuh `cgroupv1` dukungan diharapkan dalam rilis masa depan, meskipun tanggal spesifik untuk penghapusan penuh ini belum diumumkan. Jika Anda mengalami masalah dengan`cgroupv1`, tidak AWS akan dapat memberikan dukungan dan menyarankan Anda meningkatkan ke`cgroupv2`.

## Kompatibilitas dan versi
<a name="_compatibility_and_versions"></a>

### Versi Kubernetes yang didukung untuk AL2 AMIs
<a name="_supported_kubernetes_versions_for_al2_amis"></a>

Kubernetes versi 1.32 adalah versi terakhir yang akan dirilis Amazon EKS ( AL2 Amazon Linux 2). AMIs Untuk versi Kubernetes yang [didukung](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) hingga 1.32, EKS akan terus merilis AL2 AMIs (AL2\$1ARM\$164, \$1x86\$164) dan -accelerated ( AL2\$1x86\$164\$1GPU) hingga 26 November 2025. AL2 AMIs AL2 Setelah tanggal ini, EKS akan berhenti merilis AL2 -optimized dan AL2 -accelerated AMIs untuk semua versi Kubernetes. Perhatikan bahwa tanggal EOS untuk EKS AL2 -optimized dan AL2 -accelerated AMIs tidak tergantung pada garis waktu dukungan standar dan diperpanjang untuk versi Kubernetes oleh EKS.

### Driver yang didukung dan perbandingan versi kernel Linux untuk AL2, AL2 023, dan Bottlerocket AMIs
<a name="_supported_drivers_and_linux_kernel_versions_comparison_for_al2_al2023_and_bottlerocket_amis"></a>


| Komponen | EKS AL2 AMI | EKS AL2 023 AMI | EKS Bottlerocket AMI | 
| --- | --- | --- | --- | 
|  Kompatibilitas OS Dasar  |  RHEL7/CentOS 7  |  Fedora/CentOS 9  |  N/A  | 
|   [Driver mode pengguna CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/why-cuda-compatibility.html#why-cuda-compatibility)   |  12.x  |  12,x, 13,x  |  12,x, 13,x  | 
|  Pengemudi GPU NVIDIA  |  R570  |  R580  |  R570, R580  | 
|   AWS Pengemudi Neuron  |  2.20\$1  |  2.20\$1  |  2.20\$1  | 
|  Kernel Linux  |  5.10  |  6.1, 6.12  |  6.1, 6.12  | 

Untuk informasi lebih lanjut tentang driver NVIDIA dan kompatibilitas CUDA, lihat [dokumentasi NVIDIA](https://docs.nvidia.com/datacenter/tesla/drivers/index.html#supported-drivers-and-cuda-toolkit-versions).

### AWS Kompatibilitas neuron dengan AL2 AMIs
<a name="shared_aws_neuron_compatibility_with_al2_amis"></a>

Mulai dari [rilis AWS Neuron 2.20](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/release-notes/prev/rn.html#neuron-2-20-0-whatsnew), Neuron Runtime (`aws-neuronx-runtime-lib`) yang digunakan oleh EKS berbasis AL AMIs tidak lagi mendukung Amazon Linux 2 (). AL2 Neuron Driver (`aws-neuronx-dkms`) sekarang menjadi satu-satunya paket AWS Neuron yang mendukung Amazon Linux 2. Ini berarti Anda tidak dapat menjalankan aplikasi bertenaga Neuron Anda secara native pada AMI berbasis AL2. Untuk mengatur Neuron pada AL2 023 AMIs, lihat panduan [Pengaturan AWS Neuron](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/setup/index.html#setup-guide-index).

### Kompatibilitas Kubernetes dengan AL2 AMIs
<a name="_kubernetes_compatibility_with_al2_amis"></a>

Komunitas Kubernetes telah memindahkan `cgroupv1` dukungan (digunakan oleh AL2) ke mode pemeliharaan. Ini berarti tidak ada fitur baru yang akan ditambahkan, dan hanya keamanan kritis dan perbaikan bug utama yang akan disediakan. Fitur Kubernetes apa pun yang mengandalkan cgroupv2, seperti MemoryQo S dan isolasi sumber daya yang disempurnakan, tidak tersedia. AL2 Selanjutnya, Amazon EKS Kubernetes versi 1.32 adalah versi terakhir yang didukung. AL2 AMIs Untuk menjaga kompatibilitas dengan versi Kubernetes terbaru, sebaiknya migrasi ke AL2 023 atau Bottlerocket, yang diaktifkan secara default. `cgroupv2`

### Kompatibilitas versi Linux dengan AL2 AMIs
<a name="_linux_version_compatibility_with_al2_amis"></a>

Amazon Linux 2 (AL2) didukung AWS hingga tanggal end-of-support (EOS) pada 30 Juni 2026. Namun, seiring AL2 bertambahnya usia, dukungan dari komunitas Linux yang lebih luas untuk aplikasi dan fungsionalitas baru menjadi lebih terbatas. AL2 AMIs didasarkan pada [kernel Linux 5.10](https://docs.aws.amazon.com/linux/al2/ug/kernel.html), sedangkan AL2 023 menggunakan [kernel Linux](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2-kernel.html) 6.1. Tidak seperti AL2 023, AL2 memiliki dukungan terbatas dari komunitas Linux yang lebih luas. Ini berarti banyak paket dan alat Linux hulu perlu di-backport untuk bekerja dengan AL2 versi kernel yang lebih lama, beberapa fitur Linux modern dan peningkatan keamanan tidak tersedia karena kernel yang lebih tua, banyak proyek open source telah usang atau dukungan terbatas untuk versi kernel yang lebih lama seperti 5.10.

### Paket usang tidak termasuk dalam 023 AL2
<a name="_deprecated_packages_not_included_in_al2023"></a>

Beberapa paket paling umum yang tidak disertakan atau yang diubah di AL2 023, termasuk:
+ Beberapa [paket biner sumber di Amazon Linux 2](https://docs.aws.amazon.com/linux/al2023/release-notes/removed-AL2023.6-AL2.html) tidak lagi tersedia di Amazon Linux 2023
+ Perubahan cara Amazon Linux mendukung versi paket yang berbeda (misalnya, [amazon-linux-extras sistem](https://repost.aws/questions/QUWGU3VFJMRSGf6MDPWn4tLg/how-to-resolve-amazon-linux-extras-in-al2023)) di AL2 023
+  [Paket Ekstra untuk Enterprise Linux (EPEL)](https://docs.aws.amazon.com/linux/al2023/ug/epel.html) tidak didukung di 023 AL2
+  [Aplikasi 32-bit](https://docs.aws.amazon.com/linux/al2023/ug/deprecated-al2.html#deprecated-32bit-rpms) tidak didukung di 023 AL2

Untuk mempelajari lebih lanjut, lihat [Membandingkan AL2 dan AL2 023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html).

### Perbandingan validasi FIPS di seluruh AL2, AL2 023, dan Bottlerocket
<a name="_fips_validation_comparison_across_al2_al2023_and_bottlerocket"></a>

Amazon Linux 2 (AL2), Amazon Linux 2023 (AL2023), dan Bottlerocket memberikan dukungan untuk kepatuhan Federal Information Processing Standards (FIPS).
+ AL2 disertifikasi di bawah FIPS 140-2 dan AL2 023 disertifikasi di bawah FIPS 140-3. Untuk mengaktifkan mode FIPS pada AL2 023, instal paket yang diperlukan di EC2 instans Amazon Anda dan ikuti langkah-langkah konfigurasi menggunakan instruksi di [Aktifkan Mode FIPS](https://docs.aws.amazon.com/linux/al2023/ug/fips-mode.html) di 023. AL2 Untuk mempelajari lebih lanjut, lihat [AL2023 FAQs](https://aws.amazon.com/linux/amazon-linux-2023/faqs).
+ Bottlerocket menyediakan varian yang dibuat khusus untuk FIPS yang membatasi komponen kernel dan ruang pengguna untuk penggunaan modul kriptografi yang telah diserahkan ke Program Validasi Modul Kriptografi FIPS 140-3.

### EKS AMI driver dan versi changelog
<a name="_eks_ami_driver_and_versions_changelog"></a>

Untuk daftar lengkap semua komponen EKS AMI dan versinya, lihat [Catatan Rilis Amazon EKS AMI](https://github.com/awslabs/amazon-eks-ami/releases) di GitHub.

# Buat node dengan Amazon Linux yang dioptimalkan AMIs
<a name="eks-optimized-ami"></a>

Amazon Elastic Kubernetes Service (Amazon EKS) menyediakan Amazon Machine Images () khusus yang dioptimalkan untuk menjalankan node pekerja AMIs Kubernetes. Amazon Linux (AL) yang dioptimalkan EKS ini telah AMIs dikonfigurasi sebelumnya dengan komponen-komponen penting—seperti AWS `kubelet` IAM Authenticator, dan `containerd` —untuk memastikan integrasi dan keamanan yang mulus dalam klaster Anda. Panduan ini merinci versi AMI yang tersedia dan menguraikan opsi khusus untuk komputasi yang dipercepat dan arsitektur berbasis ARM.

## Pertimbangan-pertimbangan
<a name="ami-considerations"></a>
+ Anda dapat melacak peristiwa keamanan atau privasi untuk Amazon Linux di [pusat keamanan Amazon Linux](https://alas.aws.amazon.com/) dengan memilih tab untuk versi yang Anda inginkan. Anda juga dapat berlangganan umpan RSS yang berlaku. Kejadian keamanan dan privasi mencakup gambaran umum mengenai masalah, paket apa yang terpengaruh, dan cara memperbarui instans Anda untuk memperbaiki masalah tersebut.
+ Sebelum menerapkan AMI yang dipercepat atau Arm, tinjau informasi di [Amazon Linux dan Amazon Linux yang dipercepat yang dioptimalkan oleh Amazon EKS](#gpu-ami). AMIs [Amazon EKS yang dioptimalkan Arm Amazon Linux AMIs](#arm-ami)
+  EC2 `P2`Instans Amazon tidak didukung di Amazon EKS karena memerlukan `NVIDIA` driver versi 470 atau lebih lama.
+ Setiap grup node terkelola yang baru dibuat dalam cluster pada versi `1.30` atau yang lebih baru akan secara otomatis default menggunakan AL2 023 sebagai sistem operasi node.

## Amazon EKS yang dioptimalkan Amazon Linux dipercepat AMIs
<a name="gpu-ami"></a>

Amazon Amazon Linux (AL) AMIs dipercepat yang dioptimalkan oleh Amazon EKS dibangun di atas standar Amazon Linux yang dioptimalkan EKS. AMIs Mereka dikonfigurasi untuk berfungsi sebagai gambar opsional untuk node Amazon EKS untuk mendukung beban kerja berbasis GPU, [Inferentia](https://aws.amazon.com/machine-learning/inferentia/), dan [Trainium](https://aws.amazon.com/machine-learning/trainium/).

Untuk informasi selengkapnya, lihat [Gunakan akselerasi yang dioptimalkan EKS AMIs untuk instans GPU](ml-eks-optimized-ami.md).

## Amazon EKS yang dioptimalkan Arm Amazon Linux AMIs
<a name="arm-ami"></a>

Instans Arm menawarkan penghematan biaya yang signifikan untuk penskalaan dan aplikasi berbasis Arm, seperti server web, layanan mikro yang dikontainerisasi, armada caching, dan penyimpanan data terdistribusi. Saat menambahkan simpul Arm ke klaster Anda, kaji dulu pertimbangan-pertimbangan berikut ini.
+ Jika klaster Anda diterapkan sebelum 17 Agustus 2020, Anda harus melakukan peningkatan satu kali dari manifes add-on cluster kritis. Ini agar Kubernetes dapat menarik gambar yang benar untuk setiap arsitektur perangkat keras yang digunakan di cluster Anda. Untuk informasi selengkapnya terkait cara memperbarui klaster add-on, lihat [Langkah 1: Bersiaplah untuk upgrade](update-cluster.md#update-existing-cluster). Jika Anda menerapkan cluster Anda pada atau setelah 17 Agustus 2020, maka plugin CoreDNS,, `kube-proxy` dan Amazon VPC CNI untuk add-on Kubernetes sudah memiliki kemampuan multi-arsitektur.
+ Aplikasi yang di-deploy ke simpul Arm harus dikompilasi untuk Arm.
+ Jika Anda memiliki DaemonSets yang di-deploy di klaster yang ada, atau Anda ingin menerapkannya ke klaster baru yang juga ingin Anda gunakan untuk menyebarkan node Arm, maka verifikasi bahwa Anda DaemonSet dapat berjalan di semua arsitektur perangkat keras di klaster Anda.
+ Anda dapat menjalankan grup simpul Arm dan grup simpul x86 dalam klaster yang sama. Jika Anda melakukannya, pertimbangkan untuk menerapkan image container multi-arsitektur ke repositori kontainer seperti Amazon Elastic Container Registry dan kemudian menambahkan pemilih node ke manifes Anda sehingga Kubernetes mengetahui arsitektur perangkat keras apa yang dapat digunakan Pod. Untuk informasi selengkapnya, lihat [Mendorong gambar multi-arsitektur](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html) di *Panduan Pengguna Amazon ECR* dan [Memperkenalkan gambar wadah multi-arsitektur untuk posting blog Amazon ECR](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr).

## Informasi selengkapnya
<a name="linux-more-information"></a>

Untuk informasi selengkapnya tentang menggunakan Amazon Linux yang dioptimalkan Amazon EKS AMIs, lihat bagian berikut:
+ Untuk menggunakan Amazon Linux dengan grup node terkelola, lihat[Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md).
+ Untuk meluncurkan node Amazon Linux yang dikelola sendiri, lihat[Ambil AMI Amazon Linux yang direkomendasikan IDs](retrieve-ami-id.md).
+ Untuk informasi versi, lihat [Ambil informasi versi Amazon Linux AMI](eks-linux-ami-versions.md).
+ Untuk mengambil yang terbaru IDs dari Amazon AMIs Linux Amazon EKS yang dioptimalkan, lihat. [Ambil AMI Amazon Linux yang direkomendasikan IDs](retrieve-ami-id.md)
+ Untuk skrip sumber terbuka yang digunakan untuk membangun Amazon EKS AMIs yang dioptimalkan, lihat. [Buat AMI Amazon Linux yang dioptimalkan EKS khusus](eks-ami-build-scripts.md)

# Tingkatkan dari Amazon Linux 2 ke Amazon Linux 2023
<a name="al2023"></a>

**Awas**  
Amazon EKS berhenti menerbitkan Amazon Linux 2 (AL2) yang dioptimalkan EKS AMIs pada 26 November 2025. AL2023 dan Bottlerocket berbasis AMIs Amazon EKS tersedia untuk semua versi Kubernetes yang didukung termasuk 1,33 dan yang lebih tinggi.

AL2023 adalah sistem operasi berbasis Linux yang dirancang untuk menyediakan lingkungan yang aman, stabil, dan berkinerja tinggi untuk aplikasi cloud Anda. Ini adalah generasi berikutnya dari Amazon Linux dari Amazon Web Services dan tersedia di semua versi Amazon EKS yang didukung.

AL2023 menawarkan beberapa perbaikan AL2. Untuk perbandingan selengkapnya, lihat [Membandingkan AL2 dan Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/compare-with-al2.html) di *Panduan Pengguna Amazon Linux 2023*. Beberapa paket telah ditambahkan, ditingkatkan, dan dihapus dari AL2. Sangat disarankan untuk menguji aplikasi Anda AL2023 sebelum memutakhirkan. Untuk daftar semua perubahan paket AL2023, lihat [Perubahan paket di Amazon Linux 2023 di Catatan](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html) *Rilis Amazon Linux 2023*.

Selain perubahan ini, Anda harus mengetahui hal-hal berikut:
+ AL2023 memperkenalkan proses inisialisasi node baru `nodeadm` yang menggunakan skema konfigurasi YAMM. Jika Anda menggunakan grup node yang dikelola sendiri atau AMI dengan template peluncuran, Anda sekarang harus menyediakan metadata klaster tambahan secara eksplisit saat membuat grup node baru. [Contoh](https://awslabs.github.io/amazon-eks-ami/nodeadm/) parameter minimum yang diperlukan adalah sebagai berikut, di mana`apiServerEndpoint`,`certificateAuthority`, dan layanan sekarang `cidr` diperlukan:

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: my-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
  ```

  Pada tahun AL2, metadata dari parameter ini ditemukan dari panggilan Amazon EKS `DescribeCluster` API. Dengan AL2023, perilaku ini telah berubah karena panggilan API tambahan berisiko melambat selama peningkatan skala node besar. Perubahan ini tidak memengaruhi Anda jika Anda menggunakan grup node terkelola tanpa templat peluncuran atau jika Anda menggunakan Karpenter. Untuk informasi selengkapnya tentang `certificateAuthority` dan layanan`cidr`, lihat [https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)di *Referensi API Amazon EKS*.
+ Untuk AL2023, `nodeadm` juga mengubah format untuk menerapkan parameter ke `kubelet` untuk setiap node menggunakan [https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec](https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/#nodeconfigspec). Pada tahun AL2, ini dilakukan dengan `--kubelet-extra-args` parameter. Ini biasanya digunakan untuk menambahkan label dan taints ke node. Contoh di bawah ini menunjukkan penerapan `maxPods` dan `--node-labels` ke node.

  ```
  ---
  apiVersion: node.eks.aws/v1alpha1
  kind: NodeConfig
  spec:
    cluster:
      name: test-cluster
      apiServerEndpoint: https://example.com
      certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk=
      cidr: 10.100.0.0/16
    kubelet:
      config:
        maxPods: 110
      flags:
        - --node-labels=karpenter.sh/capacity-type=on-demand,karpenter.sh/nodepool=test
  ```
+ Versi Amazon VPC CNI `1.16.2` atau yang lebih besar diperlukan untuk. AL2023
+ AL2023 membutuhkan secara `IMDSv2` default. `IMDSv2`memiliki beberapa manfaat yang membantu meningkatkan postur keamanan. Ini menggunakan metode otentikasi berorientasi sesi yang memerlukan pembuatan token rahasia dalam permintaan HTTP PUT sederhana untuk memulai sesi. Token sesi dapat berlaku di mana saja antara 1 detik dan 6 jam. Untuk informasi selengkapnya tentang cara transisi dari `IMDSv1` ke`IMDSv2`, lihat [Transisi ke menggunakan Layanan Metadata Instans Versi 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-transition-to-version-2.html) dan [Dapatkan manfaat lengkap IMDSv2 dan nonaktifkan IMDSv1 di seluruh infrastruktur Anda AWS](https://aws.amazon.com/blogs/security/get-the-full-benefits-of-imdsv2-and-disable-imdsv1-across-your-aws-infrastructure). Jika Anda ingin menggunakannya`IMDSv1`, Anda masih dapat melakukannya dengan mengganti pengaturan secara manual menggunakan properti peluncuran opsi metadata instance.
**catatan**  
Untuk `IMDSv2` with AL2023, jumlah hop default untuk grup node terkelola dapat bervariasi:  
Saat tidak menggunakan template peluncuran, default diatur ke`1`. Ini berarti bahwa kontainer tidak akan memiliki akses ke kredenal node menggunakan IMDS. Jika Anda memerlukan akses kontainer ke kredensional node, Anda masih dapat melakukannya dengan menggunakan templat peluncuran [Amazon EC2 kustom](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html).
Saat menggunakan AMI kustom dalam template peluncuran, default `HttpPutResponseHopLimit` diatur ke`2`. Anda dapat mengganti secara manual `HttpPutResponseHopLimit` di template peluncuran.
Atau, Anda dapat menggunakan [Amazon EKS Pod Identity](pod-identities.md) untuk memberikan kredensialnya. `IMDSv2`
+ AL2023 fitur generasi berikutnya dari hierarki kelompok kontrol terpadu ()`cgroupv2`. `cgroupv2`digunakan untuk mengimplementasikan runtime kontainer, dan oleh`systemd`. Meskipun AL2023 masih menyertakan kode yang dapat membuat sistem berjalan menggunakan`cgroupv1`, ini bukan konfigurasi yang direkomendasikan atau didukung. Konfigurasi ini akan sepenuhnya dihapus dalam rilis besar Amazon Linux di masa depan.
+  `eksctl`versi `0.176.0` atau yang lebih besar diperlukan `eksctl` untuk mendukung AL2023.

Untuk grup node terkelola yang sudah ada sebelumnya, Anda dapat melakukan pemutakhiran di tempat atau blue/green pemutakhiran tergantung pada cara Anda menggunakan templat peluncuran:
+ Jika Anda menggunakan AMI kustom dengan grup node terkelola, Anda dapat melakukan pemutakhiran di tempat dengan menukar ID AMI di template peluncuran. Anda harus memastikan bahwa aplikasi dan data pengguna Anda ditransfer terlebih AL2023 dahulu sebelum melakukan strategi peningkatan ini.
+ Jika Anda menggunakan grup node terkelola dengan templat peluncuran standar atau dengan templat peluncuran khusus yang tidak menentukan ID AMI, Anda harus meningkatkan menggunakan blue/green strategi. blue/green Upgrade biasanya lebih kompleks dan melibatkan pembuatan grup node yang sama sekali baru di mana Anda akan menentukan AL2023 sebagai tipe AMI. Grup node baru perlu dikonfigurasi dengan hati-hati untuk memastikan bahwa semua data kustom dari grup AL2 node kompatibel dengan OS baru. Setelah grup node baru diuji dan divalidasi dengan aplikasi Anda, Pod dapat dimigrasikan dari grup node lama ke grup node baru. Setelah migrasi selesai, Anda dapat menghapus grup node lama.

Jika Anda menggunakan Karpenter dan ingin menggunakannya AL2023, Anda harus memodifikasi `EC2NodeClass` `amiFamily` bidang dengan. AL2023 Secara default, Drift diaktifkan di Karpenter. Ini berarti bahwa setelah `amiFamily` bidang telah diubah, Karpenter akan secara otomatis memperbarui node pekerja Anda ke AMI terbaru jika tersedia.

## Informasi Tambahan Tentang nodeadm
<a name="_additional_information_about_nodeadm"></a>

Saat menggunakan Amazon Linux 2023 AMI yang dioptimalkan EKS atau membuat AMI EKS Amazon Linux 2023 Kustom melalui skrip Packer yang disediakan di repositori amazon-eks-ami GitHub resmi, Anda harus menghindari menjalankan nodeadm init secara eksplisit dalam Data Pengguna EC2 atau sebagai bagian dari AMI kustom Anda.

Jika Anda ingin menghasilkan dinamis NodeConfig dalam data pengguna Anda, Anda dapat menulis konfigurasi itu ke file yaml atau json drop-in. `/etc/eks/nodeadm.d` File konfigurasi ini akan digabungkan dan diterapkan ke node Anda ketika nodeadm init secara otomatis dimulai nanti dalam proses boot. Contoh:

```
cat > /etc/eks/nodeadm.d/additional-node-labels.yaml << EOF
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  kubelet:
    flags:
      - --node-labels=foo=bar
EOF
```

Amazon Linux 2023 yang dioptimalkan EKS AMIs secara otomatis menjalankan nodeadm init dalam dua fase melalui layanan systemd terpisah: nodeadm-config berjalan sebelum eksekusi data pengguna, sementara nodeadm-run dijalankan sesudahnya. Layanan nodeadm-config menetapkan konfigurasi dasar untuk containerd dan kubelet sebelum data pengguna berjalan. Layanan nodeadm-run menjalankan daemon sistem tertentu dan menyelesaikan konfigurasi akhir apa pun setelah eksekusi data pengguna. Jika perintah nodeadm init dijalankan dalam waktu tambahan, melalui data pengguna atau AMI khusus, perintah itu dapat merusak asumsi tentang urutan eksekusi, yang mengarah ke hasil yang tidak terduga termasuk salah konfigurasi. ENIs

# Ambil informasi versi Amazon Linux AMI
<a name="eks-linux-ami-versions"></a>

Amazon EKS yang dioptimalkan Amazon Linux AMIs dioptimalkan diversi oleh versi Kubernetes dan tanggal rilis AMI dalam format berikut:

```
k8s_major_version.k8s_minor_version.k8s_patch_version-release_date
```

[Setiap rilis AMI mencakup berbagai versi [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), kernel Linux, dan containerd.](https://containerd.io/) Akselerasi AMIs juga mencakup berbagai versi driver NVIDIA. Anda dapat menemukan informasi versi ini di [Changelog](https://github.com/awslabs/amazon-eks-ami/blob/main/CHANGELOG.md) di. GitHub

# Ambil AMI Amazon Linux yang direkomendasikan IDs
<a name="retrieve-ami-id"></a>

Saat menerapkan node, Anda dapat menentukan ID untuk Amazon Machine Image (AMI) yang dioptimalkan Amazon EKS yang telah dibuat sebelumnya. Untuk mengambil ID AMI yang sesuai dengan konfigurasi yang Anda inginkan, kueri AWS Systems Manager Parameter Store API. Menggunakan API ini menghilangkan kebutuhan untuk secara manual mencari AMI Amazon EKS yang dioptimalkan IDs. Untuk informasi selengkapnya, lihat [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). [Prinsip IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) yang Anda gunakan harus memiliki izin `ssm:GetParameter` IAM untuk mengambil metadata AMI Amazon EKS yang dioptimalkan.

Anda dapat mengambil ID gambar dari Amazon EKS terbaru yang dioptimalkan Amazon Linux AMI yang dioptimalkan dengan perintah berikut, yang menggunakan `image_id` sub-parameter. Buat modifikasi berikut pada perintah sesuai kebutuhan dan kemudian jalankan perintah yang dimodifikasi:
+ Ganti `<kubernetes-version>` dengan [versi yang didukung Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).
+ Ganti *ami-type* dengan salah satu opsi berikut. Untuk informasi tentang jenis EC2 instans Amazon, lihat [jenis EC2 instans Amazon](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html).
  + Gunakan *amazon-linux-2023/x86\$164/standard* untuk instans berbasis Amazon Linux 2023 (AL2023)`x86`.
  + Gunakan *amazon-linux-2023/arm64/standard* untuk instans AL2 023 ARM, seperti instance berbasis [AWS Graviton](https://aws.amazon.com/ec2/graviton/).
  + Gunakan *amazon-linux-2023/x86\$164/nvidia* untuk instans `x86` berbasis NVIDIA AL2 023 terbaru yang disetujui.
  + Gunakan *amazon-linux-2023/arm64/nvidia* untuk instans `arm64` berbasis NVIDIA AL2 023 terbaru yang disetujui.
  + Gunakan *amazon-linux-2023/x86\$164/neuron* untuk instans AL2 023 [AWS Neuron](https://aws.amazon.com/machine-learning/neuron/) terbaru.
+ Ganti `<region-code>` dengan [AWS Wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) yang Anda inginkan ID AMI.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/<kubernetes-version>/<ami-type>/recommended/image_id \
    --region <region-code> --query "Parameter.Value" --output text
```

Berikut adalah contoh perintah setelah penggantian placeholder dibuat.

```
aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.31/amazon-linux-2023/x86_64/standard/recommended/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Contoh output adalah sebagai berikut.

```
ami-1234567890abcdef0
```

# Buat AMI Amazon Linux yang dioptimalkan EKS khusus
<a name="eks-ami-build-scripts"></a>

**Awas**  
Amazon EKS berhenti menerbitkan Amazon Linux 2 (AL2) yang dioptimalkan EKS AMIs pada 26 November 2025. AL2023 dan Bottlerocket berbasis Amazon EKS tersedia AMIs untuk semua versi Kubernetes yang didukung termasuk 1,33 dan yang lebih tinggi.

Amazon EKS menyediakan skrip build open-source di repositori [Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami) yang dapat Anda gunakan untuk melihat konfigurasi, runtime`kubelet`, AWS IAM Authenticator untuk Kubernetes, dan membangun AMI berbasis AL Anda sendiri dari awal.

Repositori ini berisi [skrip bootstrap khusus untuk AL2 dan alat nodeadm untuk AL2](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh) [023](https://awslabs.github.io/amazon-eks-ami/nodeadm/) yang berjalan pada saat boot. Skrip ini mengonfigurasi data sertifikat instans Anda, titik akhir bidang kontrol, nama cluster, dan lainnya. Skrip dianggap sebagai sumber kebenaran untuk build AMI yang dioptimalkan Amazon EKS, sehingga Anda dapat mengikuti repositori GitHub untuk memantau perubahan pada kami. AMIs

Saat membangun kustom AMIs dengan EKS yang dioptimalkan AMIs sebagai basis, tidak disarankan atau didukung untuk menjalankan peningkatan sistem operasi (mis. `dnf upgrade`) atau tingkatkan salah satu paket Kubernetes atau GPU yang disertakan dalam EKS yang dioptimalkan AMIs, karena ini berisiko merusak kompatibilitas komponen. Jika Anda memutakhirkan sistem operasi atau paket yang disertakan dalam EKS yang dioptimalkan AMIs, disarankan untuk menguji secara menyeluruh dalam lingkungan pengembangan atau pementasan sebelum menerapkan ke produksi.

Saat membuat kustom AMIs untuk instance GPU, disarankan untuk membuat kustom terpisah AMIs untuk setiap pembuatan tipe instans dan keluarga yang akan Anda jalankan. Driver dan paket penginstalan AMIs selektif yang dioptimalkan EKS yang dioptimalkan secara selektif saat runtime berdasarkan generasi dan keluarga tipe instans yang mendasarinya. Untuk informasi selengkapnya, lihat skrip EKS AMI untuk [instalasi](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh) dan [runtime](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh).

## Prasyarat
<a name="_prerequisites"></a>
+  [Instal AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+  [Instal HashiCorp Packer v1.9.4 \$1](https://developer.hashicorp.com/packer/downloads) 
+  [Instal GNU Make](https://www.gnu.org/software/make/) 

## Mulai cepat
<a name="_quickstart"></a>

Quickstart ini menunjukkan kepada Anda perintah untuk membuat AMI kustom di AWS akun Anda. Untuk mempelajari lebih lanjut tentang konfigurasi yang tersedia untuk menyesuaikan AMI Anda, lihat variabel templat di halaman [Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/).

### Prasyarat
<a name="_prerequisites_2"></a>

Instal [plugin Amazon](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon) yang diperlukan. Contoh:

```
packer plugins install github.com/hashicorp/amazon
```

### Langkah 1. Siapkan lingkungan Anda
<a name="_step_1_setup_your_environment"></a>

Kloning atau fork repositori Amazon EKS AMI resmi. Contoh:

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

Verifikasi bahwa Packer diinstal:

```
packer --version
```

### Langkah 2. Buat AMI khusus
<a name="_step_2_create_a_custom_ami"></a>

Berikut ini adalah contoh perintah untuk berbagai kustom AMIs.

 **Dasar NVIDIA AL2 AMI:** 

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **Dasar NVIDIA AL2 023 AMI:** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **Neuron 023 AL2 AMI yang sesuai dengan STIG:** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

Setelah Anda menjalankan perintah ini, Packer akan melakukan hal berikut: \$1 Luncurkan EC2 instance Amazon sementara. \$1 Instal komponen, driver, dan konfigurasi Kubernetes. \$1 Buat AMI di AWS akun Anda.

Output yang diharapkan akan terlihat seperti ini:

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### Langkah 3. Lihat nilai default
<a name="_step_3_view_default_values"></a>

Untuk melihat nilai default dan opsi tambahan, jalankan perintah berikut:

```
make help
```

# Buat node dengan Bottlerocket yang dioptimalkan AMIs
<a name="eks-optimized-ami-bottlerocket"></a>

 [Bottlerocket](https://aws.amazon.com/bottlerocket/) adalah distribusi Linux open source yang disponsori dan didukung oleh. AWS Bottlerocket dibuat khusus untuk menampung beban kerja kontainer. Dengan Bottlerocket, Anda dapat meningkatkan ketersediaan penerapan kontainer dan mengurangi biaya operasional dengan mengotomatiskan pembaruan infrastruktur kontainer Anda. Bottlerocket hanya mencakup perangkat lunak penting untuk menjalankan kontainer, yang meningkatkan penggunaan sumber daya, mengurangi ancaman keamanan, dan menurunkan overhead manajemen. Bottlerocket AMI `containerd` termasuk,`kubelet`, dan IAM Authenticator. AWS [Selain grup node terkelola dan node yang dikelola sendiri, Bottlerocket juga didukung oleh Karpenter.](https://karpenter.sh/)

## Keuntungan
<a name="bottlerocket-advantages"></a>

Menggunakan Bottlerocket dengan cluster Amazon EKS Anda memiliki keuntungan sebagai berikut:
+  **Uptime yang lebih tinggi dengan biaya operasional yang lebih rendah dan kompleksitas manajemen** yang lebih rendah — Bottlerocket memiliki jejak sumber daya yang lebih kecil, waktu boot yang lebih pendek, dan kurang rentan terhadap ancaman keamanan daripada distribusi Linux lainnya. Jejak Bottlerocket yang lebih kecil membantu mengurangi biaya dengan menggunakan lebih sedikit sumber daya penyimpanan, komputasi, dan jaringan.
+  **Peningkatan keamanan dari pembaruan OS otomatis** - Pembaruan untuk Bottlerocket diterapkan sebagai satu unit yang dapat diputar kembali, jika perlu. Ini menghilangkan risiko pembaruan yang rusak atau gagal yang dapat membuat sistem dalam keadaan tidak dapat digunakan. Dengan Bottlerocket, pembaruan keamanan dapat diterapkan secara otomatis segera setelah tersedia dengan cara yang minimal mengganggu dan dibatalkan jika terjadi kegagalan.
+  **Dukungan premium** - AWS disediakan build Bottlerocket di EC2 Amazon tercakup dalam paket AWS Support yang sama yang juga mencakup AWS layanan seperti Amazon, Amazon EKS EC2, dan Amazon ECR.

## Pertimbangan-pertimbangan
<a name="bottlerocket-considerations"></a>

Pertimbangkan hal berikut saat menggunakan Bottlerocket untuk tipe AMI Anda:
+ Bottlerocket mendukung instans EC2 `x86_64` Amazon dengan dan prosesor. `arm64`
+ Bottlerocket mendukung instans Amazon dengan EC2 . GPUs Untuk informasi selengkapnya, lihat [Gunakan akselerasi yang dioptimalkan EKS AMIs untuk instans GPU](ml-eks-optimized-ami.md).
+ Gambar bottlerocket tidak menyertakan server SSH atau shell. Anda dapat menggunakan metode out-of-band akses untuk memungkinkan SSH. Pendekatan ini memungkinkan penampung admin dan meneruskan beberapa langkah konfigurasi bootstrap dengan data pengguna. Untuk informasi lebih lanjut, lihat bagian berikut di [Bottlerocket](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md) OS di: GitHub
  +  [Eksplorasi](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#exploration) 
  +  [Kontainer admin](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) 
  +  [Pengaturan Kubernetes](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#kubernetes-settings) 
+ Bottlerocket menggunakan berbagai jenis wadah:
  + Secara default, [wadah kontrol](https://github.com/bottlerocket-os/bottlerocket-control-container) diaktifkan. Container ini menjalankan [agen AWS Systems Manager](https://github.com/aws/amazon-ssm-agent) yang dapat Anda gunakan untuk menjalankan perintah atau memulai sesi shell di instance Amazon EC2 Bottlerocket. Untuk informasi selengkapnya, lihat [Menyiapkan Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html) di *Panduan Pengguna AWS Systems Manager*.
  + Jika kunci SSH diberikan saat membuat grup node, wadah admin diaktifkan. Sebaiknya gunakan wadah admin hanya untuk skenario pengembangan dan pengujian. Kami tidak menyarankan menggunakannya untuk lingkungan produksi. Untuk informasi selengkapnya, lihat [Kontainer admin](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md#admin-container) di GitHub.

## Informasi selengkapnya
<a name="bottlerocket-more-information"></a>

Untuk informasi selengkapnya tentang penggunaan Bottlerocket yang dioptimalkan Amazon EKS AMIs, lihat bagian berikut:
+ [Untuk detail tentang Bottlerocket, lihat Dokumentasi Bottlerocket.](https://bottlerocket.dev/en/)
+ Untuk sumber informasi versi, lihat[Ambil informasi versi AMI Bottlerocket](eks-ami-versions-bottlerocket.md).
+ Untuk menggunakan Bottlerocket dengan grup node terkelola, lihat. [Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md)
+ Untuk meluncurkan node Bottlerocket yang dikelola sendiri, lihat. [Buat node Bottlerocket yang dikelola sendiri](launch-node-bottlerocket.md)
+ Untuk mengambil AMIs Bottlerocket Amazon EKS terbaru IDs yang dioptimalkan, lihat. [Ambil Bottlerocket AMI yang direkomendasikan IDs](retrieve-ami-id-bottlerocket.md)
+ Untuk detail tentang dukungan kepatuhan, lihat[Memenuhi persyaratan kepatuhan dengan Bottlerocket](bottlerocket-compliance-support.md).

# Ambil informasi versi AMI Bottlerocket
<a name="eks-ami-versions-bottlerocket"></a>

[Setiap rilis AMI Bottlerocket mencakup berbagai versi kubelet, kernel [Bottlerocket](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/), dan containerd.](https://containerd.io/) Varian AMI yang dipercepat juga mencakup berbagai versi driver NVIDIA. Anda dapat menemukan informasi versi ini di topik [OS Dokumentasi](https://bottlerocket.dev/en/os/) *Bottlerocket*. Dari halaman ini, navigasikan ke sub-topik *Informasi Versi* yang berlaku.

*Dokumentasi Bottlerocket* terkadang tertinggal dari versi yang tersedia di. GitHub Anda dapat menemukan daftar perubahan untuk versi terbaru dalam [rilis](https://github.com/bottlerocket-os/bottlerocket/releases) di GitHub.

# Ambil Bottlerocket AMI yang direkomendasikan IDs
<a name="retrieve-ami-id-bottlerocket"></a>

Saat menerapkan node, Anda dapat menentukan ID untuk Amazon Machine Image (AMI) yang dioptimalkan Amazon EKS yang telah dibuat sebelumnya. Untuk mengambil ID AMI yang sesuai dengan konfigurasi yang Anda inginkan, kueri AWS Systems Manager Parameter Store API. Menggunakan API ini menghilangkan kebutuhan untuk secara manual mencari AMI Amazon EKS yang dioptimalkan IDs. Untuk informasi selengkapnya, lihat [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). [Prinsip IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) yang Anda gunakan harus memiliki izin `ssm:GetParameter` IAM untuk mengambil metadata AMI Amazon EKS yang dioptimalkan.

Anda dapat mengambil ID gambar dari AMI Bottlerocket Amazon EKS terbaru yang dioptimalkan dengan perintah AWS CLI berikut, yang menggunakan sub-parameter. `image_id` Buat modifikasi berikut pada perintah sesuai kebutuhan dan kemudian jalankan perintah yang dimodifikasi:
+ Ganti *kubernetes-version* dengan versi [platform](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) yang didukung.
+ Ganti *-flavor* dengan salah satu opsi berikut.
  + Hapus *-flavor* untuk varian tanpa GPU.
  + Gunakan *-nvidia* untuk varian berkemampuan GPU.
  + Gunakan *-fips* untuk varian yang mendukung FIPS.
+ Ganti *architecture* dengan salah satu opsi berikut.
  + Gunakan *x86\$164* untuk instance `x86` berbasis.
  + Gunakan *arm64* untuk instance ARM.
+ Ganti *region-code* dengan [AWS Wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) yang Anda inginkan ID AMI.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-kubernetes-version-flavor/architecture/latest/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Berikut adalah contoh perintah setelah penggantian placeholder dibuat.

```
aws ssm get-parameter --name /aws/service/bottlerocket/aws-k8s-1.31/x86_64/latest/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Contoh output adalah sebagai berikut.

```
ami-1234567890abcdef0
```

# Memenuhi persyaratan kepatuhan dengan Bottlerocket
<a name="bottlerocket-compliance-support"></a>

Bottlerocket mematuhi rekomendasi yang ditentukan oleh berbagai organisasi:
+ Ada [Tolok Ukur CIS](https://www.cisecurity.org/benchmark/bottlerocket) yang didefinisikan untuk Bottlerocket. Dalam konfigurasi default, gambar Bottlerocket memiliki sebagian besar kontrol yang diperlukan oleh profil konfigurasi CIS Level 1. Anda dapat menerapkan kontrol yang diperlukan untuk profil konfigurasi CIS Level 2. Untuk informasi lebih lanjut, lihat [Memvalidasi Amazon EKS Bottlerocket AMI yang dioptimalkan terhadap Tolok Ukur CIS di blog](https://aws.amazon.com/blogs/containers/validating-amazon-eks-optimized-bottlerocket-ami-against-the-cis-benchmark). AWS 
+ Set fitur yang dioptimalkan dan permukaan serangan yang dikurangi berarti bahwa instance Bottlerocket memerlukan lebih sedikit konfigurasi untuk memenuhi persyaratan PCI DSS. [Tolok Ukur CIS untuk Bottlerocket](https://www.cisecurity.org/benchmark/bottlerocket) adalah sumber yang sangat baik untuk panduan pengerasan, dan mendukung persyaratan Anda untuk standar konfigurasi yang aman di bawah persyaratan PCI DSS 2.2. Anda juga dapat memanfaatkan [Fluent Bit](https://opensearch.org/blog/technical-post/2022/07/bottlerocket-k8s-fluent-bit/) untuk mendukung persyaratan Anda untuk pencatatan audit tingkat sistem operasi berdasarkan persyaratan PCI DSS 10.2. AWS menerbitkan instans Bottlerocket baru (ditambal) secara berkala untuk membantu Anda memenuhi persyaratan PCI DSS 6.2 (untuk v3.2.1) dan persyaratan 6.3.3 (untuk v4.0).
+ Bottlerocket adalah fitur yang memenuhi syarat HIPAA yang diizinkan untuk digunakan dengan beban kerja yang diatur untuk Amazon dan Amazon EKS. EC2 Untuk informasi selengkapnya, lihat [Referensi Layanan yang Memenuhi Syarat HIPAA](https://aws.amazon.com/compliance/hipaa-eligible-services-reference/).
+ Bottlerocket tersedia yang AMIs telah dikonfigurasi sebelumnya untuk menggunakan modul kriptografi tervalidasi FIPS 140-3. Ini termasuk Modul Kriptografi Amazon Linux 2023 Kernel Crypto API dan Modul Kriptografi AWS-LC. Lihat informasi yang lebih lengkap di [Buat FIPS node pekerja Anda siap dengan Bottlerocket FIPS AMIs](bottlerocket-fips-amis.md).

# Buat FIPS node pekerja Anda siap dengan Bottlerocket FIPS AMIs
<a name="bottlerocket-fips-amis"></a>

Federal Information Processing Standard (FIPS) Publikasi 140-3 adalah standar pemerintah Amerika Serikat dan Kanada yang menetapkan persyaratan keamanan untuk modul kriptografi yang melindungi informasi sensitif. Bottlerocket membuatnya lebih mudah untuk mematuhi FIPS dengan menawarkan AMIs dengan kernel FIPS.

Ini telah AMIs dikonfigurasi sebelumnya untuk menggunakan modul kriptografi tervalidasi FIPS 140-3. Ini termasuk Modul Kriptografi Amazon Linux 2023 Kernel Crypto API dan Modul Kriptografi AWS-LC.

Menggunakan Bottlerocket FIPS AMIs membuat node pekerja Anda “FIPS siap” tetapi tidak secara otomatis “FIPS-compliant”. Untuk informasi lebih lanjut, lihat [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

## Pertimbangan-pertimbangan
<a name="_considerations"></a>
+ Jika klaster Anda menggunakan subnet terisolasi, titik akhir Amazon ECR FIPS mungkin tidak dapat diakses. Hal ini dapat menyebabkan node bootstrap gagal. Pastikan konfigurasi jaringan Anda memungkinkan akses ke titik akhir FIPS yang diperlukan. *Untuk informasi selengkapnya, lihat [Mengakses sumber daya melalui titik akhir VPC sumber daya di Panduan](https://docs.aws.amazon.com/vpc/latest/privatelink/use-resource-endpoint.html). AWS PrivateLink *
+ Jika klaster Anda menggunakan subnet dengan [PrivateLink](vpc-interface-endpoints.md), penarikan gambar akan gagal karena titik akhir Amazon ECR FIPS tidak tersedia. PrivateLink

## Buat grup node terkelola dengan AMI FIPS Bottlerocket
<a name="_create_a_managed_node_group_with_a_bottlerocket_fips_ami"></a>

Bottlerocket FIPS AMI hadir dalam empat varian untuk mendukung beban kerja Anda:
+  `BOTTLEROCKET_x86_64_FIPS` 
+  `BOTTLEROCKET_ARM_64_FIPS` 
+  `BOTTLEROCKET_x86_64_NVIDIA_FIPS` 
+  `BOTTLEROCKET_ARM_64_NVIDIA_FIPS` 

Untuk membuat grup node terkelola dengan AMI FIPS Bottlerocket, pilih tipe AMI yang berlaku selama proses pembuatan. Untuk informasi selengkapnya, lihat [Buat grup node terkelola untuk klaster Anda](create-managed-node-group.md).

Untuk informasi selengkapnya tentang memilih varian berkemampuan FIPS, lihat. [Ambil Bottlerocket AMI yang direkomendasikan IDs](retrieve-ami-id-bottlerocket.md)

## Nonaktifkan titik akhir FIPS untuk Wilayah yang tidak didukung AWS
<a name="disable_the_fips_endpoint_for_non_supported_shared_aws_regions"></a>

Bottlerocket FIPS AMIs didukung langsung di Amerika Serikat, termasuk Wilayah (AS). AWS GovCloud Untuk AWS Wilayah di mana AMIs tersedia tetapi tidak didukung secara langsung, Anda masih dapat menggunakan AMIs dengan membuat grup node terkelola dengan templat peluncuran.

Bottlerocket FIPS AMI bergantung pada titik akhir Amazon ECR FIPS selama bootstrap, yang umumnya tidak tersedia di luar Amerika Serikat. Untuk menggunakan AMI untuk kernel FIPS di AWS Wilayah yang tidak memiliki titik akhir Amazon ECR FIPS, lakukan langkah-langkah berikut untuk menonaktifkan titik akhir FIPS:

1. Buat file konfigurasi baru dengan konten berikut atau gabungkan konten ke dalam file konfigurasi yang ada.

```
[default]
use_fips_endpoint=false
```

1. Encode konten file sebagai format Base64.

1. Di template peluncuran Anda`UserData`, tambahkan string yang dikodekan berikut menggunakan format TOLL:

```
[settings.aws]
config = "<your-base64-encoded-string>"
```

Untuk pengaturan lainnya, lihat [Deskripsi](https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#description-of-settings) pengaturan Bottlerocket aktif. GitHub

Berikut adalah contoh `UserData` dalam template peluncuran:

```
[settings]
motd = "Hello from eksctl!"
[settings.aws]
config = "W2RlZmF1bHRdCnVzZV9maXBzX2VuZHBvaW50PWZhbHNlCg==" # Base64-encoded string.
[settings.kubernetes]
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
cluster-name = "<cluster-name>"
...<other-settings>
```

Untuk informasi selengkapnya tentang membuat template peluncuran dengan data pengguna, lihat[Sesuaikan node terkelola dengan templat peluncuran](launch-templates.md).

# Buat node dengan Ubuntu Linux yang dioptimalkan AMIs
<a name="eks-partner-amis"></a>

Canonical telah bermitra dengan Amazon EKS untuk membuat node AMIs yang dapat Anda gunakan di cluster Anda.

 [Canonical memberikan image](https://www.canonical.com/) built-for-purpose Kubernetes Node OS. Gambar Ubuntu yang diminimalkan ini dioptimalkan untuk Amazon EKS dan menyertakan AWS kernel khusus yang dikembangkan bersama. AWS Untuk informasi selengkapnya, lihat [Ubuntu di Amazon Elastic Kubernetes Service](https://cloud-images.ubuntu.com/aws-eks/) (EKS) dan. [Buat node Linux Ubuntu yang dikelola sendiri](launch-node-ubuntu.md) Untuk informasi tentang dukungan, lihat bagian [Perangkat lunak pihak ketiga](https://aws.amazon.com/premiumsupport/faqs/#Third-party_software) dari *Dukungan AWS Premium FAQs*.

# Buat node dengan Windows yang dioptimalkan AMIs
<a name="eks-optimized-windows-ami"></a>

Windows Amazon EKS AMIs yang dioptimalkan dibangun di atas Windows Server 2019, Windows Server 2022, dan Windows Server 2025. Mereka dikonfigurasi untuk berfungsi sebagai gambar dasar untuk node Amazon EKS. Secara default, AMIs termasuk komponen-komponen berikut:
+  [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) 
+  [kube-proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) 
+  [AWS Authenticator IAM untuk Kubernetes](https://github.com/kubernetes-sigs/aws-iam-authenticator) 
+  [csi-proxy](https://github.com/kubernetes-csi/csi-proxy) 
+  [containerd](https://containerd.io/) 

**catatan**  
Anda dapat melacak peristiwa keamanan atau privasi untuk Windows Server dengan [Microsoft security update guide](https://portal.msrc.microsoft.com/en-us/security-guidance).

Amazon EKS menawarkan AMIs yang dioptimalkan untuk wadah Windows dalam varian berikut:
+ AMI Inti Windows Server 2019 yang dioptimalkan Amazon EKS
+ Amazon EKS yang dioptimalkan Windows Server 2019 AMI Penuh
+ Server Windows 2022 AMI Inti yang dioptimalkan Amazon EKS
+ Amazon EKS yang dioptimalkan Windows Server 2022 AMI Penuh
+ Amazon EKS yang dioptimalkan Windows Server 2025 Core AMI
+ Amazon EKS yang dioptimalkan Windows Server 2025 AMI Penuh

**penting**  
Windows Server 20H2 Core AMI yang dioptimalkan Amazon EKS tidak digunakan lagi. Tidak ada versi baru dari AMI ini yang akan dirilis.
Untuk memastikan bahwa Anda memiliki pembaruan keamanan terbaru secara default, Amazon EKS mempertahankan Windows AMIs yang dioptimalkan selama 4 bulan terakhir. Setiap AMI baru akan tersedia selama 4 bulan sejak rilis awal. Setelah periode ini, yang lebih tua AMIs dibuat pribadi dan tidak lagi dapat diakses. Kami mendorong penggunaan yang terbaru AMIs untuk menghindari kerentanan keamanan dan kehilangan akses ke AMIs yang lebih tua yang telah mencapai akhir masa pakai yang didukung mereka. Meskipun kami tidak dapat menjamin bahwa kami dapat menyediakan akses ke AMIs yang telah dibuat pribadi, Anda dapat meminta akses dengan mengajukan tiket ke AWS Support.

## Kalender rilis
<a name="windows-ami-release-calendar"></a>

Tabel berikut mencantumkan rilis dan tanggal akhir dukungan untuk versi Windows di Amazon EKS. Jika tanggal akhir kosong, itu karena versi masih didukung.


| Versi Windows | Rilisan Amazon EKS | Akhir dukungan Amazon EKS | 
| --- | --- | --- | 
|  Windows Server 2025 Inti  |  01/27/2026  |  | 
|  Windows Server 2025 Penuh  |  01/27/2026  |  | 
|  Windows Server 2022 Inti  |  10/17/2022  |  | 
|  Windows Server 2022 Lengkap  |  10/17/2022  |  | 
|  Windows Server 20H2 Inti  |  8/12/2021  |  8/9/2022  | 
|  Windows Server 2004 Core  |  8/19/2020  |  12/14/2021  | 
|  Windows Server 2019 Core  |  10/7/2019  |  | 
|  Windows Server 2019 Full  |  10/7/2019  |  | 
|  Windows Server 1909 Core  |  10/7/2019  |  12/8/2020  | 

## Parameter konfigurasi skrip bootstrap
<a name="bootstrap-script-configuration-parameters"></a>

Saat Anda membuat node Windows, ada skrip pada node yang memungkinkan untuk mengkonfigurasi parameter yang berbeda. Bergantung pada pengaturan Anda, skrip ini dapat ditemukan di node di lokasi yang mirip dengan:`C:\Program Files\Amazon\EKS\Start-EKSBootstrap.ps1`. Anda dapat menentukan nilai parameter kustom dengan menentukannya sebagai argumen untuk skrip bootstrap. Misalnya, Anda dapat memperbarui data pengguna di template peluncuran. Untuk informasi selengkapnya, lihat [Data pengguna Amazon EC2](launch-templates.md#launch-template-user-data).

Skrip ini mencakup parameter baris perintah berikut:
+  `-EKSClusterName`— Menentukan nama cluster Amazon EKS untuk node pekerja ini untuk bergabung.
+  `-KubeletExtraArgs`- Menentukan argumen tambahan untuk `kubelet` (opsional).
+  `-KubeProxyExtraArgs`- Menentukan argumen tambahan untuk `kube-proxy` (opsional).
+  `-APIServerEndpoint`— Menentukan titik akhir server API cluster Amazon EKS (opsional). Hanya berlaku bila digunakan dengan`-Base64ClusterCA`. Melewati panggilan`Get-EKSCluster`.
+  `-Base64ClusterCA`- Menentukan base64 dikodekan konten CA cluster (opsional). Hanya berlaku bila digunakan dengan`-APIServerEndpoint`. Melewati panggilan`Get-EKSCluster`.
+  `-DNSClusterIP`— Mengganti alamat IP yang akan digunakan untuk kueri DNS dalam cluster (opsional). Default ke `10.100.0.10` atau `172.20.0.10` berdasarkan alamat IP antarmuka utama.
+  `-ServiceCIDR`— Mengganti rentang alamat IP layanan Kubernetes dari mana layanan klaster ditangani. Default ke `172.20.0.0/16` atau `10.100.0.0/16` berdasarkan alamat IP antarmuka utama.
+  `-ExcludedSnatCIDRs`— Daftar `IPv4` CIDRs untuk dikecualikan dari Source Network Address Translation (SNAT). Ini berarti bahwa IP pribadi pod yang dapat dialamatkan VPC tidak akan diterjemahkan ke alamat IP dari `IPv4` alamat utama ENI instance untuk lalu lintas keluar. Secara default, `IPv4` CIDR VPC untuk node Amazon EKS Windows ditambahkan. CIDRs Menentukan parameter ini juga mengecualikan yang ditentukan. CIDRs Untuk informasi selengkapnya, lihat [Aktifkan akses internet keluar untuk Pod](external-snat.md).

Selain parameter baris perintah, Anda juga dapat menentukan beberapa parameter variabel lingkungan. Saat menentukan parameter baris perintah, itu diutamakan daripada variabel lingkungan masing-masing. Variabel lingkungan harus didefinisikan sebagai cakupan mesin (atau sistem) karena skrip bootstrap hanya akan membaca variabel cakupan mesin.

Skrip memperhitungkan variabel lingkungan berikut:
+  `SERVICE_IPV4_CIDR`— Lihat parameter baris `ServiceCIDR` perintah untuk definisi.
+  `EXCLUDED_SNAT_CIDRS`— Harus berupa string yang dipisahkan koma. Lihat parameter baris `ExcludedSnatCIDRs` perintah untuk definisi.

### Dukungan otentikasi GMSA
<a name="ad-and-gmsa-support"></a>

Amazon EKS Windows Pods memungkinkan berbagai jenis otentikasi Akun Layanan Terkelola (GMSA) grup.
+ Amazon EKS mendukung identitas domain Active Directory untuk otentikasi. Untuk informasi selengkapnya tentang GMSA yang bergabung dengan domain, lihat [Otentikasi Windows di Amazon EKS Windowspods di blog](https://aws.amazon.com/blogs/containers/windows-authentication-on-amazon-eks-windows-pods). AWS 
+ Amazon EKS menawarkan plugin yang memungkinkan node non-domain-joined Windows untuk mengambil kredenal GMSA dengan identitas pengguna portabel. Untuk informasi selengkapnya tentang GMSA tanpa domain, lihat [Otentikasi Windows Tanpa Domain untuk Amazon EKS Windowspods](https://aws.amazon.com/blogs/containers/domainless-windows-authentication-for-amazon-eks-windows-pods) di blog. AWS 

## Gambar kontainer cache
<a name="windows-cached-container-images"></a>

Amazon EKS Windows yang dioptimalkan AMIs memiliki gambar kontainer tertentu yang di-cache untuk `containerd` runtime. Gambar kontainer di-cache saat membuat kustom AMIs menggunakan komponen build yang dikelola Amazon. Untuk informasi selengkapnya, lihat [Menggunakan komponen build yang dikelola Amazon](eks-custom-ami-windows.md#custom-windows-ami-build-component).

Gambar kontainer cache berikut adalah untuk `containerd` runtime:
+  `amazonaws.com/eks/pause-windows` 
+  `mcr.microsoft.com/windows/nanoserver` 
+  `mcr.microsoft.com/windows/servercore` 

## Informasi selengkapnya
<a name="windows-more-information"></a>

Untuk informasi selengkapnya tentang menggunakan Windows yang dioptimalkan Amazon EKS AMIs, lihat bagian berikut:
+ Untuk detail tentang menjalankan beban kerja di Amazon EKS yang dioptimalkan untuk Windows akselerasi AMIs, lihat[Jalankan kontainer yang dipercepat GPU (Windows pada G-Series EC2 )](ml-eks-windows-optimized-ami.md).
+ Untuk menggunakan Windows dengan grup node terkelola, lihat[Sederhanakan siklus hidup node dengan grup node terkelola](managed-node-groups.md).
+ Untuk meluncurkan node Windows yang dikelola sendiri, lihat[Buat node Microsoft Windows yang dikelola sendiri](launch-windows-workers.md).
+ Untuk informasi versi, lihat [Ambil informasi versi Windows AMI](eks-ami-versions-windows.md).
+ Untuk mengambil Windows Amazon EKS terbaru IDs yang dioptimalkan AMIs, lihat[Ambil Microsoft Windows AMI yang direkomendasikan IDs](retrieve-windows-ami-id.md).
+ Untuk menggunakan Amazon EC2 Image Builder untuk membuat Windows yang dioptimalkan Amazon EKS khusus AMIs, lihat. [Membangun AMI Windows kustom dengan Image Builder](eks-custom-ami-windows.md)
+ Untuk praktik terbaik, lihat [Manajemen AMI Windows Amazon EKS yang dioptimalkan](https://aws.github.io/aws-eks-best-practices/windows/docs/ami/) di *Panduan Praktik Terbaik EKS*.

# Buat node Windows Server 2022 yang dikelola sendiri dengan `eksctl`
<a name="self-managed-windows-server-2022"></a>

Anda dapat menggunakan yang berikut ini `test-windows-2022.yaml` sebagai referensi untuk membuat node Windows Server 2022 yang dikelola sendiri. Ganti setiap *example value* dengan nilai-nilai Anda sendiri.

**catatan**  
Anda harus menggunakan `eksctl` versi [0.116.0](https://github.com/weaveworks/eksctl/releases/tag/v0.116.0) atau yang lebih baru untuk menjalankan node Windows Server 2022 yang dikelola sendiri.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: windows-2022-cluster
  region: region-code
  version: '1.35'

nodeGroups:
  - name: windows-ng
    instanceType: m5.2xlarge
    amiFamily: WindowsServer2022FullContainer
    volumeSize: 100
    minSize: 2
    maxSize: 3
  - name: linux-ng
    amiFamily: AmazonLinux2
    minSize: 2
    maxSize: 3
```

Grup node kemudian dapat dibuat menggunakan perintah berikut.

```
eksctl create cluster -f test-windows-2022.yaml
```

# Ambil informasi versi Windows AMI
<a name="eks-ami-versions-windows"></a>

[https://containerd.io/](https://containerd.io/)

Metadata AMI yang dioptimalkan oleh Amazon EKS, mencakup ID AMI, untuk setiap varian bisa didapatkan secara terprogram. Untuk informasi selengkapnya, lihat [Ambil Microsoft Windows AMI yang direkomendasikan IDs](retrieve-windows-ami-id.md).

AMIs diversi oleh versi Kubernetes dan tanggal rilis AMI dalam format berikut:

```
k8s_major_version.k8s_minor_version-release_date
```

**catatan**  
Grup simpul terkelola Amazon EKS mendukung rilis Windows November 2022 dan yang lebih baru AMIs.

Untuk menerima pemberitahuan semua perubahan file sumber ke halaman dokumentasi khusus ini, Anda dapat berlangganan URL berikut dengan pembaca RSS:

```
https://github.com/awsdocs/amazon-eks-user-guide/commits/mainline/latest/ug/nodes/eks-ami-versions-windows.adoc.atom
```

## Amazon EKS mengoptimalkan Windows Server 2025 Core AMI
<a name="eks-ami-versions-windows-2025-core"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2025 Core AMI.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## Amazon EKS mengoptimalkan Windows Server 2025 AMI Penuh
<a name="eks-ami-versions-windows-2025-full"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2025 AMI Penuh.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 

## Amazon EKS mengoptimalkan Windows Server 2022 Core AMI
<a name="eks-ami-versions-windows-2022-core"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2022 Core AMI.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Upgrade `containerd` ke`2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`. Upgrade `kubelet` ke`1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Memperbaiki bug di mana gambar jeda salah dihapus oleh proses pengumpulan `kubelet` sampah.  | 
|   `1.29-2024.01.11`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  Pembaruan Windows Mandiri yang Dikecualikan [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)pada Windows Server 2022 Core AMIs. KB hanya berlaku untuk instalasi Windows dengan partisi WinRE terpisah, yang tidak disertakan dengan Windows Amazon EKS Optimized kami. AMIs  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Upgrade `kubelet` ke`1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.25`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.11`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  Pembaruan Windows Mandiri yang Dikecualikan [KB5034439](https://support.microsoft.com/en-au/topic/kb5034439-windows-recovery-environment-update-for-azure-stack-hci-version-22h2-and-windows-server-2022-january-9-2024-6f9d26e6-784c-4503-a3c6-0beedda443ca)pada Windows Server 2022 Core AMIs. KB hanya berlaku untuk instalasi Windows dengan partisi WinRE terpisah, yang tidak disertakan dengan Windows Amazon EKS Optimized kami. AMIs  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.18`. Ditambahkan [variabel lingkungan skrip bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) baru (`SERVICE_IPV4_CIDR`dan`EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Memperbaiki [penasihat keamanan](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) di`kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Amazon EKS mengoptimalkan Windows Server 2022 AMI Penuh
<a name="eks-ami-versions-windows-2022-full"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2022 Full AMI.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Upgrade `containerd` ke`2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Upgrade ke `containrd` `1.7.27`   | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.01`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `contianerd` ke`1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`. Upgrade `kubelet` ke`1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.29-2024.03.12`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Memperbaiki bug di mana gambar jeda salah dihapus oleh proses pengumpulan `kubelet` sampah.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025.01.01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Upgrade `kubelet` ke`1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.25`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.28-2024.03.12`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.18`. Ditambahkan [variabel lingkungan skrip bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) baru (`SERVICE_IPV4_CIDR`dan`EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Memperbaiki [penasihat keamanan](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) di`kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Windows Server 2019 Core AMI yang dioptimalkan oleh Amazon EKS
<a name="eks-ami-versions-windows-2019-core"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2019 Core AMI.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Upgrade `containerd` ke`2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.4`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.30-2025-02-15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`. Upgrade `kubelet` ke`1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Memperbaiki bug di mana gambar jeda salah dihapus oleh proses pengumpulan `kubelet` sampah.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Upgrade `kubelet` ke`1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.25`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.18`. Ditambahkan [variabel lingkungan skrip bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) baru (`SERVICE_IPV4_CIDR`dan`EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Memperbaiki [penasihat keamanan](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) di`kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

## Windows Server 2019 Full AMI yang dioptimalkan oleh Amazon EKS
<a name="eks-ami-versions-windows-2019-full"></a>

Tabel berikut mencantumkan versi saat ini dan sebelumnya dari Amazon EKS yang dioptimalkan Windows Server 2019 AMI Penuh.

**Example**  


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.35-2026.02.16`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.35-2026-01-22`   |   `1.35.0`   |   `2.1.6`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.34-2026.02.13`   |   `1.34.3`   |   `2.1.6`   |   `1.2.1`   |  | 
|   `1.34-2026.01.22`   |   `1.34.2`   |   `2.1.6`   |   `1.2.1`   |  Upgrade `containerd` ke`2.1.6`.  | 
|   `1.34-2025.12.15`   |   `1.34.2`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.11.14`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.10.18`   |   `1.34.1`   |   `2.1.4`   |   `1.2.1`   |  | 
|   `1.34-2025.09.13`   |   `1.34.0`   |   `2.1.4`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.33-2026.02.13`   |   `1.33.7`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.33-2026.01.22`   |   `1.33.5`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.33-2025.12.15`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.11.14`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.10.18`   |   `1.33.5`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.33-2025.09.13`   |   `1.33.4`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.33-2025.08.18`   |   `1.33.3`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.07.16`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.06.13`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.33-2025.05.17`   |   `1.33.1`   |   `1.7.27`   |   `1.2.1`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.32-2026.02.13`   |   `1.32.11`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.32-2026.01.22`   |   `1.32.9`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.32-2025.12.15`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.11.14`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.10.18`   |   `1.32.9`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.32-2025.09.13`   |   `1.32.8`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.32-2025.08.18`   |   `1.32.7`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.07.16`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.32-2025.06.13`   |   `1.32.5`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.32-2025.05.17`   |   `1.32.5`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.32-2025.04.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.03.14`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.02.18`   |   `1.32.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.32-2025.01.15`   |   `1.32.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.31-2026.02.13`   |   `1.31.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.31-2026.01.22`   |   `1.31.13`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.31-2025.12.15`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.11.14`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.10.18`   |   `1.31.13`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.31-2025.09.13`   |   `1.31.12`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.31-2025.08.18`   |   `1.31.11`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.07.16`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.31-2025.06.13`   |   `1.31.9`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.31-2025.05.17`   |   `1.31.9`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.31-2025.04.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.03.14`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.02.15`   |   `1.31.5`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.15`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2025.01.01`   |   `1.31.4`   |   `1.7.20`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.31-2024.12.13`   |   `1.31.3`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.11.12`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.08`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.10.01`   |   `1.31.1`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.31-2024.09.10`   |   `1.31.0`   |   `1.7.20`   |   `1.1.3`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.30-2026.02.13`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.30-2026.01.22`   |   `1.30.14`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.30-2025.12.15`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.11.21`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.10.18`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.30-2025.09.13`   |   `1.30.14`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.30-2025.08.18`   |   `1.30.14`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.07.16`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.30-2025.06.13`   |   `1.30.13`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.30-2025.05.17`   |   `1.30.13`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.30-2025.04.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.30-2025.03.14`   |   `1.30.9`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.30-2025.02.15`   |   `1.30.9`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.15`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2025.01.01`   |   `1.30.8`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.30-2024.12.11`   |   `1.30.7`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.11.12`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.10.08`   |   `1.30.4`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.09.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.08.13`   |   `1.30.2`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.30-2024.07.10`   |   `1.30.2`   |   `1.7.14`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.30-2024.06.17`   |   `1.30.0`   |   `1.7.14`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.14`.  | 
|   `1.30-2024.05.15`   |   `1.30.0`   |   `1.6.28`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.29-2026.02.13`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  | 
|   `1.29-2026.01.22`   |   `1.29.15`   |   `1.7.30`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.30`.  | 
|   `1.29-2025.12.15`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.11.14`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.10.18`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.29-2025.09.13`   |   `1.29.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.29-2025.08.18`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.07.16`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.29-2025.06.13`   |   `1.29.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.29-2025.05.17`   |   `1.29.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.29-2025.04.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.29-2025.03.14`   |   `1.29.13`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.29-2025.02.15`   |   `1.29.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.15`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2025.01.01`   |   `1.29.12`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.29-2024.12.11`   |   `1.29.10`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.11.12`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.10.08`   |   `1.29.8`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.09.10`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.08.13`   |   `1.29.6`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.29-2024.07.10`   |   `1.29.6`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.29-2024.06.17`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  | 
|   `1.29-2024.05.15`   |   `1.29.3`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`. Upgrade `kubelet` ke`1.29.3`.  | 
|   `1.29-2024.04.09`   |   `1.29.0`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.29-2024.03.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.13`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  | 
|   `1.29-2024.02.06`   |   `1.29.0`   |   `1.6.25`   |   `1.1.2`   |  Memperbaiki bug di mana gambar jeda salah dihapus oleh proses pengumpulan `kubelet` sampah.  | 
|   `1.29-2024.01.09`   |   `1.29.0`   |   `1.6.18`   |   `1.1.2`   |  | 


| Versi AMI | versi kubelet | versi containerd | versi csi-proxy | Catatan rilis | 
| --- | --- | --- | --- | --- | 
|   `1.28-2025.11.14`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.10.18`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  | 
|   `1.28-2025.09.13`   |   `1.28.15`   |   `1.7.28`   |   `1.2.1`   |  Mengubah log plugin GMSA ke Acara Windows  | 
|   `1.28-2025.08.18`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.07.16`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  | 
|   `1.28-2025.06.13`   |   `1.28.15`   |   `1.7.27`   |   `1.2.1`   |  Upgrade `containerd` ke`1.7.27`.  | 
|   `1.28-2025.05.17`   |   `1.28.15`   |   `1.7.20`   |   `1.2.1`   |  | 
|   `1.28-2025.04.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  | 
|   `1.28-2025.03.14`   |   `1.28.15`   |   `1.7.20`   |   `1.1.3`   |  Upgrade `containerd` ke`1.7.20`.  | 
|   `1.28-2025.02.15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-15`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2025-01-01`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  Termasuk tambalan untuk`CVE-2024-9042`.  | 
|   `1.28-2024.12.11`   |   `1.28.15`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.11.12`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.10.08`   |   `1.28.13`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.09.10`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.08.13`   |   `1.28.11`   |   `1.7.14`   |   `1.1.3`   |  | 
|   `1.28-2024.07.10`   |   `1.28.11`   |   `1.7.11`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2024-5321`.  | 
|   `1.28-2024.06.17`   |   `1.28.8`   |   `1.7.11`   |   `1.1.2`   |  Upgrade `containerd` ke`1.7.11`.  | 
|   `1.28-2024.05.14`   |   `1.28.8`   |   `1.6.28`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.28`. Upgrade `kubelet` ke`1.28.8`.  | 
|   `1.28-2024.04.09`   |   `1.28.5`   |   `1.6.25`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.25`. Membangun kembali CNI dan `csi-proxy` menggunakan. `golang 1.22.1`  | 
|   `1.28-2024.03.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.02.13`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2024.01.09`   |   `1.28.5`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.12.12`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  | 
|   `1.28-2023.11.14`   |   `1.28.3`   |   `1.6.18`   |   `1.1.2`   |  Termasuk tambalan untuk`CVE-2023-5528`.  | 
|   `1.28-2023.10.19`   |   `1.28.2`   |   `1.6.18`   |   `1.1.2`   |  Upgrade `containerd` ke`1.6.18`. Ditambahkan [variabel lingkungan skrip bootstrap](eks-optimized-windows-ami.md#bootstrap-script-configuration-parameters) baru (`SERVICE_IPV4_CIDR`dan`EXCLUDED_SNAT_CIDRS`).  | 
|   `1.28-2023-09.27`   |   `1.28.2`   |   `1.6.6`   |   `1.1.2`   |  Memperbaiki [penasihat keamanan](https://github.com/advisories/GHSA-6xv5-86q9-7xr8) di`kubelet`.  | 
|   `1.28-2023.09.12`   |   `1.28.1`   |   `1.6.6`   |   `1.1.2`   |  | 

# Ambil Microsoft Windows AMI yang direkomendasikan IDs
<a name="retrieve-windows-ami-id"></a>

Saat menerapkan node, Anda dapat menentukan ID untuk Amazon Machine Image (AMI) yang dioptimalkan Amazon EKS yang telah dibuat sebelumnya. Untuk mengambil ID AMI yang sesuai dengan konfigurasi yang Anda inginkan, kueri AWS Systems Manager Parameter Store API. Menggunakan API ini menghilangkan kebutuhan untuk secara manual mencari AMI Amazon EKS yang dioptimalkan IDs. Untuk informasi selengkapnya, lihat [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). [Prinsip IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) yang Anda gunakan harus memiliki izin `ssm:GetParameter` IAM untuk mengambil metadata AMI Amazon EKS yang dioptimalkan.

Anda dapat mengambil ID gambar dari Amazon EKS terbaru yang dioptimalkan Windows AMI yang dioptimalkan dengan perintah berikut, yang menggunakan `image_id` sub-parameter. Buat modifikasi berikut pada perintah sesuai kebutuhan dan kemudian jalankan perintah yang dimodifikasi:
+ Ganti *release* dengan salah satu opsi berikut.
  + Gunakan *2025* untuk Windows Server 2025.
  + Gunakan *2022* untuk Windows Server 2022.
  + Gunakan *2019* untuk Windows Server 2019.
+ Ganti *installation-option* dengan salah satu opsi berikut. Untuk informasi selengkapnya, lihat [Apa itu opsi instalasi inti server di Windows Server](https://learn.microsoft.com/en-us/windows-server/administration/server-core/what-is-server-core).
  + Gunakan *Core* untuk instalasi minimal dengan permukaan serangan yang lebih kecil.
  + Gunakan *Full* untuk menyertakan pengalaman desktop Windows.
+ Ganti *kubernetes-version* dengan versi [platform](https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) yang didukung.
+ Ganti *region-code* dengan [AWS Wilayah yang didukung Amazon EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html) yang Anda inginkan ID AMI.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-release-English-installation-option-EKS_Optimized-kubernetes-version/image_id \
    --region region-code --query "Parameter.Value" --output text
```

Berikut adalah contoh perintah setelah penggantian placeholder dibuat.

```
aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2022-English-Core-EKS_Optimized-k8s-n-2/image_id \
    --region us-west-2 --query "Parameter.Value" --output text
```

Contoh output adalah sebagai berikut.

```
ami-1234567890abcdef0
```

# Membangun AMI Windows kustom dengan Image Builder
<a name="eks-custom-ami-windows"></a>

Anda dapat menggunakan EC2 Image Builder untuk membuat Windows Amazon EKS yang dioptimalkan khusus AMIs dengan salah satu opsi berikut:
+  [Menggunakan Amazon EKS dioptimalkan Windows AMI sebagai basis](#custom-windows-ami-as-base) 
+  [Menggunakan komponen build yang dikelola Amazon](#custom-windows-ami-build-component) 

Dengan kedua metode tersebut, Anda harus membuat resep Image Builder Anda sendiri. Untuk informasi selengkapnya, lihat [Membuat versi baru resep gambar](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html) di Panduan Pengguna Image Builder.

**penting**  
Komponen yang **dikelola Amazon** berikut untuk `eks` menyertakan tambalan untuk. `CVE-2024-5321`  
 `1.28.2`dan lebih tinggi
 `1.29.2`dan lebih tinggi
 `1.30.1`dan lebih tinggi
Semua versi untuk Kubernetes 1.31 dan lebih tinggi

## Menggunakan Amazon EKS dioptimalkan Windows AMI sebagai basis
<a name="custom-windows-ami-as-base"></a>

Opsi ini adalah cara yang disarankan untuk membangun Windows kustom Anda AMIs. Windows Amazon EKS yang dioptimalkan yang AMIs kami sediakan lebih sering diperbarui daripada komponen build yang dikelola Amazon.

1. Mulai resep Image Builder baru.

   1. Buka konsol EC2 Image Builder di https://console.aws.amazon.com /imagebuilder.

   1. Di panel navigasi kiri, pilih **Resep gambar**.

   1. Pilih **Buat resep gambar**.

1. Di bagian **Rincian resep**, masukkan **Nama** dan **Versi**.

1. Tentukan ID Amazon EKS Windows AMI yang dioptimalkan di bagian **Gambar dasar**.

   1. Pilih **Masukkan ID AMI kustom**.

   1. Ambil ID AMI untuk versi OS Windows yang Anda butuhkan. Untuk informasi selengkapnya, lihat [Ambil Microsoft Windows AMI yang direkomendasikan IDs](retrieve-windows-ami-id.md).

   1. Masukkan **ID AMI** kustom. Jika ID AMI tidak ditemukan, pastikan AWS Region untuk ID AMI cocok dengan AWS Region yang ditampilkan di kanan atas konsol Anda.

1. (Opsional) Untuk mendapatkan pembaruan keamanan terbaru, tambahkan `update-windows` komponen di bagian **Build components -**.

   1. **Dari daftar dropdown di sebelah kanan kotak pencarian **Cari komponen berdasarkan nama**, pilih dikelola Amazon.**

   1. Di kotak **Cari komponen dengan nama** pencarian, masukkan`update-windows`.

   1. Pilih kotak centang hasil **`update-windows`**pencarian. Komponen ini mencakup patch Windows terbaru untuk sistem operasi.

1. Lengkapi masukan resep gambar yang tersisa dengan konfigurasi yang Anda butuhkan. Untuk informasi selengkapnya, lihat [Membuat versi resep gambar baru (konsol)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) di Panduan Pengguna Image Builder.

1. Pilih **Buat resep**.

1. Gunakan resep gambar baru di pipeline gambar baru atau yang sudah ada. Setelah pipeline gambar Anda berjalan dengan sukses, AMI kustom Anda akan terdaftar sebagai gambar keluaran dan siap digunakan. Untuk informasi selengkapnya, lihat [Membuat pipeline gambar menggunakan wizard konsol EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Menggunakan komponen build yang dikelola Amazon
<a name="custom-windows-ami-build-component"></a>

Saat menggunakan AMI Windows Amazon EKS yang dioptimalkan sebagai basis tidak layak, Anda dapat menggunakan komponen build yang dikelola Amazon sebagai gantinya. Opsi ini mungkin tertinggal dari versi Kubernetes terbaru yang didukung.

1. Mulai resep Image Builder baru.

   1. Buka konsol EC2 Image Builder di https://console.aws.amazon.com /imagebuilder.

   1. Di panel navigasi kiri, pilih **Resep gambar**.

   1. Pilih **Buat resep gambar**.

1. Di bagian **Rincian resep**, masukkan **Nama** dan **Versi**.

1. Tentukan opsi mana yang akan Anda gunakan untuk membuat AMI kustom Anda di bagian **Gambar dasar**:
   +  **Pilih gambar terkelola** - Pilih **Windows** untuk **Sistem Operasi Gambar (OS)** Anda. Kemudian pilih salah satu opsi berikut untuk **Asal gambar**.
     +  **Mulai cepat (dikelola Amazon)** - Di dropdown **nama Gambar**, pilih versi Windows Server yang didukung Amazon EKS. Untuk informasi selengkapnya, lihat [Buat node dengan Windows yang dioptimalkan AMIs](eks-optimized-windows-ami.md).
     +  **Gambar yang dimiliki oleh saya** - Untuk **nama Gambar**, pilih ARN gambar Anda sendiri dengan lisensi Anda sendiri. Gambar yang Anda berikan belum dapat menginstal komponen Amazon EKS.
   +  **Masukkan ID AMI khusus** — Untuk ID AMI, masukkan ID untuk AMI Anda dengan lisensi Anda sendiri. Gambar yang Anda berikan belum dapat menginstal komponen Amazon EKS.

1. Di bagian **Build components - Windows**, lakukan hal berikut:

   1. **Dari daftar dropdown di sebelah kanan kotak pencarian **Cari komponen berdasarkan nama**, pilih dikelola Amazon.**

   1. Di kotak **Cari komponen dengan nama** pencarian, masukkan`eks`.

   1. Pilih kotak centang hasil **`eks-optimized-ami-windows`**pencarian, meskipun hasil yang dikembalikan mungkin bukan versi yang Anda inginkan.

   1. Di kotak **Cari komponen dengan nama** pencarian, masukkan`update-windows`.

   1. Pilih kotak centang hasil pencarian **pembaruan-jendela**. Komponen ini mencakup patch Windows terbaru untuk sistem operasi.

1. Di bagian **Komponen yang dipilih**, lakukan hal berikut:

   1. Pilih **opsi Versioning untuk**. **`eks-optimized-ami-windows`**

   1. Pilih **Tentukan versi komponen**.

   1. Di bidang **Component Version**, enter*version.x*, ganti *version* dengan versi Kubernetes yang didukung. Memasukkan bagian *x* untuk nomor versi menunjukkan untuk menggunakan versi komponen terbaru yang juga sejajar dengan bagian versi yang Anda tentukan secara eksplisit. Perhatikan output konsol karena akan memberi tahu Anda apakah versi yang Anda inginkan tersedia sebagai komponen terkelola. Perlu diingat bahwa versi Kubernetes terbaru mungkin tidak tersedia untuk komponen build. Untuk informasi selengkapnya tentang versi yang tersedia, lihat[Mengambil informasi tentang versi `eks-optimized-ami-windows` komponen](#custom-windows-ami-component-versions).

1. Lengkapi masukan resep gambar yang tersisa dengan konfigurasi yang Anda butuhkan. Untuk informasi selengkapnya, lihat [Membuat versi resep gambar baru (konsol)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-image-recipes.html#create-image-recipe-version-console) di Panduan Pengguna Image Builder.

1. Pilih **Buat resep**.

1. Gunakan resep gambar baru di pipeline gambar baru atau yang sudah ada. Setelah pipeline gambar Anda berhasil berjalan, AMI kustom Anda akan terdaftar sebagai gambar keluaran dan siap digunakan. Untuk informasi selengkapnya, lihat [Membuat pipeline gambar menggunakan wizard konsol EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html).

## Mengambil informasi tentang versi `eks-optimized-ami-windows` komponen
<a name="custom-windows-ami-component-versions"></a>

Anda dapat mengambil informasi spesifik mengenai apa yang diinstal dengan masing-masing komponen. Misalnya, Anda dapat memverifikasi `kubelet` versi apa yang diinstal. Komponen melalui pengujian fungsional pada Amazon EKS mendukung versi sistem operasi Windows. Untuk informasi selengkapnya, lihat [Kalender rilis](eks-optimized-windows-ami.md#windows-ami-release-calendar). Versi OS Windows lainnya yang tidak terdaftar sebagai didukung atau telah mencapai akhir dukungan mungkin tidak kompatibel dengan komponen.

1. Buka konsol EC2 Image Builder di https://console.aws.amazon.com /imagebuilder.

1. Di panel navigasi kiri, pilih **Komponen**.

1. Dari daftar dropdown di sebelah kanan kotak pencarian **Cari komponen berdasarkan nama**, ubah **Dimiliki oleh saya** menjadi **Mulai cepat (dikelola Amazon)**.

1. Dalam kotak **Temukan komponen berdasarkan nama**, masukkan `eks`.

1. (Opsional) Jika Anda menggunakan versi terbaru, urutkan kolom **Versi** dalam urutan menurun dengan memilihnya dua kali.

1. Pilih **`eks-optimized-ami-windows`**tautan dengan versi yang diinginkan.

**Deskripsi** di halaman yang dihasilkan menunjukkan informasi spesifik.

# Mendeteksi masalah kesehatan node dan mengaktifkan perbaikan node otomatis
<a name="node-health"></a>

Kesehatan node mengacu pada status operasional dan kemampuan node Kubernetes untuk menjalankan beban kerja secara efektif. Node yang sehat mempertahankan konektivitas jaringan yang diharapkan, memiliki sumber daya komputasi dan penyimpanan yang memadai, dan dapat berhasil menjalankan beban kerja tanpa gangguan.

Untuk membantu menjaga node yang sehat di kluster EKS, EKS menawarkan *agen pemantauan node* dan *perbaikan node otomatis*. Fitur-fitur ini secara otomatis diaktifkan dengan komputasi Mode Otomatis EKS. Anda juga dapat menggunakan perbaikan node otomatis dengan grup node terkelola EKS dan Karpenter, dan dapat menggunakan agen pemantauan simpul EKS dengan jenis komputasi EKS apa pun kecuali untuk Fargate. AWS Agen pemantauan simpul EKS dan perbaikan simpul otomatis paling efektif bila digunakan bersama, tetapi mereka juga dapat digunakan secara individual dalam kluster EKS.

**penting**  
*Agen pemantauan node* dan *perbaikan otomatis node* hanya tersedia di Linux. Fitur-fitur ini tidak tersedia di Windows.

## Agen pemantauan simpul
<a name="node-monitoring-agent"></a>

Agen pemantauan simpul EKS membaca log simpul untuk mendeteksi masalah kesehatan. Ini mem-parsing log untuk mendeteksi kegagalan dan memunculkan informasi status tentang status kesehatan node. Untuk setiap kategori masalah yang terdeteksi, agen menerapkan yang didedikasikan `NodeCondition` untuk node pekerja. Untuk informasi rinci tentang masalah kesehatan simpul yang terdeteksi oleh agen pemantau simpul EKS, lihat[Mendeteksi masalah kesehatan simpul dengan agen pemantauan simpul EKS](node-health-nma.md).

Komputasi Mode Otomatis EKS mencakup agen pemantauan simpul. Untuk jenis komputasi EKS lainnya, Anda dapat menambahkan agen pemantauan node sebagai add-on EKS atau Anda dapat mengelolanya dengan perkakas Kubernetes seperti Helm. Untuk informasi selengkapnya, lihat [Konfigurasikan agen pemantauan simpul](node-health-nma.md#node-monitoring-agent-configure).

Dengan agen pemantauan simpul EKS, kategori masalah kesehatan simpul berikut muncul sebagai kondisi simpul. Perhatikan,`Ready`,`DiskPressure`, dan `MemoryPressure` merupakan kondisi node Kubernetes standar yang muncul bahkan tanpa agen pemantauan node EKS.


| Kondisi Node | Deskripsi | 
| --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady menunjukkan apakah perangkat keras yang dipercepat (GPU, Neuron) pada node berfungsi dengan benar.  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady menunjukkan apakah runtime kontainer (containerd, dll.) berfungsi dengan benar dan dapat menjalankan kontainer.  | 
|  DiskPressure  |  DiskPressure adalah kondisi Kubernetes standar yang menunjukkan node mengalami tekanan disk (ruang disk rendah atau I/O tinggi).  | 
|  KernelReady  |  KernelReady menunjukkan apakah kernel berfungsi dengan benar tanpa kesalahan kritis, kepanikan, atau kelelahan sumber daya.  | 
|  MemoryPressure  |  MemoryPressure adalah kondisi Kubernetes standar yang menunjukkan node mengalami tekanan memori (memori yang tersedia rendah).  | 
|  NetworkingReady  |  NetworkingReady menunjukkan apakah tumpukan jaringan node berfungsi dengan benar (antarmuka, perutean, konektivitas).  | 
|  StorageReady  |  StorageReady menunjukkan apakah subsistem penyimpanan node berfungsi dengan benar (disk, sistem file, I/O).  | 
|  Siap  |  Ready adalah kondisi Kubernetes standar yang menunjukkan node sehat dan siap menerima pod.  | 

## Perbaikan simpul otomatis
<a name="node-auto-repair"></a>

Perbaikan node otomatis EKS terus memantau kesehatan node, bereaksi terhadap masalah yang terdeteksi, dan mengganti atau me-reboot node bila memungkinkan. Ini meningkatkan keandalan klaster dengan intervensi manual minimal dan membantu mengurangi waktu henti aplikasi.

Dengan sendirinya, perbaikan node otomatis EKS bereaksi terhadap `Ready` kondisi kubelet, objek node yang dihapus secara manual, dan instance grup node yang dikelola EKS yang gagal bergabung dengan cluster. Ketika perbaikan node otomatis EKS diaktifkan dengan agen pemantauan node diinstal, perbaikan node otomatis EKS bereaksi terhadap kondisi node tambahan:`AcceleratedHardwareReady`,,`ContainerRuntimeReady`, `KernelReady``NetworkingReady`, dan`StorageReady`.

Perbaikan node otomatis EKS tidak bereaksi terhadap Kubernetes standar`DiskPressure`,`MemoryPressure`, atau `PIDPressure` kondisi node. Kondisi ini sering menunjukkan masalah dengan perilaku aplikasi, konfigurasi beban kerja, atau batasan sumber daya daripada kegagalan tingkat simpul, sehingga sulit untuk menentukan tindakan perbaikan default yang sesuai. Dalam skenario ini, beban kerja tunduk pada perilaku penggusuran tekanan [node](https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction) Kubernetes.

Untuk informasi lebih lanjut tentang perbaikan simpul otomatis EKS, lihat[Secara otomatis memperbaiki node di kluster EKS](node-repair.md).

**Topics**

# Mendeteksi masalah kesehatan simpul dengan agen pemantauan simpul EKS
<a name="node-health-nma"></a>

Topik ini merinci masalah kesehatan simpul yang terdeteksi oleh agen pemantau simpul EKS, bagaimana masalah tersebut muncul sebagai kondisi atau peristiwa node, dan cara mengonfigurasi agen pemantauan node.

Agen pemantauan simpul EKS dapat digunakan dengan atau tanpa perbaikan simpul otomatis EKS. Untuk informasi lebih lanjut tentang perbaikan node otomatis EKS, lihat[Secara otomatis memperbaiki node di kluster EKS](node-repair.md).

Kode sumber untuk agen pemantauan simpul EKS dipublikasikan GitHub di [aws/ eks-node-monitoring-agent](https://github.com/aws/eks-node-monitoring-agent) repositori.

## Masalah kesehatan simpul
<a name="node-health-issues"></a>

Tabel berikut menjelaskan masalah kesehatan simpul yang dapat dideteksi oleh agen pemantauan node. Ada dua jenis masalah:
+ Kondisi — Masalah terminal yang menjamin tindakan remediasi seperti penggantian instance atau reboot. Ketika perbaikan otomatis diaktifkan, Amazon EKS akan melakukan tindakan perbaikan, baik sebagai penggantian node atau reboot. Untuk informasi selengkapnya, lihat [Kondisi simpul](learn-status-conditions.md#status-node-conditions).
+ Event — Masalah sementara atau konfigurasi node sub-optimal. Tidak ada tindakan perbaikan otomatis yang akan terjadi. Untuk informasi selengkapnya, lihat [Peristiwa simpul](learn-status-conditions.md#status-node-events).

## AcceleratedHardware masalah kesehatan simpul
<a name="node-health-AcceleratedHardware"></a>

Kondisi pemantauan adalah `AcceleratedHardwareReady` untuk masalah dalam tabel berikut yang memiliki tingkat keparahan “Kondisi”. Peristiwa dan kondisi dalam tabel di bawah ini adalah untuk masalah kesehatan node terkait NVIDIA dan Neuron.


| Nama | Kepelikan | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | --- | 
|  DCGMDiagnosticKegagalan  |  Kondisi  |  Kasus uji dari rangkaian uji diagnostik aktif DCGM gagal.  |  Tidak ada  | 
|  DCGMError  |  Kondisi  |  Koneksi ke proses host DCGM terputus atau tidak dapat dibuat.  |  Tidak ada  | 
|  DCGMFieldKesalahan [Kode]  |  Peristiwa  |  DCGM mendeteksi degradasi GPU melalui pengenal bidang.  |  Tidak ada  | 
|  DCGMHealthKode [Kode]  |  Peristiwa  |  Pemeriksaan kesehatan DCGM gagal dengan cara yang tidak fatal.  |  Tidak ada  | 
|  DCGMHealthKode [Kode]  |  Kondisi  |  Pemeriksaan kesehatan DCGM gagal secara fatal.  |  Tidak ada  | 
|  Neuron DMAError  |  Kondisi  |  Mesin DMA mengalami kesalahan yang tidak dapat dipulihkan.  |  Ganti  | 
|  HBMUncorrectableKesalahan Neuron  |  Kondisi  |  HBM mengalami kesalahan yang tidak dapat diperbaiki dan menghasilkan hasil yang salah.  |  Ganti  | 
|  NCUncorrectableKesalahan Neuron  |  Kondisi  |  Kesalahan memori Neuron Core yang tidak dapat diperbaiki terdeteksi.  |  Ganti  | 
|  SRAMUncorrectableKesalahan Neuron  |  Kondisi  |  SRAM on-chip mengalami kesalahan paritas dan menghasilkan hasil yang salah.  |  Ganti  | 
|  NvidiaDeviceCountMismatch  |  Peristiwa  |  Jumlah yang GPUs terlihat melalui NVMLtidak konsisten dengan jumlah perangkat NVIDIA pada sistem file.  |  Tidak ada  | 
|  NvidiaDoubleBitError  |  Kondisi  |  Kesalahan bit ganda dihasilkan oleh driver GPU.  |  Ganti  | 
|  Nvidia NCCLError  |  Peristiwa  |  Segfault terjadi di perpustakaan NVIDIA Collective Communications (`libnccl`).  |  Tidak ada  | 
|  NVLinkKesalahan Nvidia  |  Kondisi  |  NVLink kesalahan dilaporkan oleh driver GPU.  |  Ganti  | 
|  PCIeKesalahan Nvidia  |  Peristiwa  |  PCIe tayangan ulang dipicu untuk pulih dari kesalahan transmisi.  |  Tidak ada  | 
|  NvidiaPageRetirement  |  Peristiwa  |  Pengemudi GPU telah menandai halaman memori untuk pensiun. Ini dapat terjadi jika ada kesalahan bit ganda tunggal atau dua kesalahan bit tunggal ditemui di alamat yang sama.  |  Tidak ada  | 
|  NvidiaPowerError  |  Peristiwa  |  Pemanfaatan daya GPUs melanggar ambang batas yang diizinkan.  |  Tidak ada  | 
|  NvidiaThermalError  |  Peristiwa  |  Status termal GPUs melanggar ambang batas yang diizinkan.  |  Tidak ada  | 
|  Kesalahan NvidiaXid [Kode]  |  Kondisi  |  Terjadi kesalahan GPU kritis.  |  Ganti atau Reboot  | 
|  Peringatan NvidiaXid [Kode]  |  Peristiwa  |  Terjadi kesalahan GPU non-kritis.  |  Tidak ada  | 

## Kode kesalahan NVIDIA XID
<a name="nvidia-xid-codes"></a>

Agen pemantauan node mendeteksi kesalahan NVIDIA XID dari log kernel GPU. Kesalahan XID terbagi dalam dua kategori:
+  **Kode XID terkenal** — Kesalahan kritis yang mengatur kondisi node (`AcceleratedHardwareReady=False`) dan memicu perbaikan otomatis saat diaktifkan. Format kode alasannya adalah`NvidiaXID[Code]Error`. Kode XID terkenal yang dideteksi agen pemantau simpul EKS mungkin tidak mewakili daftar lengkap kode NVIDIA XID yang memerlukan tindakan perbaikan.
+  **Kode XID tidak dikenal** — Logging sebagai event Kubernetes saja. Ini tidak memicu perbaikan otomatis. Format kode alasannya adalah`NvidiaXID[Code]Warning`. Untuk menyelidiki kesalahan XID yang tidak diketahui, tinjau log kernel Anda dengan`dmesg | grep -i nvrm`.

Untuk informasi selengkapnya tentang kesalahan XID, lihat Kesalahan [Xid](https://docs.nvidia.com/deploy/xid-errors/index.html#topic_5_1) di *Deployment GPU NVIDIA* dan Dokumentasi Manajemen. Untuk informasi selengkapnya tentang pesan XID individual, lihat [Memahami Pesan Xid di Dokumentasi](https://docs.nvidia.com/deploy/gpu-debug-guidelines/index.html#understanding-xid-messages) *Penerapan dan Manajemen GPU NVIDIA*.

Tabel berikut mencantumkan kode XID yang terkenal, artinya, dan tindakan perbaikan node default jika diaktifkan.


| Kode XID | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | 
|  13  |  Pengecualian Mesin Grafis — Terjadi kesalahan mesin grafis GPU, biasanya disebabkan oleh masalah perangkat lunak atau bug driver.  |  Boot ulang  | 
|  31  |  Kesalahan halaman memori GPU — Aplikasi mencoba mengakses memori GPU yang tidak dipetakan atau dapat diakses.  |  Boot ulang  | 
|  48  |  Kesalahan ECC Bit Ganda - Kesalahan bit ganda yang tidak dapat diperbaiki terjadi dalam memori GPU, yang menunjukkan potensi degradasi perangkat keras.  |  Boot ulang  | 
|  63  |  Acara pemetaan ulang memori GPU - Driver GPU memetakan ulang sebagian memori GPU karena kesalahan yang terdeteksi. Ini sering dapat dipulihkan.  |  Boot ulang  | 
|  64  |  Kegagalan pemetaan ulang memori GPU - GPU tidak dapat memetakan ulang memori yang rusak, menunjukkan masalah perangkat keras.  |  Boot ulang  | 
|  74  |  NVLink Kesalahan - Terjadi kesalahan pada NVLink interkoneksi berkecepatan tinggi antara GPUs.  |  Ganti  | 
|  79  |  GPU telah jatuh dari bus — GPU tidak lagi dapat diakses melalui PCIe, biasanya menunjukkan kegagalan perangkat keras atau masalah daya.  |  Ganti  | 
|  94  |  Kesalahan memori yang terkandung — Terjadi kesalahan memori tetapi terkandung dan tidak mempengaruhi aplikasi lain.  |  Boot ulang  | 
|  95  |  Kesalahan memori yang tidak terkendali — Terjadi kesalahan memori yang mungkin memengaruhi aplikasi atau memori sistem lain.  |  Boot ulang  | 
|  119  |  GSP RPC Timeout — Komunikasi dengan Prosesor Sistem GPU habis waktu, mungkin karena masalah firmware.  |  Ganti  | 
|  120  |  Kesalahan GSP - Terjadi kesalahan pada Prosesor Sistem GPU.  |  Ganti  | 
|  121  |  Kesalahan C2C - Terjadi kesalahan pada chip-to-chip interkoneksi (digunakan dalam multi-die). GPUs  |  Ganti  | 
|  140  |  ECC Unrecover Error - Kesalahan ECC lolos dari penahanan dan mungkin memiliki data yang rusak.  |  Ganti  | 

Untuk melihat kondisi node saat ini yang terkait dengan kesehatan GPU, jalankan perintah berikut.

```
kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'
```

Untuk melihat peristiwa terkait XID di cluster Anda, jalankan salah satu perintah berikut.

```
kubectl get events | grep -i "NvidiaXID"
```

## ContainerRuntime masalah kesehatan simpul
<a name="node-health-ContainerRuntime"></a>

Kondisi pemantauan adalah `ContainerRuntimeReady` untuk masalah dalam tabel berikut yang memiliki tingkat keparahan “Kondisi”.


| Nama | Kepelikan | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | --- | 
|  ContainerRuntimeFailed  |  Peristiwa  |  Runtime container gagal membuat container, kemungkinan terkait dengan masalah yang dilaporkan jika terjadi berulang kali.  |  Tidak ada  | 
|  DeprecatedContainerdConfiguration  |  Peristiwa  |  Gambar kontainer menggunakan manifes gambar usang versi 2, skema 1 baru-baru ini ditarik ke node melalui. `containerd`  |  Tidak ada  | 
|  KubeletFailed  |  Peristiwa  |  Kubelet memasuki keadaan gagal.  |  Tidak ada  | 
|  LivenessProbeFailures  |  Peristiwa  |  Kegagalan probe keaktifan terdeteksi, berpotensi menunjukkan masalah kode aplikasi atau nilai batas waktu yang tidak mencukupi jika terjadi berulang kali.  |  Tidak ada  | 
|  PodStuckTerminating  |  Kondisi  |  Sebuah Pod sedang atau macet terminating untuk waktu yang berlebihan, yang dapat disebabkan oleh kesalahan CRI yang mencegah perkembangan status pod.  |  Ganti  | 
|  ReadinessProbeFailures  |  Peristiwa  |  Kegagalan probe kesiapan terdeteksi, berpotensi menunjukkan masalah kode aplikasi atau nilai batas waktu yang tidak mencukupi jika terjadi berulang kali.  |  Tidak ada  | 
|  [Nama] RepeatedRestart  |  Peristiwa  |  Unit systemd sering restart.  |  Tidak ada  | 
|  ServiceFailedToStart  |  Peristiwa  |  Unit systemd gagal memulai.  |  Tidak ada  | 

## Masalah kesehatan simpul kernel
<a name="node-health-Kernel"></a>

Kondisi pemantauan adalah `KernelReady` untuk masalah dalam tabel berikut yang memiliki tingkat keparahan “Kondisi”.


| Nama | Kepelikan | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | --- | 
|  AppBlocked  |  Peristiwa  |  Tugas telah diblokir untuk jangka waktu yang lama dari penjadwalan, biasanya disebabkan oleh diblokir pada input atau output.  |  Tidak ada  | 
|  AppCrash  |  Peristiwa  |  Aplikasi pada node telah crash.  |  Tidak ada  | 
|  ApproachingKernelPidMax  |  Peristiwa  |  Jumlah proses mendekati jumlah maksimum PIDs yang tersedia per `kernel.pid_max` pengaturan saat ini, setelah itu tidak ada lagi proses yang dapat diluncurkan.  |  Tidak ada  | 
|  ApproachingMaxOpenFiles  |  Peristiwa  |  Jumlah file yang terbuka mendekati jumlah maksimum file terbuka yang mungkin diberikan pengaturan kernel saat ini, setelah itu membuka file baru akan gagal.  |  Tidak ada  | 
|  ConntrackExceededKernel  |  Peristiwa  |  Pelacakan koneksi melebihi maksimum untuk kernel dan koneksi baru tidak dapat dibuat, yang dapat mengakibatkan hilangnya paket.  |  Tidak ada  | 
|  ExcessiveZombieProcesses  |  Peristiwa  |  Proses yang tidak dapat sepenuhnya direklamasi terakumulasi dalam jumlah besar, yang menunjukkan masalah aplikasi dan dapat menyebabkan mencapai batas proses sistem.  |  Tidak ada  | 
|  ForkFailedOutOfPIDs  |  Kondisi  |  Panggilan fork atau exec gagal karena sistem kehabisan proses IDs atau memori, yang mungkin disebabkan oleh proses zombie atau kelelahan memori fisik.  |  Ganti  | 
|  KernelBug  |  Peristiwa  |  Bug kernel terdeteksi dan dilaporkan oleh kernel Linux itu sendiri, meskipun ini kadang-kadang disebabkan oleh node dengan CPU tinggi atau penggunaan memori yang menyebabkan pemrosesan peristiwa tertunda.  |  Tidak ada  | 
|  LargeEnvironment  |  Peristiwa  |  Jumlah variabel lingkungan untuk proses ini lebih besar dari yang diharapkan, berpotensi disebabkan oleh banyak layanan dengan `enableServiceLinks` set ke true, yang dapat menyebabkan masalah kinerja.  |  Tidak ada  | 
|  RapidCron  |  Peristiwa  |  Pekerjaan cron berjalan lebih cepat daripada setiap lima menit pada node ini, yang dapat memengaruhi kinerja jika pekerjaan tersebut menghabiskan sumber daya yang signifikan.  |  Tidak ada  | 
|  SoftLockup  |  Peristiwa  |  CPU terhenti untuk jangka waktu tertentu.  |  Tidak ada  | 

## Masalah kesehatan simpul jaringan
<a name="node-health-Networking"></a>

Kondisi pemantauan adalah `NetworkingReady` untuk masalah dalam tabel berikut yang memiliki tingkat keparahan “Kondisi”.


| Nama | Kepelikan | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | --- | 
|  BandwidthInExceeded  |  Peristiwa  |  Paket telah diantrian atau dijatuhkan karena bandwidth agregat masuk melebihi maksimum untuk instance.  |  Tidak ada  | 
|  BandwidthOutExceeded  |  Peristiwa  |  Paket telah diantrian atau dijatuhkan karena bandwidth agregat keluar melebihi maksimum untuk instance.  |  Tidak ada  | 
|  ConntrackExceeded  |  Peristiwa  |  Pelacakan koneksi melebihi maksimum untuk instance dan koneksi baru tidak dapat dibuat, yang dapat mengakibatkan hilangnya paket.  |  Tidak ada  | 
|  EFAErrorMetrik  |  Peristiwa  |  Metrik driver EFA menunjukkan ada antarmuka dengan penurunan kinerja.  |  Tidak ada  | 
|  IPAMDInconsistentNegara  |  Peristiwa  |  Status pos pemeriksaan IPAMD pada disk tidak mencerminkan runtime IPs dalam container.  |  Tidak ada  | 
|  IPAMDNoIPs  |  Peristiwa  |  IPAMD kehabisan alamat IP.  |  Tidak ada  | 
|  IPAMDNotSiap  |  Kondisi  |  IPAMD gagal terhubung ke server API.  |  Ganti  | 
|  IPAMDNotBerlari  |  Kondisi  |  Proses Amazon VPC CNI tidak ditemukan berjalan.  |  Ganti  | 
|  IPAMDRepeatedlyMulai ulang  |  Peristiwa  |  Beberapa restart dalam layanan IPAMD telah terjadi.  |  Tidak ada  | 
|  InterfaceNotRunning  |  Kondisi  |  Antarmuka ini tampaknya tidak berjalan atau ada masalah jaringan.  |  Ganti  | 
|  InterfaceNotUp  |  Kondisi  |  Antarmuka ini tampaknya tidak aktif atau ada masalah jaringan.  |  Ganti  | 
|  KubeProxyNotReady  |  Peristiwa  |  Kube-proxy gagal menonton atau mencantumkan sumber daya.  |  Tidak ada  | 
|  LinkLocalExceeded  |  Peristiwa  |  Paket dijatuhkan karena PPS lalu lintas ke layanan proxy lokal melebihi maksimum antarmuka jaringan.  |  Tidak ada  | 
|  MACAddressPolicyMisconfigured  |  Peristiwa  |  Konfigurasi tautan systemd-networkd memiliki nilai yang salah. `MACAddressPolicy`  |  Tidak ada  | 
|  MissingDefaultRoutes  |  Peristiwa  |  Ada aturan rute default yang hilang.  |  Tidak ada  | 
|  Hilang IPRoutes  |  Peristiwa  |  Ada rute yang hilang untuk Pod IPs.  |  Tidak ada  | 
|  Hilang IPRules  |  Peristiwa  |  Ada aturan yang hilang untuk Pod IPs.  |  Tidak ada  | 
|  MissingLoopbackInterface  |  Kondisi  |  Antarmuka loopback hilang dari instance ini, menyebabkan kegagalan layanan tergantung pada konektivitas lokal.  |  Ganti  | 
|  NetworkSysctl  |  Peristiwa  |  `sysctl`Pengaturan jaringan node ini berpotensi salah.  |  Tidak ada  | 
|  PPSExceeded  |  Peristiwa  |  Paket telah diantrian atau dijatuhkan karena PPS dua arah melebihi maksimum untuk instance.  |  Tidak ada  | 
|  PortConflict  |  Peristiwa  |  Jika sebuah Pod menggunakan HostPort, ia dapat menulis `iptables` aturan yang mengganti port host yang sudah terikat, yang berpotensi mencegah akses server API. `kubelet`  |  Tidak ada  | 
|  UnexpectedRejectRule  |  Peristiwa  |  Sebuah tak terduga `REJECT` atau `DROP` aturan ditemukan di`iptables`, berpotensi memblokir lalu lintas yang diharapkan.  |  Tidak ada  | 

## Masalah kesehatan simpul penyimpanan
<a name="node-health-Storage"></a>

Kondisi pemantauan adalah `StorageReady` untuk masalah dalam tabel berikut yang memiliki tingkat keparahan “Kondisi”.


| Nama | Kepelikan | Deskripsi | Tindakan Perbaikan | 
| --- | --- | --- | --- | 
|  EBSInstanceIOPSExceeded  |  Peristiwa  |  IOPS maksimum untuk instance terlampaui.  |  Tidak ada  | 
|  EBSInstanceThroughputExceeded  |  Peristiwa  |  Throughput Maksimum untuk instance terlampaui.  |  Tidak ada  | 
|  EBSVolumeIOPSExceeded  |  Peristiwa  |  IOPS maksimum untuk Volume EBS tertentu terlampaui.  |  Tidak ada  | 
|  EBSVolumeThroughputExceeded  |  Peristiwa  |  Throughput Maksimum untuk volume Amazon EBS tertentu terlampaui.  |  Tidak ada  | 
|  EtcHostsMountFailed  |  Peristiwa  |  Pemasangan kubelet yang dihasilkan `/etc/hosts` gagal karena `/var/lib/kubelet/pods` remounting data pengguna selama operasi. `kubelet-container`  |  Tidak ada  | 
|  IODelays  |  Peristiwa  |  Penundaan input atau output terdeteksi dalam suatu proses, berpotensi menunjukkan penyediaan input-output yang tidak mencukupi jika berlebihan.  |  Tidak ada  | 
|  KubeletDiskUsageSlow  |  Peristiwa  |  `kubelet`Ini melaporkan penggunaan disk yang lambat saat mencoba mengakses sistem file. Ini berpotensi menunjukkan masalah input-output atau sistem file disk yang tidak mencukupi.  |  Tidak ada  | 
|  XFSSmallAverageClusterSize  |  Peristiwa  |  Ukuran XFS Average Cluster kecil, menunjukkan fragmentasi ruang kosong yang berlebihan. Ini dapat mencegah pembuatan file meskipun ada inode atau ruang kosong yang tersedia.  |  Tidak ada  | 

## Konfigurasikan agen pemantauan simpul
<a name="node-monitoring-agent-configure"></a>

Agen pemantauan simpul EKS digunakan sebagai DaemonSet file. Saat Anda menerapkannya sebagai add-on EKS, Anda dapat menyesuaikan instalasi dengan nilai konfigurasi berikut. Untuk konfigurasi default, rujuk bagan [Helm](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) agen pemantauan simpul EKS.


| Opsi Konfigurasi | Deskripsi | 
| --- | --- | 
|   `monitoringAgent.resources.requests.cpu`   |  Permintaan sumber daya CPU untuk agen pemantauan.  | 
|   `monitoringAgent.resources.requests.memory`   |  Permintaan sumber daya memori untuk agen pemantauan.  | 
|   `monitoringAgent.resources.limits.cpu`   |  Batas sumber daya CPU untuk agen pemantauan.  | 
|   `monitoringAgent.resources.limits.memory`   |  Batas sumber daya memori untuk agen pemantauan.  | 
|   `monitoringAgent.tolerations`   |  Toleransi untuk menjadwalkan agen pemantauan pada node yang tercemar.  | 
|   `monitoringAgent.additionalArgs`   |  Argumen baris perintah tambahan untuk diteruskan ke agen pemantauan.  | 

**catatan**  
Anda dapat mengkonfigurasi `hostname-override` dan `verbosity` seperti `monitoringAgent.additionalArgs` dengan add-on EKS atau instalasi Helm. Saat ini Anda tidak dapat menyesuaikan `probe-address` (`8002`) atau `metrics-address` (`8003`) agen pemantauan node melalui argumen tambahan dengan add-on EKS atau instalasi Helm.

Agen pemantauan node mencakup komponen server NVIDIA DCGM (Data Center GPU Manager) (`nv-hostengine`) untuk memantau NVIDIA. GPUs Komponen ini hanya berjalan pada node yang merupakan tipe instans GPU NVIDIA seperti yang `nodeAffinity` ditunjukkan oleh bagan [Helm](https://github.com/aws/eks-node-monitoring-agent/blob/main/charts/eks-node-monitoring-agent/values.yaml) agen. Anda tidak dapat menggunakan instalasi NVIDIA DCGM yang ada dengan agen pemantauan simpul EKS, berikan umpan balik tentang [GitHub masalah peta jalan EKS \$12763](https://github.com/aws/containers-roadmap/issues/2763) jika Anda memerlukan fungsi ini.

Saat Anda menggunakan agen pemantauan simpul EKS sebagai add-on EKS, Anda dapat menyesuaikan instalasi NVIDIA DCGM dengan nilai konfigurasi berikut.


| Opsi Konfigurasi | Deskripsi | 
| --- | --- | 
|   `dcgmAgent.resources.requests.cpu`   |  Permintaan sumber daya CPU untuk agen DCGM.  | 
|   `dcgmAgent.resources.requests.memory`   |  Permintaan sumber daya memori untuk agen DCGM.  | 
|   `dcgmAgent.resources.limits.cpu`   |  Batas sumber daya CPU untuk agen DCGM.  | 
|   `dcgmAgent.resources.limits.memory`   |  Batas sumber daya memori untuk agen DCGM.  | 
|   `dcgmAgent.tolerations`   |  Toleransi untuk penjadwalan agen DCGM pada node yang tercemar.  | 

Anda dapat menggunakan perintah AWS CLI berikut untuk mendapatkan informasi yang berguna tentang versi dan skema untuk add-on agen pemantauan simpul EKS EKS.

Dapatkan versi add-on agen terbaru untuk versi Kubernetes Anda. Ganti `1.35` dengan versi Kubernetes Anda.

```
aws eks describe-addon-versions \
  --addon-name eks-node-monitoring-agent \
  --kubernetes-version 1.35 \
  --query='addons[].addonVersions[].addonVersion'
```

Dapatkan skema add-on agen yang didukung di add-on EKS. Ganti `v1.5.1-eksbuild.1` dengan versi agen Anda.

```
aws eks describe-addon-configuration \
  --addon-name eks-node-monitoring-agent \
  --addon-version v1.5.1-eksbuild.1
```

# Secara otomatis memperbaiki node di kluster EKS
<a name="node-repair"></a>

Topik ini merinci perilaku perbaikan node otomatis EKS dan cara mengonfigurasinya untuk memenuhi kebutuhan Anda. Perbaikan simpul otomatis EKS diaktifkan secara default dalam Mode Otomatis EKS, dan dapat digunakan dengan grup simpul yang dikelola EKS dan Karpenter.

Tindakan perbaikan node otomatis EKS default dirangkum dalam tabel di bawah ini dan mereka berlaku untuk perilaku untuk Mode Otomatis EKS, grup node terkelola EKS, dan Karpenter. Saat menggunakan Mode Otomatis EKS atau Karpenter, semua tindakan `AcceleratedHardwareReady` perbaikan dilakukan`Replace`, dan hanya grup simpul yang dikelola EKS yang mendukung `Reboot` sebagai tindakan perbaikan.

Untuk daftar rinci masalah kesehatan node yang terdeteksi oleh agen pemantau simpul EKS dan tindakan perbaikan node yang sesuai, lihat[Mendeteksi masalah kesehatan simpul dengan agen pemantauan simpul EKS](node-health-nma.md).


| Kondisi Node | Deskripsi | Perbaikan setelah | Tindakan perbaikan | 
| --- | --- | --- | --- | 
|  AcceleratedHardwareReady  |  AcceleratedHardwareReady menunjukkan apakah perangkat keras yang dipercepat (GPU, Neuron) pada node berfungsi dengan benar.  |  10m  |  Ganti atau Reboot  | 
|  ContainerRuntimeReady  |  ContainerRuntimeReady menunjukkan apakah runtime kontainer (containerd, dll.) berfungsi dengan benar dan dapat menjalankan kontainer.  |  30m  |  Ganti  | 
|  DiskPressure  |  DiskPressure adalah kondisi Kubernetes standar yang menunjukkan node mengalami tekanan disk (ruang disk rendah atau I/O tinggi).  |  N/A  |  Tidak ada  | 
|  KernelReady  |  KernelReady menunjukkan apakah kernel berfungsi dengan benar tanpa kesalahan kritis, kepanikan, atau kehabisan sumber daya.  |  30m  |  Ganti  | 
|  MemoryPressure  |  MemoryPressure adalah kondisi Kubernetes standar yang menunjukkan node mengalami tekanan memori (memori yang tersedia rendah).  |  N/A  |  Tidak ada  | 
|  NetworkingReady  |  NetworkingReady menunjukkan apakah tumpukan jaringan node berfungsi dengan benar (antarmuka, perutean, konektivitas).  |  30m  |  Ganti  | 
|  StorageReady  |  StorageReady menunjukkan apakah subsistem penyimpanan node berfungsi dengan benar (disk, sistem file, I/O).  |  30m  |  Ganti  | 
|  Siap  |  Ready adalah kondisi Kubernetes standar yang menunjukkan node sehat dan siap menerima pod.  |  30m  |  Ganti  | 

Tindakan perbaikan node otomatis EKS dinonaktifkan dalam skenario berikut secara default. Tindakan perbaikan node yang sedang berlangsung berlanjut di setiap skenario. Lihat [Konfigurasikan perbaikan node otomatis](#configure-node-repair) cara mengganti pengaturan default ini.

 **Grup simpul terkelola EKS** 
+ Grup node memiliki lebih dari lima node dan lebih dari 20% node dalam kelompok node tidak sehat.
+ Pergeseran zona untuk kluster Anda dipicu melalui Application Recovery Controller (ARC).

 **Mode Otomatis EKS dan Karpenter** 
+ Lebih dari 20% node di dalamnya NodePool tidak sehat.
+ Untuk standalone NodeClaims, 20% node di cluster tidak sehat.

## Konfigurasikan perbaikan node otomatis
<a name="configure-node-repair"></a>

Perbaikan node otomatis tidak dapat dikonfigurasi saat menggunakan Mode Otomatis EKS dan selalu diaktifkan dengan pengaturan default yang sama dengan Karpenter.

### Karpenter
<a name="configure-node-repair-karpenter"></a>

Untuk menggunakan perbaikan node otomatis dengan Karpenter, aktifkan gerbang fitur. `NodeRepair=true` Anda dapat mengaktifkan gerbang fitur melalui opsi `--feature-gates` CLI atau variabel `FEATURE_GATES` lingkungan dalam penyebaran Karpenter. Untuk informasi lebih lanjut, lihat dokumentasi [Karpenter](https://karpenter.sh/docs/concepts/disruption/#node-auto-repair).

### Grup simpul terkelola
<a name="configure-node-repair-mng"></a>

Anda dapat mengaktifkan perbaikan node otomatis saat membuat grup node terkelola EKS baru atau dengan memperbarui grup node terkelola EKS yang ada.
+  **Konsol Amazon EKS** — Pilih kotak centang **Aktifkan perbaikan otomatis node** untuk grup node terkelola. Untuk informasi selengkapnya, lihat [Buat grup node terkelola untuk klaster Anda](create-managed-node-group.md).
+  ** AWS CLI** - Tambahkan `--node-repair-config enabled=true` ke perintah [https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html](https://docs.aws.amazon.com/cli/latest/reference/eks/create-nodegroup.html)atau [https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html).
+  **eksctl** [— Konfigurasikan`managedNodeGroups.nodeRepairConfig.enabled: true`, lihat contoh di eksctl. GitHub](https://github.com/eksctl-io/eksctl/blob/main/examples/44-node-repair.yaml)

Saat menggunakan grup node terkelola EKS, Anda dapat mengontrol perilaku perbaikan otomatis node dengan pengaturan berikut.

Untuk mengontrol kapan perbaikan otomatis node berhenti mengambil tindakan, tetapkan ambang batas berdasarkan jumlah node yang tidak sehat dalam grup node. Tetapkan jumlah absolut atau persentase, tetapi tidak keduanya.


| Pengaturan | Deskripsi | 
| --- | --- | 
|   `maxUnhealthyNodeThresholdCount`   |  Jumlah absolut node yang tidak sehat di atas mana perbaikan otomatis node berhenti. Gunakan ini untuk membatasi ruang lingkup perbaikan.  | 
|   `maxUnhealthyNodeThresholdPercentage`   |  Persentase node yang tidak sehat di atas mana perbaikan otomatis node berhenti (0-100).  | 

Untuk mengontrol berapa banyak node perbaikan pada saat yang sama, Anda dapat mengkonfigurasi perbaikan paralelisme. Seperti halnya ambang simpul yang tidak sehat, tetapkan jumlah absolut atau persentase, tetapi tidak keduanya.


| Pengaturan | Deskripsi | 
| --- | --- | 
|   `maxParallelNodesRepairedCount`   |  Jumlah maksimum node untuk diperbaiki secara bersamaan.  | 
|   `maxParallelNodesRepairedPercentage`   |  Persentase maksimum node yang tidak sehat untuk diperbaiki secara bersamaan (0-100).  | 

Dengan`nodeRepairConfigOverrides`, Anda dapat menyesuaikan perilaku perbaikan untuk kondisi tertentu. Gunakan ini ketika Anda memerlukan tindakan perbaikan yang berbeda atau waktu tunggu untuk jenis masalah yang berbeda.

Setiap penggantian membutuhkan semua bidang berikut:


| Bidang | Deskripsi | 
| --- | --- | 
|   `nodeMonitoringCondition`   |  Jenis kondisi node yang dilaporkan oleh agen pemantauan node. Misalnya:`AcceleratedHardwareReady`,`NetworkingReady`,`StorageReady`,`KernelReady`.  | 
|   `nodeUnhealthyReason`   |  Kode alasan spesifik untuk kondisi tidak sehat. Misalnya: `NvidiaXID31Error`, `IPAMDNotRunning`.  | 
|   `minRepairWaitTimeMins`   |  Waktu minimum dalam beberapa menit bahwa kondisi harus bertahan sebelum node memenuhi syarat untuk diperbaiki. Gunakan ini untuk menghindari perbaikan node untuk masalah sementara.  | 
|   `repairAction`   |  Tindakan yang harus diambil ketika kondisi terpenuhi. Nilai yang valid: `Replace` (menghentikan dan mengganti node), `Reboot` (reboot node), atau `NoAction` (tidak ada tindakan perbaikan).  | 

Contoh AWS CLI berikut membuat grup node dengan pengaturan perbaikan kustom.

```
aws eks create-nodegroup \
  --cluster-name my-cluster \
  --nodegroup-name my-nodegroup \
  --node-role arn:aws:iam::111122223333:role/NodeRole \
  --subnets subnet-0123456789abcdef0 \
  --node-repair-config '{
    "enabled": true,
    "maxUnhealthyNodeThresholdPercentage": 10,
    "maxParallelNodesRepairedCount": 3,
    "nodeRepairConfigOverrides": [
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID64Error",
        "minRepairWaitTimeMins": 5,
        "repairAction": "Replace"
      },
      {
        "nodeMonitoringCondition": "AcceleratedHardwareReady",
        "nodeUnhealthyReason": "NvidiaXID31Error",
        "minRepairWaitTimeMins": 15,
        "repairAction": "NoAction"
      }
    ]
  }'
```

Konfigurasi ini melakukan hal berikut:
+ Mengaktifkan perbaikan otomatis node
+ Menghentikan tindakan perbaikan ketika lebih dari 10% node tidak sehat
+ Memperbaiki hingga 3 node sekaligus
+ Mengganti kesalahan XID 64 (kegagalan pemetaan ulang memori GPU) untuk mengganti node setelah 5 menit. Defaultnya adalah reboot setelah 10 menit.
+ Mengganti kesalahan XID 31 (kesalahan halaman memori GPU) agar tidak mengambil tindakan. Defaultnya adalah reboot setelah 10 menit.

# Lihat status kesehatan node Anda
<a name="learn-status-conditions"></a>

Topik ini menjelaskan alat dan metode yang tersedia untuk memantau status kesehatan simpul di kluster Amazon EKS. Informasi tersebut mencakup kondisi node, peristiwa, dan kasus deteksi yang membantu Anda mengidentifikasi dan mendiagnosis masalah tingkat simpul. Gunakan perintah dan pola yang dijelaskan di sini untuk memeriksa sumber daya kesehatan node, menafsirkan kondisi status, dan menganalisis peristiwa node untuk pemecahan masalah operasional.

Anda bisa mendapatkan beberapa informasi kesehatan node dengan perintah Kubernetes untuk semua node. Dan jika Anda menggunakan agen pemantauan node melalui Amazon EKS Auto Mode atau add-on terkelola Amazon EKS, Anda akan mendapatkan lebih banyak variasi sinyal node untuk membantu memecahkan masalah. Deskripsi masalah kesehatan yang terdeteksi oleh agen pemantauan simpul juga tersedia di dasbor observabilitas. Untuk informasi selengkapnya, lihat [Mendeteksi masalah kesehatan simpul dengan agen pemantauan simpul EKS](node-health-nma.md).

## Kondisi simpul
<a name="status-node-conditions"></a>

Kondisi node mewakili masalah terminal yang membutuhkan tindakan remediasi seperti penggantian instance atau reboot.

 **Untuk mendapatkan kondisi untuk semua node:** 

```
kubectl get nodes -o 'custom-columns=NAME:.metadata.name,CONDITIONS:.status.conditions[*].type,STATUS:.status.conditions[*].status'
```

 **Untuk mendapatkan kondisi rinci untuk node tertentu** 

```
kubectl describe node node-name
```

 **Contoh kondisi output dari node yang sehat:** 

```
  - lastHeartbeatTime: "2024-11-21T19:07:40Z"
    lastTransitionTime: "2024-11-08T03:57:40Z"
    message: Monitoring for the Networking system is active
    reason: NetworkingIsReady
    status: "True"
    type: NetworkingReady
```

 **Contoh kondisi node yang tidak sehat dengan masalah jaringan:** 

```
  - lastHeartbeatTime: "2024-11-21T19:12:29Z"
    lastTransitionTime: "2024-11-08T17:04:17Z"
    message: IPAM-D has failed to connect to API Server which could be an issue with
      IPTable rules or any other network configuration.
    reason: IPAMDNotReady
    status: "False"
    type: NetworkingReady
```

## Peristiwa simpul
<a name="status-node-events"></a>

Peristiwa node menunjukkan masalah sementara atau konfigurasi sub-optimal.

 **Untuk mendapatkan semua peristiwa yang dilaporkan oleh agen pemantauan node** 

Ketika agen pemantauan node tersedia, Anda dapat menjalankan perintah berikut.

```
kubectl get events --field-selector=reportingComponent=eks-node-monitoring-agent
```

Contoh output:

```
LAST SEEN   TYPE      REASON       OBJECT                                              MESSAGE
4s          Warning   SoftLockup   node/ip-192-168-71-251.us-west-2.compute.internal   CPU stuck for 23s
```

 **Untuk mendapatkan acara untuk semua node** 

```
kubectl get events --field-selector involvedObject.kind=Node
```

 **Untuk mendapatkan acara untuk node tertentu** 

```
kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=node-name
```

 **Untuk menonton acara secara real-time** 

```
kubectl get events -w --field-selector involvedObject.kind=Node
```

 **Contoh keluaran acara:** 

```
LAST SEEN   TYPE     REASON           OBJECT         MESSAGE
2m          Warning  MemoryPressure   Node/node-1    Node experiencing memory pressure
5m          Normal   NodeReady        Node/node-1    Node became ready
```

## Perintah pemecahan masalah umum
<a name="status-node-troubleshooting"></a>

```
# Get comprehensive node status
kubectl get node node-name -o yaml

# Watch node status changes
kubectl get nodes -w

# Get node metrics
kubectl top node
```

# Mengambil log node untuk node terkelola menggunakan kubectl dan S3
<a name="auto-get-logs"></a>

Pelajari cara mengambil log node untuk node terkelola Amazon EKS yang memiliki agen pemantauan node.

## Prasyarat
<a name="_prerequisites"></a>

Pastikan Anda memiliki yang berikut:
+ Cluster Amazon EKS yang ada dengan agen pemantauan node. Untuk informasi selengkapnya, lihat [Mendeteksi masalah kesehatan node dan mengaktifkan perbaikan node otomatis](node-health.md).
+ Alat `kubectl` baris perintah diinstal dan dikonfigurasi untuk berkomunikasi dengan cluster Anda.
+  AWS CLI diinstal dan masuk dengan izin yang cukup untuk membuat bucket dan objek S3.
+ Versi terbaru dari Python 3 diinstal
+  AWS SDK untuk Python 3, Boto 3, diinstal.

## Langkah 1: Buat tujuan bucket S3 (opsional)
<a name="_step_1_create_s3_bucket_destination_optional"></a>

Jika Anda belum memiliki ember S3 untuk menyimpan log, buat satu. Gunakan perintah AWS CLI berikut. Bucket default ke daftar kontrol `private` akses. Ganti *bucket-name* dengan nama bucket unik pilihan Anda.

```
aws s3api create-bucket --bucket <bucket-name>
```

## Langkah 2: Buat URL S3 yang telah ditandatangani sebelumnya untuk HTTP Put
<a name="_step_2_create_pre_signed_s3_url_for_http_put"></a>

Amazon EKS mengembalikan log node dengan melakukan operasi HTTP PUT ke URL yang Anda tentukan. Dalam tutorial ini, kita akan menghasilkan URL PUT HTTP S3 yang telah ditandatangani sebelumnya.

Log akan dikembalikan sebagai tarball gzip, dengan ekstensi. `.tar.gz`

**catatan**  
Anda harus menggunakan AWS API atau SDK untuk membuat URL unggahan S3 yang telah ditandatangani sebelumnya untuk EKS untuk mengunggah file log. Anda tidak dapat membuat URL unggahan S3 yang telah ditandatangani sebelumnya menggunakan CLI AWS .

1. Tentukan di mana dalam ember Anda ingin menyimpan log. Misalnya, Anda dapat menggunakan *2024-11-12/logs1.tar.gz* sebagai kunci.

1. Simpan kode Python berikut ke file. *presign-upload.py* Ganti *<bucket-name>* dan*<key>*. Kuncinya harus diakhiri dengan`.tar.gz`.

   ```
   import boto3; print(boto3.client('s3').generate_presigned_url(
      ClientMethod='put_object',
      Params={'Bucket': '<bucket-name>', 'Key': '<key>'},
      ExpiresIn=1000
   ))
   ```

1. Jalankan skrip dengan

   ```
   python presign-upload.py
   ```

1. Perhatikan output URL. Gunakan nilai ini di langkah berikutnya sebagai*http-put-destination*.

Untuk informasi selengkapnya, lihat [Menghasilkan URL yang telah ditetapkan sebelumnya untuk mengunggah file](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) di AWS Boto3 SDK untuk Dokumentasi Python.

## Langkah 3: Buat NodeDiagnostic sumber daya
<a name="_step_3_create_nodediagnostic_resource"></a>

Identifikasi nama node tempat Anda ingin mengumpulkan log dari.

Buat `NodeDiagnostic` manifes yang menggunakan nama node sebagai nama sumber daya, dan berikan tujuan URL PUT HTTP.

```
apiVersion: eks.amazonaws.com/v1alpha1
kind: NodeDiagnostic
metadata:
    name: <node-name>
spec:
    logCapture:
        destination: http-put-destination
```

Menerapkan manifes ke klaster.

```
kubectl apply -f nodediagnostic.yaml
```

Anda dapat memeriksa Status koleksi dengan menjelaskan `NodeDiagnostic` sumber daya:
+ Status `Success` atau `SuccessWithErrors` menunjukkan bahwa tugas selesai dan log yang diunggah ke tujuan yang disediakan (`SuccessWithErrors`menunjukkan bahwa beberapa log mungkin hilang)
+ Jika statusnya Gagal, konfirmasikan URL unggahan sudah terbentuk dengan baik dan tidak kedaluwarsa.

```
kubectl describe nodediagnostics.eks.amazonaws.com/<node-name>
```

## Langkah 4: Unduh log dari S3
<a name="_step_4_download_logs_from_s3"></a>

Tunggu sekitar satu menit sebelum mencoba mengunduh log. Kemudian, gunakan S3 CLI untuk mengunduh log.

```
# Once NodeDiagnostic shows Success status, download the logs
aws s3 cp s3://<bucket-name>/key ./<path-to-node-logs>.tar.gz
```

## Langkah 5: Bersihkan NodeDiagnostic sumber daya
<a name="_step_5_clean_up_nodediagnostic_resource"></a>
+  `NodeDiagnostic`sumber daya tidak dihapus secara otomatis. Anda harus membersihkannya sendiri setelah Anda mendapatkan artefak log Anda

```
# Delete the NodeDiagnostic resource
kubectl delete nodediagnostics.eks.amazonaws.com/<node-name>
```

## NodeDiagnostic `node`Destinasi
<a name="_nodediagnostic_node_destination"></a>

Dimulai dengan `v1.6.0` versi Node Monitoring Agent, ada opsi untuk mengatur tujuan pengumpulan log`node`. Menggunakan tujuan ini akan mengarah ke pengumpulan dan persistensi sementara log pada node untuk koleksi nanti. Selain fungsi ini, dalam GitHub repositori Node Monitoring Agent adalah `kubectl` plugin yang dapat Anda instal untuk interaksi yang mudah dan pengumpulan log. Untuk informasi lebih lanjut, lihat [dokumentasi untuk `kubectl ekslogs` plugin](https://github.com/aws/eks-node-monitoring-agent/blob/main/tools/kubectl-ekslogs/README.md).

## Contoh Penggunaan
<a name="_example_usage"></a>

```
# Collect NodeDiagnostic logs from a single node
kubectl ekslogs <node-name>

# Collect NodeDiagnostic logs from multiple nodes
kubectl ekslogs <node-name-1> <node-name-2> <node-name-3>

# Collect NodeDiagnostic logs from all nodes with a specific label
kubectl ekslogs -l <key>=<value>
```

# Ikhtisar Amazon EKS Hybrid Nodes
<a name="hybrid-nodes-overview"></a>

Dengan *Amazon EKS Hybrid Nodes*, Anda dapat menggunakan infrastruktur lokal dan edge sebagai node di kluster Amazon EKS. AWS mengelola bidang kontrol Kubernetes yang AWS di-host dari klaster Amazon EKS, dan Anda mengelola node hibrida yang berjalan di lingkungan lokal atau edge Anda. Ini menyatukan manajemen Kubernetes di seluruh lingkungan Anda dan menurunkan manajemen bidang kontrol Kubernetes untuk aplikasi lokal dan edge Anda. AWS 

Amazon EKS Hybrid Nodes bekerja dengan perangkat keras lokal atau mesin virtual apa pun, menghadirkan efisiensi, skalabilitas, dan ketersediaan Amazon EKS ke mana pun aplikasi Anda perlu dijalankan. Anda dapat menggunakan berbagai fitur Amazon EKS dengan Amazon EKS Hybrid Nodes termasuk add-on Amazon EKS, Amazon EKS Pod Identity, entri akses cluster, wawasan cluster, dan dukungan versi Kubernetes yang diperluas. Amazon EKS Hybrid Nodes terintegrasi secara native dengan AWS layanan termasuk AWS Systems Manager, AWS IAM Roles Anywhere, Amazon Managed Service for Prometheus, dan CloudWatch Amazon untuk pemantauan terpusat, pencatatan, dan manajemen identitas.

Dengan Amazon EKS Hybrid Nodes, tidak ada komitmen di muka atau biaya minimum, dan Anda dikenakan biaya per jam untuk sumber daya vCPU node hybrid Anda ketika mereka dilampirkan ke cluster Amazon EKS Anda. Untuk informasi harga selengkapnya, lihat [Harga Amazon EKS](https://aws.amazon.com/eks/pricing/).

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/tFn9IdlddBw?rel=0/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/tFn9IdlddBw?rel=0)


## Fitur
<a name="hybrid-nodes-features"></a>

EKS Hybrid Nodes memiliki fitur tingkat tinggi berikut:
+  Bidang **kontrol Kubernetes yang dikelola: AWS mengelola bidang kontrol** Kubernetes yang AWS di-host dari klaster EKS, dan Anda mengelola node hibrida yang berjalan di lingkungan lokal atau edge Anda. Ini menyatukan manajemen Kubernetes di seluruh lingkungan Anda dan menurunkan manajemen bidang kontrol Kubernetes untuk aplikasi lokal dan edge Anda. AWS Dengan memindahkan control plane Kubernetes AWS, Anda dapat menghemat kapasitas lokal untuk aplikasi Anda dan percaya bahwa pesawat kontrol Kubernetes berskala dengan beban kerja Anda.
+  **Pengalaman EKS yang konsisten**: Sebagian besar fitur EKS didukung dengan EKS Hybrid Nodes untuk pengalaman EKS yang konsisten di lingkungan lokal dan cloud Anda termasuk add-on EKS, EKS Pod Identity, entri akses klaster, wawasan cluster, dukungan versi Kubernetes yang diperluas, dan banyak lagi. Lihat [Konfigurasikan add-on untuk node hybrid](hybrid-nodes-add-ons.md) untuk informasi selengkapnya tentang add-on EKS yang didukung dengan EKS Hybrid Nodes.
+  **Observabilitas terpusat dan manajemen identitas**: EKS Hybrid Nodes terintegrasi secara native dengan layanan termasuk AWS AWS Systems Manager, AWS IAM Roles Anywhere, Amazon Managed Service for Prometheus, dan Amazon CloudWatch untuk pemantauan terpusat, logging, dan manajemen identitas.
+  **Burst-to-cloud atau tambahkan kapasitas lokal**: Satu kluster EKS dapat digunakan untuk menjalankan node dan node hibrid di AWS Wilayah, AWS Local Zones, atau AWS Outposts burst-to-cloud ke atau menambahkan kapasitas lokal ke kluster EKS Anda. Lihat [Pertimbangan untuk cluster mode campuran untuk](hybrid-nodes-webhooks.md#hybrid-nodes-considerations-mixed-mode) informasi selengkapnya.
+  **Infrastruktur fleksibel**: EKS Hybrid Nodes mengikuti pendekatan *membawa infrastruktur Anda sendiri* dan agnostik ke infrastruktur yang Anda gunakan untuk node hibrida. Anda dapat menjalankan node hybrid pada mesin fisik atau virtual, dan arsitektur x86 dan ARM, sehingga memungkinkan untuk memigrasikan beban kerja lokal yang berjalan pada node hybrid di berbagai jenis infrastruktur.
+  **Jaringan fleksibel**: Dengan EKS Hybrid Nodes, komunikasi antara bidang kontrol EKS dan node hybrid dirutekan melalui VPC dan subnet yang Anda lewati selama pembuatan cluster, yang dibangun di atas mekanisme yang [ada di EKS untuk bidang kontrol ke](https://docs.aws.amazon.com/eks/latest/best-practices/subnets.html) jaringan node. Ini fleksibel untuk metode pilihan Anda untuk menghubungkan jaringan lokal Anda ke AWS VPC di. Ada beberapa [opsi terdokumentasi](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) yang tersedia termasuk AWS Site-to-Site VPN, AWS Direct Connect, atau solusi VPN Anda sendiri, dan Anda dapat memilih metode yang paling sesuai dengan kasus penggunaan Anda.

## Batas
<a name="hybrid-node-limits"></a>
+ Hingga 15 CIDRs untuk Remote Node Networks dan 15 CIDRs untuk Remote Pod Networks per cluster didukung.

## Pertimbangan
<a name="hybrid-nodes-general"></a>
+ EKS Hybrid Nodes dapat digunakan dengan cluster EKS baru atau yang sudah ada.
+ EKS Hybrid Node tersedia di semua AWS Wilayah, kecuali Wilayah AWS GovCloud (AS) dan Wilayah AWS Tiongkok.
+ EKS Hybrid Nodes harus memiliki koneksi yang andal antara lingkungan lokal Anda dan AWS. EKS Hybrid Nodes tidak cocok untuk lingkungan yang terputus, terganggu, intermiten atau terbatas (DDIL). Jika Anda menjalankan di lingkungan DDIL, pertimbangkan [Amazon EKS Anywhere](https://aws.amazon.com/eks/eks-anywhere/). Referensi [Praktik Terbaik untuk Node Hibrid EKS](https://docs.aws.amazon.com/eks/latest/best-practices/hybrid-nodes-network-disconnections.html) untuk informasi tentang bagaimana node hibrida berperilaku selama skenario pemutusan jaringan.
+ Menjalankan EKS Hybrid Nodes pada infrastruktur cloud, termasuk AWS Wilayah, AWS Local Zones, AWS Outposts, atau di cloud lainnya, tidak didukung. Anda akan dikenakan biaya node hybrid jika Anda menjalankan node hybrid di EC2 instans Amazon.
+ Penagihan untuk node hybrid dimulai ketika node bergabung dengan cluster EKS dan berhenti ketika node dihapus dari cluster. Pastikan untuk menghapus node hybrid Anda dari cluster EKS Anda jika Anda tidak menggunakannya.

## Sumber daya tambahan
<a name="hybrid-nodes-resources"></a>
+  [https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/](https://www.eksworkshop.com/docs/networking/eks-hybrid-nodes/): Step-by-step instruksi untuk menerapkan EKS Hybrid Nodes di lingkungan demo.
+  [https://www.youtube.com/watch?v=ZxC7SkemxvU](https://www.youtube.com/watch?v=ZxC7SkemxvU): AWS re:Invent session memperkenalkan peluncuran EKS Hybrid Nodes dengan pelanggan yang menunjukkan bagaimana mereka menggunakan EKS Hybrid Nodes di lingkungan mereka.
+  [https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes](https://repost.aws/articles/ARL44xuau6TG2t-JoJ3mJ5Mw/unpacking-the-cluster-networking-for-amazon-eks-hybrid-nodes): Artikel yang menjelaskan berbagai metode untuk menyiapkan jaringan untuk EKS Hybrid Nodes.
+  [https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/](https://aws.amazon.com/blogs/containers/run-genai-inference-across-environments-with-amazon-eks-hybrid-nodes/): Posting blog yang menunjukkan cara menjalankan inferensi GenAI di seluruh lingkungan dengan EKS Hybrid Nodes.

# Pengaturan prasyarat untuk node hybrid
<a name="hybrid-nodes-prereqs"></a>

Untuk menggunakan Amazon EKS Hybrid Nodes, Anda harus memiliki konektivitas pribadi dari lingkungan lokal ke/dari AWS, server bare metal atau mesin virtual dengan sistem operasi yang didukung, dan aktivasi hybrid AWS IAM Roles Anywhere atau AWS Systems Manager (SSM) yang dikonfigurasi. Anda bertanggung jawab untuk mengelola prasyarat ini di seluruh siklus hidup node hybrid.
+ Konektivitas jaringan hybrid dari lingkungan lokal Anda ke/dari AWS 
+ Infrastruktur dalam bentuk mesin fisik atau virtual
+ Sistem operasi yang kompatibel dengan node hybrid
+ Penyedia kredensi IAM lokal dikonfigurasi

![\[Konektivitas jaringan node hibrida.\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Konektivitas jaringan hybrid
<a name="hybrid-nodes-prereqs-connect"></a>

Komunikasi antara bidang kontrol Amazon EKS dan node hybrid dirutekan melalui VPC dan subnet yang Anda lewati selama pembuatan cluster, yang dibangun di atas [mekanisme yang ada](https://aws.github.io/aws-eks-best-practices/networking/subnets/) di Amazon EKS untuk bidang kontrol ke jaringan node. Ada beberapa [opsi terdokumentasi](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) yang tersedia bagi Anda untuk menghubungkan lingkungan lokal Anda dengan VPC Anda AWS Site-to-Site termasuk VPN, AWS Direct Connect, atau koneksi VPN Anda sendiri. Referensikan panduan pengguna [AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html) dan [AWS Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) untuk informasi lebih lanjut tentang cara menggunakan solusi tersebut untuk koneksi jaringan hybrid Anda.

Untuk pengalaman yang optimal, kami menyarankan Anda memiliki konektivitas jaringan yang andal minimal 100 Mbps dan latensi pulang-pergi maksimum 200 ms untuk koneksi node hibrida ke Wilayah. AWS Ini adalah panduan umum yang mengakomodasi sebagian besar kasus penggunaan tetapi bukan persyaratan yang ketat. Persyaratan bandwidth dan latensi dapat bervariasi tergantung pada jumlah node hibrida dan karakteristik beban kerja Anda, seperti ukuran gambar aplikasi, elastisitas aplikasi, konfigurasi pemantauan dan logging, dan dependensi aplikasi untuk mengakses data yang disimpan di layanan lain. AWS Kami menyarankan Anda menguji dengan aplikasi dan lingkungan Anda sendiri sebelum menerapkan ke produksi untuk memvalidasi bahwa pengaturan jaringan Anda memenuhi persyaratan untuk beban kerja Anda.

## Konfigurasi jaringan lokal
<a name="hybrid-nodes-prereqs-onprem"></a>

Anda harus mengaktifkan akses jaringan masuk dari bidang kontrol Amazon EKS ke lingkungan lokal agar bidang kontrol Amazon EKS dapat berkomunikasi dengan node hibrid yang `kubelet` berjalan dan secara opsional dengan webhook yang berjalan di node hybrid Anda. Selain itu, Anda harus mengaktifkan akses jaringan keluar untuk node hybrid dan komponen yang berjalan di dalamnya untuk berkomunikasi dengan bidang kontrol Amazon EKS. Anda dapat mengonfigurasi komunikasi ini agar tetap sepenuhnya pribadi dengan AWS Direct Connect, AWS Site-to-Site VPN, atau koneksi VPN Anda sendiri.

Rentang Classless Inter-Domain Routing (CIDR) yang Anda gunakan untuk node lokal dan jaringan pod harus menggunakan IPv4 rentang alamat RFC-1918 atau CGNAT. Router lokal Anda harus dikonfigurasi dengan rute ke node lokal dan pod opsional. Lihat [Konfigurasi jaringan lokal](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) untuk informasi selengkapnya tentang persyaratan jaringan lokal, termasuk daftar lengkap port dan protokol yang diperlukan yang harus diaktifkan di firewall dan lingkungan lokal.

## Konfigurasi kluster EKS
<a name="hybrid-nodes-prereqs-cluster"></a>

Untuk meminimalkan latensi, sebaiknya Anda membuat klaster Amazon EKS di AWS Wilayah yang paling dekat dengan lingkungan lokal atau edge Anda. Anda meneruskan node dan pod lokal CIDRs selama pembuatan klaster Amazon EKS melalui dua bidang API: `RemoteNodeNetwork` dan`RemotePodNetwork`. Anda mungkin perlu berdiskusi dengan tim jaringan lokal untuk mengidentifikasi node dan pod lokal. CIDRs Node CIDR dialokasikan dari jaringan lokal Anda dan pod CIDR dialokasikan dari Container Network Interface (CNI) yang Anda gunakan jika Anda menggunakan jaringan overlay untuk CNI Anda. Cilium dan Calico menggunakan jaringan overlay secara default.

Node dan pod lokal yang CIDRs Anda konfigurasikan melalui `RemotePodNetwork` bidang `RemoteNodeNetwork` dan digunakan untuk mengonfigurasi bidang kontrol Amazon EKS untuk merutekan lalu lintas melalui VPC Anda ke dan pod `kubelet` yang berjalan pada node hibrid Anda. Node dan pod lokal Anda CIDRs tidak dapat saling tumpang tindih, CIDR VPC yang Anda lewati selama pembuatan klaster, atau konfigurasi layanan IPv4 untuk klaster Amazon EKS Anda. Selain itu, Pod CIDRs harus unik untuk setiap kluster EKS sehingga router lokal Anda dapat merutekan lalu lintas.

Kami menyarankan Anda menggunakan akses endpoint publik atau pribadi untuk endpoint server API Amazon EKS Kubernetes. Jika Anda memilih “Publik dan Pribadi”, endpoint server API Amazon EKS Kubernetes akan selalu menyelesaikan ke publik IPs untuk node hybrid yang berjalan di luar VPC Anda, yang dapat mencegah node hybrid Anda bergabung dengan cluster. Saat Anda menggunakan akses titik akhir publik, titik akhir server API Kubernetes diselesaikan ke publik IPs dan komunikasi dari node hibrida ke bidang kontrol Amazon EKS akan dirutekan melalui internet. Ketika Anda memilih akses endpoint pribadi, titik akhir server Kubernetes API diselesaikan menjadi pribadi IPs dan komunikasi dari node hibrida ke bidang kontrol Amazon EKS akan dirutekan melalui tautan konektivitas pribadi Anda, dalam banyak kasus Direct Connect atau VPN. AWS AWS Site-to-Site 

## Konfigurasi VPC
<a name="hybrid-nodes-prereqs-vpc"></a>

Anda harus mengonfigurasi VPC yang Anda lewati selama pembuatan klaster Amazon EKS dengan rute dalam tabel peruteannya untuk node lokal dan jaringan pod opsional dengan gateway pribadi virtual (VGW) atau gateway transit (TGW) sebagai target. Contoh ditunjukkan di bawah ini. Ganti `REMOTE_NODE_CIDR` dan `REMOTE_POD_CIDR` dengan nilai untuk jaringan lokal Anda.


| Destinasi | Target | Deskripsi | 
| --- | --- | --- | 
|  10.226.0.0/16  |  lokal  |  Lalu lintas lokal ke rute VPC dalam VPC  | 
|  REMOTE\$1NODE\$1CIDR  |  tgw-abcdef123456  |  Node CIDR on-prem, rute lalu lintas ke TGW  | 
|  REMODE\$1POD\$1CIDR  |  tgw-abcdef123456  |  Pod CIDR on-prem, rute lalu lintas ke TGW  | 

## Konfigurasi grup keamanan
<a name="hybrid-nodes-prereqs-sg"></a>

Saat Anda membuat klaster, Amazon EKS membuat grup keamanan yang diberi nama`eks-cluster-sg-<cluster-name>-<uniqueID>`. Anda tidak dapat mengubah aturan masuk Grup Keamanan Cluster ini tetapi Anda dapat membatasi aturan keluar. Anda harus menambahkan grup keamanan tambahan ke klaster Anda untuk mengaktifkan kubelet dan webhook opsional yang berjalan pada node hybrid Anda untuk menghubungi control plane Amazon EKS. Aturan masuk yang diperlukan untuk grup keamanan tambahan ini ditunjukkan di bawah ini. Ganti `REMOTE_NODE_CIDR` dan `REMOTE_POD_CIDR` dengan nilai untuk jaringan lokal Anda.


| Nama | ID aturan grup keamanan | Versi IP | Tipe | Protokol | Rentang port | Sumber | 
| --- | --- | --- | --- | --- | --- | --- | 
|  Node on-prem masuk  |  sgr-abcdef123456  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1NODE\$1CIDR  | 
|  Pod masuk di prem  |  sgr-abcdef654321  |  IPv4  |  HTTPS  |  TCP  |  443  |  REMOTE\$1POD\$1CIDR  | 

## Infrastruktur
<a name="hybrid-nodes-prereqs-infra"></a>

Anda harus memiliki server bare metal atau mesin virtual yang tersedia untuk digunakan sebagai node hybrid. Node hybrid bersifat agnostik terhadap infrastruktur yang mendasarinya dan mendukung arsitektur x86 dan ARM. Amazon EKS Hybrid Nodes mengikuti pendekatan “bawa infrastruktur Anda sendiri”, di mana Anda bertanggung jawab untuk menyediakan dan mengelola server bare metal atau mesin virtual yang Anda gunakan untuk node hybrid. Meskipun tidak ada persyaratan sumber daya minimum yang ketat, kami menyarankan Anda menggunakan host dengan setidaknya 1 vCPU dan 1GiB RAM untuk node hybrid.

## Sistem operasi
<a name="hybrid-nodes-prereqs-os"></a>

Bottlerocket, Amazon Linux 2023 AL2023 (), Ubuntu, dan RHEL divalidasi secara berkelanjutan untuk digunakan sebagai sistem operasi node untuk node hybrid. Bottlerocket didukung oleh di lingkungan AWS VMware vSphere saja. AL2023 tidak tercakup oleh AWS Support Plans saat dijalankan di luar Amazon EC2. AL2023 hanya dapat digunakan di lingkungan virtual lokal, lihat [Panduan Pengguna Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) untuk informasi selengkapnya. AWS mendukung integrasi node hybrid dengan sistem operasi Ubuntu dan RHEL tetapi tidak memberikan dukungan untuk sistem operasi itu sendiri.

Anda bertanggung jawab atas penyediaan dan manajemen sistem operasi. Saat Anda menguji node hybrid untuk pertama kalinya, paling mudah menjalankan Amazon EKS Hybrid Nodes CLI (`nodeadm`) pada host yang sudah disediakan. Untuk penerapan produksi, kami menyarankan Anda menyertakan `nodeadm` gambar sistem operasi emas Anda yang dikonfigurasikan untuk dijalankan sebagai layanan systemd untuk secara otomatis bergabung dengan host ke kluster Amazon EKS saat startup host.

## Penyedia kredensi IAM lokal
<a name="hybrid-nodes-prereqs-iam"></a>

Amazon EKS Hybrid Nodes menggunakan kredenal IAM sementara yang disediakan oleh aktivasi hybrid AWS SSM atau AWS Peran IAM Anywhere untuk mengautentikasi dengan kluster Amazon EKS. Anda harus menggunakan aktivasi hibrida AWS SSM atau Peran AWS IAM Di Mana Saja dengan Amazon EKS Hybrid Nodes CLI (). `nodeadm` Kami menyarankan Anda menggunakan aktivasi hibrida AWS SSM jika Anda tidak memiliki Infrastruktur Kunci Publik (PKI) dengan Otoritas Sertifikat (CA) dan sertifikat untuk lingkungan lokal Anda. Jika Anda memiliki PKI dan sertifikat lokal, gunakan Peran AWS IAM Di Mana Saja.

Mirip dengan node [IAM role simpul Amazon EKS](create-node-role.md) untuk yang berjalan di Amazon EC2, Anda akan membuat Peran IAM Node Hybrid dengan izin yang diperlukan untuk menggabungkan node hybrid ke kluster Amazon EKS. Jika Anda menggunakan Peran AWS IAM Di Mana Saja, konfigurasikan kebijakan kepercayaan yang memungkinkan AWS IAM Roles Anywhere untuk mengambil Peran IAM Node Hybrid dan mengonfigurasi profil IAM Roles Anywhere Anda dengan Peran AWS IAM Node Hybrid sebagai peran yang dapat diasumsikan. Jika Anda menggunakan AWS SSM, konfigurasikan kebijakan kepercayaan yang memungkinkan AWS SSM untuk mengasumsikan Peran IAM Node Hybrid dan buat aktivasi hibrida dengan Peran IAM Node Hybrid. Lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md) cara membuat Peran IAM Node Hybrid dengan izin yang diperlukan.

# Mempersiapkan jaringan untuk node hybrid
<a name="hybrid-nodes-networking"></a>

Topik ini memberikan gambaran umum tentang pengaturan jaringan yang harus Anda konfigurasikan sebelum membuat kluster Amazon EKS dan melampirkan node hybrid. Panduan ini mengasumsikan Anda telah memenuhi persyaratan prasyarat untuk konektivitas jaringan hybrid menggunakan VPN [AWS Site-to-Site , Direct [AWS Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html),](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html) atau solusi VPN Anda sendiri.

![\[Konektivitas jaringan node hibrida.\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-prereq-diagram.png)


## Konfigurasi jaringan lokal
<a name="hybrid-nodes-networking-on-prem"></a>

### Persyaratan jaringan minimum
<a name="hybrid-nodes-networking-min-reqs"></a>

Untuk pengalaman yang optimal, kami menyarankan Anda memiliki konektivitas jaringan yang andal minimal 100 Mbps dan latensi pulang-pergi maksimum 200 ms untuk koneksi node hibrida ke Wilayah. AWS Ini adalah panduan umum yang mengakomodasi sebagian besar kasus penggunaan tetapi bukan persyaratan yang ketat. Persyaratan bandwidth dan latensi dapat bervariasi tergantung pada jumlah node hibrida dan karakteristik beban kerja Anda, seperti ukuran gambar aplikasi, elastisitas aplikasi, konfigurasi pemantauan dan logging, dan dependensi aplikasi untuk mengakses data yang disimpan di layanan lain. AWS Kami menyarankan Anda menguji dengan aplikasi dan lingkungan Anda sendiri sebelum menerapkan ke produksi untuk memvalidasi bahwa pengaturan jaringan Anda memenuhi persyaratan untuk beban kerja Anda.

### Node dan pod lokal CIDRs
<a name="hybrid-nodes-networking-on-prem-cidrs"></a>

Identifikasi node dan pod yang akan CIDRs Anda gunakan untuk node hybrid Anda dan beban kerja yang berjalan di dalamnya. Node CIDR dialokasikan dari jaringan lokal Anda dan pod CIDR dialokasikan dari Container Network Interface (CNI) jika Anda menggunakan jaringan overlay untuk CNI Anda. Anda meneruskan node CIDRs dan pod lokal CIDRs sebagai input saat membuat kluster EKS dengan bidang `RemoteNodeNetwork` dan`RemotePodNetwork`. Node lokal Anda CIDRs harus dapat dirutekan di jaringan lokal Anda. Lihat bagian berikut untuk informasi tentang routabilitas CIDR pod lokal.

Blok CIDR node dan pod lokal harus memenuhi persyaratan berikut:

1. Berada dalam salah satu rentang `IPv4` RFC-1918 berikut:`10.0.0.0/8`,, atau `172.16.0.0/12``192.168.0.0/16`, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598:. `100.64.0.0/10`

1. Tidak saling tumpang tindih, CIDR VPC untuk kluster EKS Anda, atau CIDR layanan Kubernetes Anda. `IPv4`

### Perutean jaringan pod lokal
<a name="hybrid-nodes-networking-on-prem-pod-routing"></a>

Saat menggunakan EKS Hybrid Nodes, kami biasanya menyarankan agar Pod lokal CIDRs dapat dirutekan di jaringan lokal untuk mengaktifkan komunikasi dan fungsionalitas klaster lengkap antara lingkungan cloud dan lokal.

 **Jaringan pod yang dapat dirutekan** 

Jika Anda dapat membuat jaringan pod dapat dirutekan di jaringan lokal, ikuti panduan di bawah ini.

1. Konfigurasikan `RemotePodNetwork` bidang untuk klaster EKS Anda dengan CIDR pod lokal, tabel rute VPC Anda dengan CIDR pod lokal, dan grup keamanan klaster EKS Anda dengan CIDR pod lokal Anda.

1. Ada beberapa teknik yang dapat Anda gunakan untuk membuat pod lokal CIDR dapat dirutekan di jaringan lokal Anda termasuk Border Gateway Protocol (BGP), rute statis, atau solusi perutean kustom lainnya. BGP adalah solusi yang direkomendasikan karena lebih skalabel dan lebih mudah dikelola daripada solusi alternatif yang memerlukan konfigurasi rute khusus atau manual. AWS mendukung kemampuan BGP Cilium dan Calico untuk pod iklan CIDRs, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) dan untuk informasi lebih lanjut. [Pod jarak jauh yang dapat dirutekan CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)

1. Webhook dapat berjalan pada node hybrid karena bidang kontrol EKS dapat berkomunikasi dengan alamat IP Pod yang ditetapkan ke webhooks.

1. Beban kerja yang berjalan pada node cloud dapat berkomunikasi secara langsung dengan beban kerja yang berjalan pada node hybrid di cluster EKS yang sama.

1.  AWS Layanan lain, seperti AWS Application Load Balancers dan Amazon Managed Service for Prometheus, dapat berkomunikasi dengan beban kerja yang berjalan pada node hybrid untuk menyeimbangkan lalu lintas jaringan dan mengikis metrik pod.

 **Jaringan pod yang tidak dapat dirutekan** 

Jika Anda *tidak* dapat membuat jaringan pod Anda dapat dirutekan di jaringan lokal, ikuti panduan di bawah ini.

1. Webhook tidak dapat berjalan pada node hybrid karena webhook memerlukan konektivitas dari bidang kontrol EKS ke alamat IP Pod yang ditetapkan ke webhook. Dalam hal ini, kami menyarankan Anda menjalankan webhook pada node cloud di cluster EKS yang sama dengan node hybrid Anda, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) untuk informasi selengkapnya.

1. Beban kerja yang berjalan pada node cloud tidak dapat berkomunikasi secara langsung dengan beban kerja yang berjalan pada node hybrid saat menggunakan VPC CNI untuk node cloud dan Cilium atau Calico untuk node hybrid.

1. Gunakan Distribusi Lalu Lintas Layanan untuk menjaga lalu lintas lokal ke zona asalnya. Untuk informasi selengkapnya tentang Distribusi Lalu Lintas Layanan, lihat[Konfigurasikan Distribusi Lalu Lintas Layanan](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).

1. Konfigurasikan CNI Anda untuk menggunakan penyamaran jalan keluar atau terjemahan alamat jaringan (NAT) untuk lalu lintas pod karena meninggalkan host lokal Anda. Ini diaktifkan secara default di Cilium. Calico `natOutgoing` harus diatur ke`true`.

1.  AWS Layanan lain, seperti AWS Application Load Balancers dan Amazon Managed Service untuk Prometheus, tidak dapat berkomunikasi dengan beban kerja yang berjalan pada node hybrid.

### Akses diperlukan selama instalasi dan peningkatan node hybrid
<a name="hybrid-nodes-networking-access-reqs"></a>

Anda harus memiliki akses ke domain berikut selama proses instalasi di mana Anda menginstal dependensi node hybrid pada host Anda. Proses ini dapat dilakukan sekali ketika Anda sedang membangun gambar sistem operasi Anda atau dapat dilakukan pada setiap host saat runtime. Ini termasuk instalasi awal dan ketika Anda meng-upgrade versi Kubernetes dari node hybrid Anda.

Beberapa paket diinstal menggunakan manajer paket default OS. Untuk AL2023 dan RHEL, `yum` perintah ini digunakan untuk menginstal`containerd`,`ca-certificates`, `iptables` dan`amazon-ssm-agent`. Untuk Ubuntu, `apt` digunakan untuk menginstal `containerd``ca-certificates`,, dan`iptables`, dan `snap` digunakan untuk menginstal`amazon-ssm-agent`.


| Komponen | URL | Protokol | Port | 
| --- | --- | --- | --- | 
|  Artefak simpul EKS (S3)  |  https://hybrid-assets.eks.amazonaws.com  |  HTTPS  |  443  | 
|   [Titik akhir layanan EKS](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  https://eks. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   [Titik akhir layanan ECR](https://docs.aws.amazon.com/general/latest/gr/ecr.html)   |  https://api.ecr. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Titik akhir EKS ECR  |  Lihat [Lihat pendaftar gambar kontainer Amazon untuk add-on Amazon EKS](add-ons-images.md) untuk titik akhir regional.  |  HTTPS  |  443  | 
|  Titik akhir biner SSM 1   |  https://amazon-ssm - *region* .s3. *region*.amazonaws.com  |  HTTPS  |  443  | 
|   Titik [akhir layanan SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html) 1   |  https://ssm. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Titik akhir biner IAM Anywhere 2   |  https://rolesanywhere.amazonaws.com  |  HTTPS  |  443  | 
|   Titik [akhir layanan IAM Anywhere](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html) 2   |  https://rolesanywhere. *region*.amazonaws.com  |  HTTPS  |  443  | 
|  Titik akhir manajer paket Sistem Operasi  |  Endpoint Package repository bersifat khusus OS dan mungkin berbeda menurut wilayah geografis.  |  HTTPS  |  443  | 

**catatan**  
 1 Akses ke titik akhir AWS SSM hanya diperlukan jika Anda menggunakan aktivasi hibrida AWS SSM untuk penyedia kredensi IAM lokal Anda.  
 2 Akses ke titik akhir AWS IAM hanya diperlukan jika Anda menggunakan Peran IAM Di Mana Saja untuk penyedia kredensi AWS IAM lokal Anda.

### Akses diperlukan untuk operasi klaster yang sedang berlangsung
<a name="hybrid-nodes-networking-access-reqs-ongoing"></a>

Akses jaringan berikut untuk firewall lokal Anda diperlukan untuk operasi klaster yang sedang berlangsung.

**penting**  
Tergantung pada pilihan CNI Anda, Anda perlu mengkonfigurasi aturan akses jaringan tambahan untuk port CNI. Lihat dokumentasi [Cilium dan dokumentasi](https://docs.cilium.io/en/stable/operations/system_requirements/#firewall-rules) [Calico](https://docs.tigera.io/calico/latest/getting-started/kubernetes/requirements#network-requirements) untuk detailnya.


| Tipe | Protokol | Arahan | Port | Sumber | Destinasi | Penggunaan | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Node Jarak Jauh  |  Kluster EKS IPs 1   |  kubelet ke server API Kubernetes  | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Pod Jarak Jauh  |  Kluster EKS IPs 1   |  Pod ke server API Kubernetes  | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Node Jarak Jauh  |   [Titik akhir layanan SSM](https://docs.aws.amazon.com/general/latest/gr/ssm.html)   |  Aktivasi hibrida SSM menyegarkan kredenal dan detak jantung SSM setiap 5 menit  | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Node Jarak Jauh  |   [Titik akhir layanan IAM Anywhere](https://docs.aws.amazon.com/general/latest/gr/rolesanywhere.html)   |  Peran IAM Di Mana Saja penyegaran kredenal  | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Pod Jarak Jauh  |   [Titik Akhir Regional STS](https://docs.aws.amazon.com/general/latest/gr/sts.html)   |  Pod ke titik akhir STS, hanya diperlukan untuk IRSA  | 
|  HTTPS  |  TCP  |  Ke luar  |  443  |  CIDR Node Jarak Jauh  |   [Titik akhir layanan Amazon EKS Auth](https://docs.aws.amazon.com/general/latest/gr/eks.html)   |  Node ke titik akhir Amazon EKS Auth, hanya diperlukan untuk Amazon EKS Pod Identity  | 
|  HTTPS  |  TCP  |  Ke dalam  |  10250  |  Kluster EKS IPs 1   |  CIDR Node Jarak Jauh  |  Server API Kubernetes ke kubelet  | 
|  HTTPS  |  TCP  |  Ke dalam  |  Port webhook  |  Kluster EKS IPs 1   |  CIDR Pod Jarak Jauh  |  Server API Kubernetes ke webhook  | 
|  HTTPS  |  TCP, UDP  |  Masuk, Keluar  |  53  |  CIDR Pod Jarak Jauh  |  CIDR Pod Jarak Jauh  |  Pod ke CoreDNS. Jika Anda menjalankan setidaknya 1 replika CoreDNS di cloud, Anda harus mengizinkan lalu lintas DNS ke VPC tempat CoreDNS berjalan.  | 
|  Ditentukan pengguna  |  Ditentukan pengguna  |  Masuk, Keluar  |  Port aplikasi  |  CIDR Pod Jarak Jauh  |  CIDR Pod Jarak Jauh  |  Pod ke Pod  | 

**catatan**  
 1 IPs Kluster EKS. Lihat bagian berikut tentang antarmuka jaringan elastis Amazon EKS.

### Antarmuka jaringan Amazon EKS
<a name="hybrid-nodes-networking-eks-network-interfaces"></a>

Amazon EKS melampirkan antarmuka jaringan ke subnet di VPC yang Anda lewati selama pembuatan klaster untuk mengaktifkan komunikasi antara bidang kontrol EKS dan VPC Anda. Antarmuka jaringan yang dibuat Amazon EKS dapat ditemukan setelah pembuatan cluster di konsol Amazon EC2 atau dengan CLI. AWS Antarmuka jaringan asli dihapus dan antarmuka jaringan baru dibuat ketika perubahan diterapkan pada kluster EKS Anda, seperti upgrade versi Kubernetes. Anda dapat membatasi rentang IP untuk antarmuka jaringan Amazon EKS dengan menggunakan ukuran subnet terbatas untuk subnet yang Anda lewati selama pembuatan klaster, yang memudahkan konfigurasi firewall lokal Anda untuk memungkinkan inbound/outbound konektivitas ke kumpulan yang diketahui dan dibatasi ini. IPs Untuk mengontrol antarmuka jaringan subnet mana yang dibuat, Anda dapat membatasi jumlah subnet yang Anda tentukan saat membuat cluster atau Anda dapat memperbarui subnet setelah membuat cluster.

Antarmuka jaringan yang disediakan oleh Amazon EKS memiliki deskripsi formatnya. `Amazon EKS your-cluster-name ` Lihat contoh di bawah ini untuk perintah AWS CLI yang dapat Anda gunakan untuk menemukan alamat IP antarmuka jaringan yang disediakan Amazon EKS. Ganti `VPC_ID` dengan ID VPC yang Anda lewati selama pembuatan cluster.

```
aws ec2 describe-network-interfaces \
--query 'NetworkInterfaces[?(VpcId == VPC_ID && contains(Description,Amazon EKS))].PrivateIpAddress'
```

## AWS Pengaturan VPC dan subnet
<a name="hybrid-nodes-networking-vpc"></a>

Persyaratan [VPC dan subnet yang ada untuk](network-reqs.md) Amazon EKS berlaku untuk cluster dengan node hybrid. Selain itu, CIDR VPC Anda tidak dapat tumpang tindih dengan node dan pod lokal Anda. CIDRs Anda harus mengonfigurasi rute di tabel perutean VPC untuk node lokal dan pod opsional. CIDRs Rute ini harus diatur untuk mengarahkan lalu lintas ke gateway yang Anda gunakan untuk konektivitas jaringan hybrid Anda, yang biasanya merupakan gateway pribadi virtual (VGW) atau gateway transit (TGW). Jika Anda menggunakan TGW atau VGW untuk menghubungkan VPC dengan lingkungan lokal, Anda harus membuat lampiran TGW atau VGW untuk VPC Anda. VPC Anda harus memiliki nama host DNS dan dukungan resolusi DNS.

Langkah-langkah berikut menggunakan AWS CLI. Anda juga dapat membuat sumber daya ini di Konsol Manajemen AWS atau dengan antarmuka lain seperti AWS CloudFormation, AWS CDK, atau Terraform.

### Langkah 1: Buat VPC
<a name="_step_1_create_vpc"></a>

1. Jalankan perintah berikut untuk membuat VPC. Ganti VPC\$1CIDR dengan rentang CIDR yaitu RFC 1918 (pribadi), CGNAT (RFC 6598), atau non-RFC 1918/non-CGNAT (publik) (misalnya, 10.0.0.0/16). IPv4 Catatan: Resolusi DNS, yang merupakan persyaratan EKS, diaktifkan untuk VPC secara default.

   ```
   aws ec2 create-vpc --cidr-block VPC_CIDR
   ```

1. Aktifkan nama host DNS untuk VPC Anda. Catatan, resolusi DNS diaktifkan untuk VPC secara default. Ganti `VPC_ID` dengan ID VPC yang Anda buat pada langkah sebelumnya.

   ```
   aws ec2 modify-vpc-attribute --vpc-id VPC_ID --enable-dns-hostnames
   ```

### Langkah 2: Buat subnet
<a name="_step_2_create_subnets"></a>

Buat setidaknya 2 subnet. Amazon EKS menggunakan subnet ini untuk antarmuka jaringan cluster. Untuk informasi selengkapnya, lihat [Persyaratan dan pertimbangan Subnet](network-reqs.md#network-requirements-subnets).

1. Anda dapat menemukan zona ketersediaan untuk AWS Wilayah dengan perintah berikut. Ganti `us-west-2` dengan wilayah Anda.

   ```
   aws ec2 describe-availability-zones \
        --query 'AvailabilityZones[?(RegionName == us-west-2)].ZoneName'
   ```

1. Buat subnet. Ganti `VPC_ID` dengan ID VPC. Ganti `SUBNET_CIDR` dengan blok CIDR untuk subnet Anda (misalnya 10.0.1.0/24). Ganti `AZ` dengan zona ketersediaan tempat subnet akan dibuat (misalnya us-west-2a). Subnet yang Anda buat harus berada di setidaknya 2 zona ketersediaan yang berbeda.

   ```
   aws ec2 create-subnet \
       --vpc-id VPC_ID \
       --cidr-block SUBNET_CIDR \
       --availability-zone AZ
   ```

### (Opsional) Langkah 3: Lampirkan VPC dengan Amazon VPC Transit Gateway (TGW) AWS atau gateway pribadi virtual Direct Connect (VGW)
<a name="optional_step_3_attach_vpc_with_amazon_vpc_transit_gateway_tgw_or_shared_aws_direct_connect_virtual_private_gateway_vgw"></a>

Jika Anda menggunakan TGW atau VGW, lampirkan VPC Anda ke TGW atau VGW. [Untuk informasi selengkapnya, lihat [lampiran VPC Amazon di Gateway Transit VPC Amazon atau asosiasi gateway pribadi virtual Direct AWS Connect](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html).](https://docs.aws.amazon.com/vpn/latest/s2svpn/how_it_works.html#VPNGateway)

 **Transit Gateway** 

Jalankan perintah berikut untuk melampirkan Transit Gateway. Ganti `VPC_ID` dengan ID VPC. Ganti `SUBNET_ID1` dan `SUBNET_ID2` dengan subnet yang Anda buat pada langkah sebelumnya. IDs Ganti `TGW_ID` dengan ID TGW Anda.

```
aws ec2 create-transit-gateway-vpc-attachment \
    --vpc-id VPC_ID \
    --subnet-ids SUBNET_ID1 SUBNET_ID2 \
    --transit-gateway-id TGW_ID
```

 **Gerbang Pribadi Virtual** 

Jalankan perintah berikut untuk melampirkan Transit Gateway. Ganti `VPN_ID` dengan ID VGW Anda. Ganti `VPC_ID` dengan ID VPC.

```
aws ec2 attach-vpn-gateway \
    --vpn-gateway-id VPN_ID \
    --vpc-id VPC_ID
```

### (Opsional) Langkah 4: Buat tabel rute
<a name="_optional_step_4_create_route_table"></a>

Anda dapat memodifikasi tabel rute utama untuk VPC atau Anda dapat membuat tabel rute khusus. Langkah-langkah berikut membuat tabel rute kustom dengan rute ke node dan pod CIDRs lokal. Untuk informasi selengkapnya, lihat [Tabel rute subnet](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-route-tables.html). Ganti `VPC_ID` dengan ID VPC.

```
aws ec2 create-route-table --vpc-id VPC_ID
```

### Langkah 5: Buat rute untuk node dan pod lokal
<a name="_step_5_create_routes_for_on_premises_nodes_and_pods"></a>

Buat rute dalam tabel rute untuk setiap node jarak jauh lokal Anda. Anda dapat memodifikasi tabel rute utama untuk VPC atau menggunakan tabel rute khusus yang Anda buat di langkah sebelumnya.

Contoh di bawah ini menunjukkan cara membuat rute untuk node dan pod CIDRs lokal Anda. Dalam contoh, gateway transit (TGW) digunakan untuk menghubungkan VPC dengan lingkungan lokal. Jika Anda memiliki beberapa node dan pod lokal CIDRs, ulangi langkah-langkah untuk setiap CIDR.
+ Jika Anda menggunakan gateway internet atau virtual private gateway (VGW) ganti `--transit-gateway-id` dengan. `--gateway-id`
+ Ganti `RT_ID` dengan ID tabel rute yang Anda buat pada langkah sebelumnya.
+ Ganti `REMOTE_NODE_CIDR` dengan rentang CIDR yang akan Anda gunakan untuk node hybrid Anda.
+ Ganti `REMOTE_POD_CIDR` dengan rentang CIDR yang akan Anda gunakan untuk pod yang berjalan pada node hybrid. Rentang pod CIDR sesuai dengan konfigurasi Container Networking Interface (CNI), yang paling sering menggunakan jaringan overlay lokal. Untuk informasi selengkapnya, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).
+ Ganti `TGW_ID` dengan ID TGW Anda.

 **Jaringan simpul jarak jauh** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_NODE_CIDR \
    --transit-gateway-id TGW_ID
```

 **Jaringan Pod jarak jauh** 

```
aws ec2 create-route \
    --route-table-id RT_ID \
    --destination-cidr-block REMOTE_POD_CIDR \
    --transit-gateway-id TGW_ID
```

### (Opsional) Langkah 6: Kaitkan subnet dengan tabel rute
<a name="_optional_step_6_associate_subnets_with_route_table"></a>

Jika Anda membuat tabel rute kustom pada langkah sebelumnya, kaitkan setiap subnet yang Anda buat pada langkah sebelumnya dengan tabel rute kustom Anda. Jika Anda memodifikasi tabel rute utama VPC, subnet secara otomatis dikaitkan dengan tabel rute utama VPC dan Anda dapat melewati langkah ini.

Jalankan perintah berikut untuk setiap subnet yang Anda buat di langkah sebelumnya. Ganti `RT_ID` dengan tabel rute yang Anda buat pada langkah sebelumnya. Ganti `SUBNET_ID` dengan ID subnet.

```
aws ec2 associate-route-table --route-table-id RT_ID --subnet-id SUBNET_ID
```

## Konfigurasi grup keamanan cluster
<a name="hybrid-nodes-networking-cluster-sg"></a>

Akses berikut untuk grup keamanan klaster EKS Anda diperlukan untuk operasi klaster yang sedang berlangsung. Amazon EKS secara otomatis membuat aturan grup keamanan **masuk** yang diperlukan untuk node hibrid saat Anda membuat atau memperbarui klaster Anda dengan node jarak jauh dan jaringan pod yang dikonfigurasi. Karena grup keamanan mengizinkan semua lalu lintas **keluar** secara default, Amazon EKS tidak secara otomatis memodifikasi aturan **keluar** grup keamanan klaster untuk node hibrida. Jika Anda ingin menyesuaikan grup keamanan klaster, Anda dapat membatasi lalu lintas ke aturan dalam tabel berikut.


| Tipe | Protokol | Arahan | Port | Sumber | Destinasi | Penggunaan | 
| --- | --- | --- | --- | --- | --- | --- | 
|  HTTPS  |  TCP  |  Ke dalam  |  443  |  CIDR Node Jarak Jauh  |  N/A  |  Kubelet ke Kubernetes API server  | 
|  HTTPS  |  TCP  |  Ke dalam  |  443  |  CIDR Pod Jarak Jauh  |  N/A  |  Pod yang membutuhkan akses ke server API K8s saat CNI tidak menggunakan NAT untuk lalu lintas pod.  | 
|  HTTPS  |  TCP  |  Ke luar  |  10250  |  N/A  |  CIDR Node Jarak Jauh  |  Server API Kubernetes ke Kubelet  | 
|  HTTPS  |  TCP  |  Ke luar  |  Port webhook  |  N/A  |  CIDR Pod Jarak Jauh  |  Kubernetes API server ke webhook (jika menjalankan webhook pada node hybrid)  | 

**penting**  
 **Batas aturan grup keamanan**: Grup keamanan Amazon EC2 memiliki maksimum 60 aturan masuk secara default. Aturan masuk grup keamanan mungkin tidak berlaku jika grup keamanan klaster Anda mendekati batas ini. Dalam hal ini, mungkin diperlukan untuk menambahkan aturan masuk yang hilang secara manual.  
 **Tanggung jawab pembersihan CIDR**: Jika Anda menghapus node jarak jauh atau jaringan pod dari kluster EKS, EKS tidak secara otomatis menghapus aturan grup keamanan yang sesuai. Anda bertanggung jawab untuk menghapus node jarak jauh atau jaringan pod yang tidak digunakan secara manual dari aturan grup keamanan Anda.

Untuk informasi selengkapnya tentang grup keamanan klaster yang dibuat Amazon EKS, lihat[Lihat persyaratan grup keamanan Amazon EKS untuk cluster](sec-group-reqs.md).

### (Opsional) Konfigurasi grup keamanan manual
<a name="_optional_manual_security_group_configuration"></a>

Jika Anda perlu membuat grup keamanan tambahan atau memodifikasi aturan yang dibuat secara otomatis, Anda dapat menggunakan perintah berikut sebagai referensi. Secara default, perintah di bawah ini membuat grup keamanan yang memungkinkan semua akses keluar. Anda dapat membatasi akses keluar untuk menyertakan hanya aturan di atas. Jika Anda mempertimbangkan untuk membatasi aturan keluar, sebaiknya Anda menguji secara menyeluruh semua aplikasi dan konektivitas pod sebelum menerapkan aturan yang diubah ke cluster produksi.
+ Pada perintah pertama, ganti `SG_NAME` dengan nama untuk grup keamanan Anda
+ Pada perintah pertama, ganti `VPC_ID` dengan ID VPC yang Anda buat pada langkah sebelumnya
+ Pada perintah kedua, ganti `SG_ID` dengan ID grup keamanan yang Anda buat di perintah pertama
+ Pada perintah kedua, ganti `REMOTE_NODE_CIDR` dan `REMOTE_POD_CIDR` dengan nilai untuk node hybrid dan jaringan lokal Anda.

```
aws ec2 create-security-group \
    --group-name SG_NAME \
    --description "security group for hybrid nodes" \
    --vpc-id VPC_ID
```

```
aws ec2 authorize-security-group-ingress \
    --group-id SG_ID \
    --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443, "IpRanges": [{"CidrIp": "REMOTE_NODE_CIDR"}, {"CidrIp": "REMOTE_POD_CIDR"}]}]'
```

# Siapkan sistem operasi untuk node hybrid
<a name="hybrid-nodes-os"></a>

Bottlerocket, Amazon Linux 2023 AL2 (023), Ubuntu, dan RHEL divalidasi secara berkelanjutan untuk digunakan sebagai sistem operasi node untuk node hibrida. Bottlerocket didukung oleh di lingkungan AWS VMware vSphere saja. AL2023 tidak tercakup oleh AWS Support Plans saat dijalankan di luar Amazon EC2. AL2023 hanya dapat digunakan di lingkungan virtual lokal, lihat [Panduan Pengguna Amazon Linux 2023](https://docs.aws.amazon.com/linux/al2023/ug/outside-ec2.html) untuk informasi selengkapnya. AWS mendukung integrasi node hybrid dengan sistem operasi Ubuntu dan RHEL tetapi tidak memberikan dukungan untuk sistem operasi itu sendiri.

Anda bertanggung jawab atas penyediaan dan manajemen sistem operasi. Saat Anda menguji node hybrid untuk pertama kalinya, paling mudah menjalankan Amazon EKS Hybrid Nodes CLI (`nodeadm`) pada host yang sudah disediakan. Untuk penerapan produksi, kami menyarankan Anda menyertakan `nodeadm` gambar sistem operasi yang dikonfigurasi untuk dijalankan sebagai layanan systemd untuk secara otomatis bergabung dengan host ke kluster Amazon EKS saat startup host. Jika Anda menggunakan Bottlerocket sebagai sistem operasi node Anda di vSphere, Anda tidak perlu menggunakan `nodeadm` karena Bottlerocket sudah berisi dependensi yang diperlukan untuk node hybrid dan secara otomatis akan terhubung ke cluster yang Anda konfigurasikan saat startup host.

## Kompatibilitas versi
<a name="_version_compatibility"></a>

Tabel di bawah ini mewakili versi sistem operasi yang kompatibel dan divalidasi untuk digunakan sebagai sistem operasi node untuk node hybrid. Jika Anda menggunakan varian atau versi sistem operasi lain yang tidak termasuk dalam tabel ini, maka kompatibilitas node hybrid dengan varian atau versi sistem operasi Anda tidak tercakup oleh AWS Support. Node hybrid bersifat agnostik terhadap infrastruktur yang mendasarinya dan mendukung arsitektur x86 dan ARM.


| Sistem Operasi | Versi | 
| --- | --- | 
|  Amazon Linux  |  Amazon Linux 2023 (AL2023)  | 
|  Bottlerocket  |  v1.37.0 dan VMware varian di atasnya yang menjalankan Kubernetes v1.28 dan di atasnya  | 
|  Ubuntu  |  Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04  | 
|  Linux Red Hat Enterprise  |  RHEL 8, RHEL 9  | 

## Pertimbangan sistem operasi
<a name="_operating_system_considerations"></a>

### Umum
<a name="_general"></a>
+ Amazon EKS Hybrid Nodes CLI (`nodeadm`) dapat digunakan untuk menyederhanakan instalasi dan konfigurasi komponen dan dependensi node hybrid. Anda dapat menjalankan `nodeadm install` proses selama pipeline build image sistem operasi atau saat runtime di setiap host lokal. Untuk informasi selengkapnya tentang komponen yang `nodeadm` diinstal, lihat. [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md)
+ Jika Anda menggunakan proxy di lingkungan lokal untuk menjangkau internet, ada konfigurasi sistem operasi tambahan yang diperlukan untuk proses penginstalan dan pemutakhiran guna mengonfigurasi manajer paket Anda agar menggunakan proxy. Lihat [Konfigurasikan proxy untuk node hybrid](hybrid-nodes-proxy.md) untuk instruksi.

### Bottlerocket
<a name="_bottlerocket"></a>
+ Langkah-langkah dan alat untuk menghubungkan node Bottlerocket berbeda dari langkah-langkah untuk sistem operasi lain dan dibahas secara terpisah[Hubungkan node hybrid dengan Bottlerocket](hybrid-nodes-bottlerocket.md), bukan langkah-langkah masuk. [Connect node hybrid](hybrid-nodes-join.md)
+ Langkah-langkah untuk Bottlerocket tidak menggunakan alat CLI node hybrid,. `nodeadm`
+ Hanya VMware varian Bottlerocket versi v1.37.0 ke atas yang didukung dengan EKS Hybrid Nodes. VMware varian Bottlerocket tersedia untuk Kubernetes versi v1.28 ke atas. [Varian Bottlerocket lainnya](https://bottlerocket.dev/en/os/1.36.x/concepts/variants) tidak didukung sebagai sistem operasi node hybrid. CATATAN: VMware varian Bottlerocket hanya tersedia untuk arsitektur x86\$164.

### Kontainer
<a name="_containerd"></a>
+ Containerd adalah runtime container Kubernetes standar dan merupakan dependensi untuk node hybrid, serta semua tipe komputasi node Amazon EKS. Amazon EKS Hybrid Nodes CLI (`nodeadm`) mencoba menginstal containerd selama proses berlangsung. `nodeadm install` Anda dapat mengonfigurasi instalasi containerd `nodeadm install` saat runtime dengan `--containerd-source` opsi baris perintah. Opsi yang valid adalah`none`,`distro`, dan`docker`. Jika Anda menggunakan RHEL, `distro` ini bukan opsi yang valid dan Anda dapat mengonfigurasi `nodeadm` untuk menginstal build containerd dari repo Docker atau Anda dapat menginstal containerd secara manual. Saat menggunakan AL2 023 atau Ubuntu, `nodeadm` default untuk menginstal containerd dari distribusi sistem operasi. Jika Anda tidak ingin nodeadm menginstal containerd, gunakan opsi. `--containerd-source none`

### Ubuntu
<a name="_ubuntu"></a>
+ [Jika Anda menggunakan Ubuntu 24.04, Anda mungkin perlu memperbarui versi containerd atau mengubah konfigurasi AppArmor Anda untuk mengadopsi perbaikan yang memungkinkan pod dihentikan dengan benar, lihat Ubuntu \$12065423.](https://bugs.launchpad.net/ubuntu/+source/containerd-app/\+bug/2065423) Diperlukan reboot untuk menerapkan perubahan pada AppArmor profil. Versi terbaru Ubuntu 24.04 memiliki versi containerd yang diperbarui di manajer paketnya dengan perbaikan (containerd versi 1.7.19\$1).

### LENGAN
<a name="_arm"></a>
+ Jika Anda menggunakan perangkat keras ARM, prosesor yang sesuai dengan ARMv8 .2 dengan Ekstensi Kriptografi (ARMv8.2\$1crypto) diperlukan untuk menjalankan add-on EKS kube-proxy versi 1.31 ke atas. Semua sistem Raspberry Pi sebelum Raspberry Pi 5, serta prosesor berbasis Cortex-A72, tidak memenuhi persyaratan ini. Sebagai solusinya, Anda dapat terus menggunakan add-on EKS kube-proxy versi 1.30 hingga mencapai akhir dukungan yang diperluas pada bulan Juli 2026, lihat kalender rilis [Kubernetes, atau menggunakan gambar kube-proxy kustom](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) dari hulu.
+ Pesan kesalahan berikut di log kube-proxy menunjukkan ketidakcocokan ini:

```
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
```

## Membangun gambar sistem operasi
<a name="_building_operating_system_images"></a>

Amazon EKS menyediakan [contoh template Packer](https://github.com/aws/eks-hybrid/tree/main/example/packer) yang dapat Anda gunakan untuk membuat gambar sistem operasi yang menyertakan `nodeadm` dan mengonfigurasinya agar berjalan saat startup host. Proses ini disarankan untuk menghindari penarikan dependensi node hybrid secara individual pada setiap host dan untuk mengotomatiskan proses bootstrap node hybrid. Anda dapat menggunakan contoh template Packer dengan gambar ISO Ubuntu 22.04, Ubuntu 24.04, RHEL 8 atau RHEL 9 dan dapat menampilkan gambar dengan format ini: OVA, Qcow2, atau mentah.

### Prasyarat
<a name="_prerequisites"></a>

Sebelum menggunakan contoh template Packer, Anda harus memiliki yang berikut diinstal pada mesin dari tempat Anda menjalankan Packer.
+ Packer versi 1.11.0 atau lebih tinggi. Untuk petunjuk tentang menginstal Packer, lihat [Install Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) di dokumentasi Packer.
+ Jika membangun OVAs, VMware vSphere plugin 1.4.0 atau lebih tinggi
+ Jika membangun `Qcow2` atau gambar mentah, plugin QEMU versi 1.x

### Tetapkan Variabel Lingkungan
<a name="_set_environment_variables"></a>

Sebelum menjalankan build Packer, atur variabel lingkungan berikut pada mesin dari tempat Anda menjalankan Packer.

 **Umum** 

Variabel lingkungan berikut harus diatur untuk membangun gambar dengan semua sistem operasi dan format output.


| Variabel Lingkungan | Jenis | Deskripsi | 
| --- | --- | --- | 
|  PKR\$1SSH\$1PASSWORD  |  String  |  Packer menggunakan `ssh_password` variabel `ssh_username` dan ke SSH ke dalam mesin yang dibuat saat penyediaan. Ini harus sesuai dengan kata sandi yang digunakan untuk membuat pengguna awal dalam file kickstart atau data pengguna OS masing-masing. Default ditetapkan sebagai “builder” atau “ubuntu” tergantung pada OS. Saat mengatur kata sandi Anda, pastikan untuk mengubahnya dalam `user-data` file yang sesuai `ks.cfg` atau agar sesuai.  | 
|  ISO\$1URL  |  String  |  URL ISO yang akan digunakan. Bisa berupa tautan web untuk diunduh dari server, atau jalur absolut ke file lokal  | 
|  ISO\$1CHECKSUM  |  String  |  Checksum terkait untuk ISO yang disediakan.  | 
|  CREDENTIAL\$1PROVIDER  |  String  |  Penyedia kredensyal untuk node hibrida. Nilai yang valid adalah `ssm` (default) untuk aktivasi hibrida SSM dan `iam` untuk Peran IAM Di Mana Saja  | 
|  K8S\$1VERSION  |  String  |  Versi Kubernetes untuk node hybrid (misalnya). `1.31` Untuk versi Kubernetes yang didukung, lihat versi yang didukung [Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).  | 
|  NODEADM\$1ARCH  |  String  |  Arsitektur untuk`nodeadm install`. Pilih `amd` atau`arm`.  | 

 **RHEL** 

Jika Anda menggunakan RHEL, variabel lingkungan berikut harus diatur.


| Variabel Lingkungan | Jenis | Deskripsi | 
| --- | --- | --- | 
|  RH\$1NAMA PENGGUNA  |  String  |  Nama pengguna manajer langganan RHEL  | 
|  RH\$1KATA SANDI  |  String  |  Kata sandi pengelola langganan RHEL  | 
|  RHEL\$1VERSION  |  String  |  Versi Rhel iso sedang digunakan. Nilai-nilai yang valid adalah `8` atau `9`.  | 

 **Ubuntu** 

Tidak ada variabel lingkungan khusus Ubuntu yang diperlukan.

 **vSphere** 

Jika Anda sedang membangun OVA VMware vSphere, variabel lingkungan berikut harus diatur.


| Variabel Lingkungan | Jenis | Deskripsi | 
| --- | --- | --- | 
|  VSPHERE\$1SERVER  |  String  |  Alamat server vSphere  | 
|  VSPHERE\$1USER  |  String  |  Nama pengguna vSphere  | 
|  VSPHERE\$1PASSWORD  |  String  |  Kata sandi vSphere  | 
|  VSPHERE\$1DATACENTER  |  String  |  Nama pusat data vSphere  | 
|  VSPHERE\$1CLUSTER  |  String  |  Nama cluster vSphere  | 
|  VSPHERE\$1DATASTORE  |  String  |  vSphere nama datastore  | 
|  VSPHERE\$1NETWORK  |  String  |  nama jaringan vSphere  | 
|  VSPHERE\$1OUTPUT\$1FOLDER  |  String  |  folder output vSphere untuk template  | 

 **QEMU** 


| Variabel Lingkungan | Jenis | Deskripsi | 
| --- | --- | --- | 
|  FORMAT PACKER\$1OUTPUT\$1  |  String  |  Format output untuk pembangun QEMU. Nilai yang valid adalah `qcow2` dan `raw`.  | 

 **Validasi template** 

Sebelum menjalankan build, validasi template Anda dengan perintah berikut setelah menyetel variabel lingkungan. Ganti `template.pkr.hcl` jika Anda menggunakan nama yang berbeda untuk template Anda.

```
packer validate template.pkr.hcl
```

### Membangun gambar
<a name="_build_images"></a>

Bangun gambar Anda dengan perintah berikut dan gunakan `-only` bendera untuk menentukan target dan sistem operasi untuk gambar Anda. Ganti `template.pkr.hcl` jika Anda menggunakan nama yang berbeda untuk template Anda.

 **vSphere OVAs** 

**catatan**  
Jika Anda menggunakan RHEL dengan vSphere, Anda perlu mengonversi file kickstart ke gambar OEMDRV dan meneruskannya sebagai ISO untuk boot. Untuk informasi lebih lanjut, lihat [Packer Readme](https://github.com/aws/eks-hybrid/tree/main/example/packer#utilizing-rhel-with-vsphere) di EKS Hybrid Nodes GitHub Repository.

 **Ubuntu 22.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 OVA** 

```
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
```

 **RHEL 8 TELUR** 

```
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
```

 **RHEL 9 TELUR** 

```
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
```

 **QEMU** 

**catatan**  
Jika Anda membuat gambar untuk CPU host tertentu yang tidak cocok dengan host pembangun Anda, lihat dokumentasi [QEMU](https://www.qemu.org/docs/master/system/qemu-cpu-models.html) untuk nama yang cocok dengan CPU host Anda dan gunakan `-cpu` tanda dengan nama CPU host saat Anda menjalankan perintah berikut.

 **Ubuntu 22.04 Qcow2/Mentah** 

```
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
```

 **Ubuntu 24.04 Qcow2/Mentah** 

```
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
```

 **RHEL 8 Qcow2/Mentah** 

```
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
```

 **RHEL 9 Qcow2/Mentah** 

```
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
```

### Lewati konfigurasi nodeadm melalui data pengguna
<a name="_pass_nodeadm_configuration_through_user_data"></a>

Anda dapat meneruskan konfigurasi untuk `nodeadm` data pengguna Anda melalui cloud-init untuk mengonfigurasi dan secara otomatis menghubungkan node hybrid ke kluster EKS Anda saat startup host. Di bawah ini adalah contoh bagaimana untuk mencapai ini ketika menggunakan VMware vSphere sebagai infrastruktur untuk node hybrid Anda.

1. Instal `govc` CLI mengikuti instruksi di [govc](https://github.com/vmware/govmomi/blob/main/govc/README.md) readme on. GitHub

1. Setelah menjalankan build Packer di bagian sebelumnya dan menyediakan template Anda, Anda dapat mengkloning template Anda untuk membuat beberapa node berbeda menggunakan berikut ini. Anda harus mengkloning template untuk setiap VM baru yang Anda buat yang akan digunakan untuk node hybrid. Ganti variabel dalam perintah di bawah ini dengan nilai untuk lingkungan Anda. Perintah `VM_NAME` di bawah ini digunakan sebagai Anda `NODE_NAME` ketika Anda menyuntikkan nama untuk Anda VMs melalui `metadata.yaml` file Anda.

   ```
   govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \
       -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME"
   ```

1. Setelah mengkloning template untuk masing-masing yang baru Anda VMs, buat `userdata.yaml` dan `metadata.yaml` untuk Anda VMs. Anda VMs dapat berbagi hal yang sama `userdata.yaml` `metadata.yaml` dan dan Anda akan mengisinya berdasarkan per VM dalam langkah-langkah di bawah ini. `nodeadm`Konfigurasi dibuat dan didefinisikan di `write_files` bagian Anda`userdata.yaml`. Contoh di bawah ini menggunakan aktivasi hibrida AWS SSM sebagai penyedia kredensi lokal untuk node hibrid. Untuk informasi lebih lanjut tentang `nodeadm` konfigurasi, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

    **userdata.yaml:** 

   ```
   #cloud-config
   users:
     - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu.
       passwd: # password to login. Default is 'builder' for RHEL.
       groups: [adm, cdrom, dip, plugdev, lxd, sudo]
       lock-passwd: false
       sudo: ALL=(ALL) NOPASSWD:ALL
       shell: /bin/bash
   
   write_files:
     - path: /usr/local/bin/nodeConfig.yaml
       permissions: '0644'
       content: |
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
             cluster:
                 name: # Cluster Name
                 region: # AWS region
             hybrid:
                 ssm:
                     activationCode: # Your ssm activation code
                     activationId: # Your ssm activation id
   
   runcmd:
     - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1
   ```

    **metadata.yaml:** 

   Buat `metadata.yaml` untuk lingkungan Anda. Simpan format `"$NODE_NAME"` variabel dalam file karena ini akan diisi dengan nilai pada langkah berikutnya.

   ```
   instance-id: "$NODE_NAME"
   local-hostname: "$NODE_NAME"
   network:
     version: 2
     ethernets:
       nics:
         match:
           name: ens*
         dhcp4: yes
   ```

1. Tambahkan `userdata.yaml` dan `metadata.yaml` file sebagai `gzip+base64` string dengan perintah berikut. Perintah berikut harus dijalankan untuk masing-masing yang VMs Anda buat. Ganti `VM_NAME` dengan nama VM yang Anda perbarui.

   ```
   export NODE_NAME="VM_NAME"
   export USER_DATA=$(gzip -c9 <userdata.yaml | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64
   
   envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp
   export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64)
   
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}"
   govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64
   ```

1. Nyalakan yang baru Anda VMs, yang akan secara otomatis terhubung ke cluster EKS yang Anda konfigurasikan.

   ```
   govc vm.power -on "${NODE_NAME}"
   ```

# Siapkan kredensil untuk node hybrid
<a name="hybrid-nodes-creds"></a>

Amazon EKS Hybrid Nodes menggunakan kredenal IAM sementara yang disediakan oleh aktivasi hybrid AWS SSM atau AWS Peran IAM Anywhere untuk mengautentikasi dengan kluster Amazon EKS. Anda harus menggunakan aktivasi hibrida AWS SSM atau Peran AWS IAM Di Mana Saja dengan Amazon EKS Hybrid Nodes CLI (). `nodeadm` Anda tidak boleh menggunakan aktivasi hibrida AWS SSM dan Peran AWS IAM Di Mana Saja. Kami menyarankan Anda menggunakan aktivasi hibrida AWS SSM jika Anda tidak memiliki Infrastruktur Kunci Publik (PKI) dengan Otoritas Sertifikat (CA) dan sertifikat untuk lingkungan lokal Anda. Jika Anda memiliki PKI dan sertifikat lokal, gunakan Peran AWS IAM Di Mana Saja.

## Peran IAM Node Hibrida
<a name="hybrid-nodes-role"></a>

Sebelum Anda dapat menghubungkan node hybrid ke cluster Amazon EKS Anda, Anda harus membuat peran IAM yang akan digunakan dengan aktivasi hibrida AWS SSM atau Peran AWS IAM Anywhere untuk kredenal node hybrid Anda. Setelah pembuatan klaster, Anda akan menggunakan peran ini dengan entri akses Amazon EKS atau `aws-auth` ConfigMap entri untuk memetakan peran IAM ke Kubernetes Role-Based Access Control (RBAC). Untuk informasi lebih lanjut tentang mengaitkan peran IAM Hybrid Nodes dengan Kubernetes RBAC, lihat. [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md)

Peran IAM Hybrid Nodes harus memiliki izin berikut.
+ Izin `nodeadm` untuk menggunakan `eks:DescribeCluster` tindakan untuk mengumpulkan informasi tentang cluster tempat Anda ingin menghubungkan node hibrida. Jika Anda tidak mengaktifkan `eks:DescribeCluster` tindakan, maka Anda harus meneruskan endpoint Kubernetes API, cluster CA bundle, dan service IPv4 CIDR dalam konfigurasi node yang Anda berikan ke perintah. `nodeadm init`
+ Izin `nodeadm` untuk menggunakan `eks:ListAccessEntries` tindakan untuk mencantumkan entri akses pada klaster yang ingin Anda sambungkan node hibrid. Jika Anda tidak mengaktifkan `eks:ListAccessEntries` tindakan, maka Anda harus melewati `--skip cluster-access-validation` bendera saat menjalankan `nodeadm init` perintah.
+ [Izin untuk kubelet untuk menggunakan image container dari Amazon Elastic Container Registry (Amazon ECR) seperti yang didefinisikan dalam kebijakan Amazon. EC2 ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)
+ Jika menggunakan AWS SSM, izin `nodeadm init` untuk menggunakan aktivasi hibrida AWS SSM seperti yang ditentukan dalam kebijakan. [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)
+ Jika menggunakan AWS SSM, izin untuk menggunakan `ssm:DeregisterManagedInstance` tindakan dan `ssm:DescribeInstanceInformation` tindakan `nodeadm uninstall` untuk membatalkan pendaftaran instance.
+ (Opsional) Izin untuk Amazon EKS Pod Identity Agent untuk menggunakan `eks-auth:AssumeRoleForPodIdentity` action tersebut guna mengambil kredensial Pod.

## Siapkan AWS aktivasi hibrida SSM
<a name="hybrid-nodes-ssm"></a>

Sebelum menyiapkan aktivasi hybrid AWS SSM, Anda harus memiliki peran IAM Hybrid Nodes yang dibuat dan dikonfigurasi. Untuk informasi selengkapnya, lihat [Buat peran IAM Hybrid Nodes](#hybrid-nodes-create-role). Ikuti petunjuk di [Buat aktivasi hybrid untuk mendaftarkan node dengan Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) di Panduan Pengguna AWS Systems Manager untuk membuat aktivasi hibrida AWS SSM untuk node hybrid Anda. Kode Aktivasi dan ID yang Anda terima digunakan `nodeadm` saat Anda mendaftarkan host Anda sebagai node hibrida dengan kluster Amazon EKS Anda. Anda dapat kembali ke langkah ini di lain waktu setelah Anda membuat dan menyiapkan kluster Amazon EKS Anda untuk node hibrida.

**penting**  
Systems Manager akan segera mengembalikan Kode Aktivasi dan ID ke konsol atau jendela perintah, tergantung pada bagaimana Anda membuat aktivasi. Salin informasi ini dan simpan di tempat yang aman. Jika Anda menavigasi keluar dari konsol atau menutup jendela perintah, Anda mungkin kehilangan informasi ini. Jika Anda kehilangannya, Anda harus membuat aktivasi baru.

Secara default, aktivasi hibrida AWS SSM aktif selama 24 jam. Anda juga dapat menentukan `--expiration-date` kapan Anda membuat aktivasi hibrida dalam format stempel waktu, seperti. `2024-08-01T00:00:00` Saat Anda menggunakan AWS SSM sebagai penyedia kredensi Anda, nama node untuk node hibrida Anda tidak dapat dikonfigurasi, dan dibuat secara otomatis oleh SSM. AWS Anda dapat melihat dan mengelola Instans Terkelola AWS SSM di konsol AWS Systems Manager di bawah Fleet Manager. Anda dapat mendaftarkan hingga 1.000 [node standar yang diaktifkan hibrida](https://docs.aws.amazon.com/systems-manager/latest/userguide/activations.html) per akun per AWS Wilayah tanpa biaya tambahan. Namun, mendaftarkan lebih dari 1.000 node hybrid mengharuskan Anda mengaktifkan tingkat instance lanjutan. Ada biaya untuk menggunakan tingkat instans lanjutan yang tidak termasuk dalam harga [Amazon EKS](https://aws.amazon.com/eks/pricing/) Hybrid Nodes. Untuk informasi selengkapnya, lihat [Harga AWS Systems Manager](https://aws.amazon.com/systems-manager/pricing/).

Lihat contoh di bawah ini untuk cara membuat aktivasi hybrid AWS SSM dengan peran IAM Hybrid Nodes Anda. Saat Anda menggunakan aktivasi hibrida AWS SSM untuk kredensil node hybrid Anda, nama-nama node hibrida Anda akan memiliki format `mi-012345678abcdefgh` dan kredenal sementara yang disediakan oleh SSM berlaku selama 1 jam. AWS Anda tidak dapat mengubah nama node atau durasi kredensi saat menggunakan AWS SSM sebagai penyedia kredensi Anda. Kredensi sementara secara otomatis diputar oleh AWS SSM dan rotasi tidak memengaruhi status node atau aplikasi Anda.

Kami menyarankan Anda menggunakan satu aktivasi hibrida AWS SSM per kluster EKS untuk cakupan `ssm:DeregisterManagedInstance` izin AWS SSM dari peran IAM Hybrid Nodes agar hanya dapat membatalkan pendaftaran instance yang terkait dengan aktivasi hibrida SSM Anda. AWS Dalam contoh di halaman ini, tag dengan ARN cluster EKS digunakan, yang dapat digunakan untuk memetakan aktivasi hibrida AWS SSM Anda ke cluster EKS. Sebagai alternatif, Anda dapat menggunakan tag dan metode pilihan Anda untuk melingkupi izin AWS SSM berdasarkan batasan dan persyaratan izin Anda. `REGISTRATION_LIMIT`Opsi dalam perintah di bawah ini adalah bilangan bulat yang digunakan untuk membatasi jumlah mesin yang dapat menggunakan aktivasi hibrida AWS SSM (misalnya) `10`

```
aws ssm create-activation \
     --region AWS_REGION \
     --default-instance-name eks-hybrid-nodes \
     --description "Activation for EKS hybrid nodes" \
     --iam-role AmazonEKSHybridNodesRole \
     --tags Key=EKSClusterARN,Value=arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME \
     --registration-limit REGISTRATION_LIMIT
```

Tinjau instruksi tentang [Buat aktivasi hybrid untuk mendaftarkan node dengan Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-activation-managed-nodes.html) untuk informasi lebih lanjut tentang pengaturan konfigurasi yang tersedia untuk aktivasi hibrida AWS SSM.

## Siapkan Peran AWS IAM Di Mana Saja
<a name="hybrid-nodes-iam-roles-anywhere"></a>

Ikuti petunjuk di [Memulai Peran IAM Di Mana Saja](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) di Panduan Pengguna IAM Roles Anywhere untuk menyiapkan jangkar kepercayaan dan profil yang akan Anda gunakan untuk kredenal IAM sementara untuk peran IAM Hybrid Nodes Anda. Saat Anda membuat profil, Anda dapat membuatnya tanpa menambahkan peran apa pun. Anda dapat membuat profil ini, kembali ke langkah-langkah ini untuk membuat peran IAM Hybrid Nodes Anda, dan kemudian menambahkan peran Anda ke profil Anda setelah dibuat. Anda dapat menggunakan AWS CloudFormation langkah-langkah selanjutnya di halaman ini untuk menyelesaikan penyiapan IAM Roles Anywhere Anda untuk node hybrid.

Saat Anda menambahkan peran IAM Hybrid Nodes ke profil Anda, pilih **Terima nama sesi peran kustom di panel Nama** **sesi peran kustom** di bagian bawah halaman **Edit profil** di konsol AWS IAM Roles Anywhere. Ini sesuai dengan bidang [acceptRoleSessionNama](https://docs.aws.amazon.com/rolesanywhere/latest/APIReference/API_CreateProfile.html#rolesanywhere-CreateProfile-request-acceptRoleSessionName) `CreateProfile` API. Ini memungkinkan Anda untuk memberikan nama node khusus untuk node hybrid Anda dalam konfigurasi yang Anda berikan `nodeadm` selama proses bootstrap. Meneruskan nama node kustom selama `nodeadm init` proses diperlukan. Anda dapat memperbarui profil Anda untuk menerima nama sesi peran khusus setelah membuat profil Anda.

Anda dapat mengonfigurasi durasi validitas kredensi dengan AWS IAM Roles Anywhere melalui bidang DurationSeconds pada profil IAM Roles [Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/authentication-create-session#credentials-object) Anda. AWS Durasi default adalah 1 jam dengan maksimal 12 jam. `MaxSessionDuration`Pengaturan pada peran IAM Hybrid Nodes Anda harus lebih besar dari `durationSeconds` pengaturan pada profil AWS IAM Roles Anywhere Anda. Untuk informasi selengkapnya`MaxSessionDuration`, lihat [dokumentasi UpdateRole API](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_UpdateRole.html).

Sertifikat dan kunci per mesin yang Anda hasilkan dari otoritas sertifikat (CA) Anda harus ditempatkan di `/etc/iam/pki` direktori pada setiap node hibrida dengan nama file `server.pem` untuk sertifikat dan `server.key` untuk kunci.

## Buat peran IAM Hybrid Nodes
<a name="hybrid-nodes-create-role"></a>

Untuk menjalankan langkah-langkah di bagian ini, prinsipal IAM yang menggunakan AWS konsol atau AWS CLI harus memiliki izin berikut.
+  `iam:CreatePolicy` 
+  `iam:CreateRole` 
+  `iam:AttachRolePolicy` 
+ Jika menggunakan Peran AWS IAM Di Mana Saja
  +  `rolesanywhere:CreateTrustAnchor` 
  +  `rolesanywhere:CreateProfile` 
  +  `iam:PassRole` 

### AWS CloudFormation
<a name="hybrid-nodes-creds-cloudformation"></a>

Instal dan konfigurasikan AWS CLI, jika Anda belum melakukannya. Lihat [Menginstal atau memperbarui ke versi terakhir AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Langkah-langkah untuk aktivasi hibrida AWS SSM** 

 CloudFormation Tumpukan membuat Peran IAM Hybrid Nodes dengan izin yang diuraikan di atas. CloudFormation Template tidak membuat aktivasi hibrida AWS SSM.

1. Unduh CloudFormation template AWS SSM untuk node hybrid:

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ssm-cfn.yaml'
   ```

1. Buat `cfn-ssm-parameters.json` dengan opsi berikut:

   1. Ganti `ROLE_NAME` dengan nama untuk peran IAM Hybrid Nodes Anda. Secara default, CloudFormation template digunakan `AmazonEKSHybridNodesRole` sebagai nama peran yang dibuatnya jika Anda tidak menentukan nama.

   1. Ganti `TAG_KEY` dengan kunci tag sumber daya AWS SSM yang Anda gunakan saat membuat aktivasi hibrida AWS SSM Anda. Kombinasi kunci tag dan nilai tag digunakan dalam kondisi untuk hanya mengizinkan peran IAM Hybrid Nodes `ssm:DeregisterManagedInstance` untuk membatalkan pendaftaran instance terkelola AWS SSM yang terkait dengan aktivasi hibrida SSM Anda. AWS Dalam CloudFormation template, `TAG_KEY` default ke. `EKSClusterARN`

   1. Ganti `TAG_VALUE` dengan nilai tag sumber daya AWS SSM yang Anda gunakan saat membuat aktivasi hibrida AWS SSM Anda. Kombinasi kunci tag dan nilai tag digunakan dalam kondisi untuk hanya mengizinkan peran IAM Hybrid Nodes `ssm:DeregisterManagedInstance` untuk membatalkan pendaftaran instance terkelola AWS SSM yang terkait dengan aktivasi hibrida SSM Anda. AWS Jika Anda menggunakan default `TAG_KEY` dari`EKSClusterARN`, maka berikan ARN cluster EKS Anda sebagai ARN. `TAG_VALUE` Kluster EKS ARNs memiliki format` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "SSMDeregisterConditionTagKey": "TAG_KEY",
          "SSMDeregisterConditionTagValue": "TAG_VALUE"
        }
      }
      ```

1. Menyebarkan CloudFormation tumpukan. Ganti `STACK_NAME` dengan nama Anda untuk CloudFormation tumpukan.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ssm-cfn.yaml \
       --parameter-overrides file://cfn-ssm-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

 **Langkah-langkah untuk Peran AWS IAM Di Mana Saja** 

 CloudFormation Tumpukan membuat jangkar kepercayaan AWS IAM Roles Anywhere dengan certificate authority (CA) yang Anda konfigurasikan, membuat profil AWS IAM Roles Anywhere, dan membuat peran IAM Hybrid Nodes dengan izin yang diuraikan sebelumnya.

1. Untuk mengatur otoritas sertifikat (CA)

   1. Untuk menggunakan sumber daya CA AWS Pribadi, buka [konsol AWS Private Certificate Authority](https://console.aws.amazon.com/acm-pca/home). Ikuti petunjuk di [Panduan Pengguna CA AWS Pribadi](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html).

   1. Untuk menggunakan CA eksternal, ikuti instruksi yang diberikan oleh CA. Anda memberikan badan sertifikat di langkah selanjutnya.

   1. Sertifikat yang dikeluarkan dari publik CAs tidak dapat digunakan sebagai jangkar kepercayaan.

1. Unduh CloudFormation template AWS IAM Roles Anywhere untuk node hybrid

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-ira-cfn.yaml'
   ```

1. Buat `cfn-iamra-parameters.json` dengan opsi berikut:

   1. Ganti `ROLE_NAME` dengan nama untuk peran IAM Hybrid Nodes Anda. Secara default, CloudFormation template digunakan `AmazonEKSHybridNodesRole` sebagai nama peran yang dibuatnya jika Anda tidak menentukan nama.

   1. Ganti `CERT_ATTRIBUTE` dengan atribut sertifikat per-mesin yang secara unik mengidentifikasi host Anda. Atribut certificate yang Anda gunakan harus cocok dengan nodeName yang Anda gunakan untuk `nodeadm` konfigurasi saat Anda menghubungkan node hybrid ke cluster Anda. Untuk informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md). Secara default, CloudFormation template menggunakan `${aws:PrincipalTag/x509Subject/CN}` sebagai`CERT_ATTRIBUTE`, yang sesuai dengan bidang CN sertifikat per-mesin Anda. Anda bisa lolos `$(aws:PrincipalTag/x509SAN/Name/CN}` sebagai milik Anda`CERT_ATTRIBUTE`.

   1. Ganti `CA_CERT_BODY` dengan badan sertifikat CA Anda tanpa jeda baris. `CA_CERT_BODY`Harus dalam format Privacy Enhanced Mail (PEM). Jika Anda memiliki sertifikat CA dalam format PEM, hapus jeda baris dan MULAI SERTIFIKAT dan AKHIR SERTIFIKAT sebelum menempatkan badan sertifikat CA di `cfn-iamra-parameters.json` file Anda.

      ```
      {
        "Parameters": {
          "RoleName": "ROLE_NAME",
          "CertAttributeTrustPolicy": "CERT_ATTRIBUTE",
          "CABundleCert": "CA_CERT_BODY"
        }
      }
      ```

1. Menyebarkan CloudFormation template. Ganti `STACK_NAME` dengan nama Anda untuk CloudFormation tumpukan.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --template-file hybrid-ira-cfn.yaml \
       --parameter-overrides file://cfn-iamra-parameters.json
       --capabilities CAPABILITY_NAMED_IAM
   ```

### AWS CLI
<a name="hybrid-nodes-creds-awscli"></a>

Instal dan konfigurasikan AWS CLI, jika Anda belum melakukannya. Lihat [Menginstal atau memperbarui ke versi terakhir AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

 **Buat EKS Jelaskan Kebijakan Cluster** 

1. Buat file bernama `eks-describe-cluster-policy.json` dengan konten berikut:

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "eks:DescribeCluster"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

1. Buat kebijakan dengan perintah berikut:

   ```
   aws iam create-policy \
       --policy-name EKSDescribeClusterPolicy \
       --policy-document file://eks-describe-cluster-policy.json
   ```

 **Langkah-langkah untuk aktivasi hibrida AWS SSM** 

1. Buat file bernama `eks-hybrid-ssm-policy.json` dengan isi berikut ini. Kebijakan tersebut memberikan izin untuk dua tindakan `ssm:DescribeInstanceInformation` dan`ssm:DeregisterManagedInstance`. Kebijakan ini membatasi `ssm:DeregisterManagedInstance` izin untuk instans terkelola AWS SSM yang terkait dengan aktivasi hibrida AWS SSM Anda berdasarkan tag sumber daya yang Anda tentukan dalam kebijakan kepercayaan Anda.

   1. Ganti `AWS_REGION` dengan AWS Region untuk aktivasi hybrid AWS SSM Anda.

   1. Ganti `AWS_ACCOUNT_ID` dengan ID AWS akun Anda.

   1. Ganti `TAG_KEY` dengan kunci tag sumber daya AWS SSM yang Anda gunakan saat membuat aktivasi hibrida AWS SSM Anda. Kombinasi kunci tag dan nilai tag digunakan dalam kondisi untuk hanya mengizinkan peran IAM Hybrid Nodes `ssm:DeregisterManagedInstance` untuk membatalkan pendaftaran instance terkelola AWS SSM yang terkait dengan aktivasi hibrida SSM Anda. AWS Dalam CloudFormation template, `TAG_KEY` default ke. `EKSClusterARN`

   1. Ganti `TAG_VALUE` dengan nilai tag sumber daya AWS SSM yang Anda gunakan saat membuat aktivasi hibrida AWS SSM Anda. Kombinasi kunci tag dan nilai tag digunakan dalam kondisi untuk hanya mengizinkan peran IAM Hybrid Nodes `ssm:DeregisterManagedInstance` untuk membatalkan pendaftaran instance terkelola AWS SSM yang terkait dengan aktivasi hibrida SSM Anda. AWS Jika Anda menggunakan default `TAG_KEY` dari`EKSClusterARN`, maka berikan ARN cluster EKS Anda sebagai ARN. `TAG_VALUE` Kluster EKS ARNs memiliki format` arn:aws: eks:AWS_REGION:AWS_ACCOUNT_ID:cluster/CLUSTER_NAME`.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "ssm:DescribeInstanceInformation",
                  "Resource": "*"
              },
              {
                  "Effect": "Allow",
                  "Action": "ssm:DeregisterManagedInstance",
                  "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
                  "Condition": {
                      "StringEquals": {
                          "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                      }
                  }
              }
          ]
      }
      ```

1. Buat kebijakan dengan perintah berikut

   ```
   aws iam create-policy \
       --policy-name EKSHybridSSMPolicy \
       --policy-document file://eks-hybrid-ssm-policy.json
   ```

1. Buat file bernama `eks-hybrid-ssm-trust.json`. Ganti `AWS_REGION` dengan AWS Wilayah aktivasi hibrida AWS SSM Anda dan `AWS_ACCOUNT_ID` dengan ID AWS akun Anda.

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Sid":"",
            "Effect":"Allow",
            "Principal":{
               "Service":"ssm.amazonaws.com"
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "StringEquals":{
                  "aws:SourceAccount":"123456789012"
               },
               "ArnEquals":{
                  "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
               }
            }
         }
      ]
   }
   ```

1. Buat peran dengan perintah berikut.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-ssm-trust.json
   ```

1. Lampirkan `EKSDescribeClusterPolicy` dan yang `EKSHybridSSMPolicy` Anda buat di langkah sebelumnya. Ganti `AWS_ACCOUNT_ID` dengan ID AWS akun Anda.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSHybridSSMPolicy
   ```

1. Lampirkan `AmazonEC2ContainerRegistryPullOnly` dan kebijakan yang `AmazonSSMManagedInstanceCore` AWS dikelola.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonSSMManagedInstanceCore
   ```

 **Langkah-langkah untuk Peran AWS IAM Di Mana Saja** 

Untuk menggunakan Peran AWS IAM Di Mana Saja, Anda harus menyiapkan jangkar kepercayaan AWS IAM Roles Anywhere sebelum membuat Peran IAM Hybrid Nodes. Lihat [Siapkan Peran AWS IAM Di Mana Saja](#hybrid-nodes-iam-roles-anywhere) untuk instruksi.

1. Buat file bernama `eks-hybrid-iamra-trust.json`. Ganti `TRUST_ANCHOR ARN` dengan ARN dari jangkar kepercayaan yang Anda buat di langkah-langkahnya. [Siapkan Peran AWS IAM Di Mana Saja](#hybrid-nodes-iam-roles-anywhere) Kondisi dalam kebijakan kepercayaan ini membatasi kemampuan IAM Roles Anywhere untuk mengambil peran AWS IAM Hybrid Nodes untuk bertukar kredenal IAM sementara hanya jika nama sesi peran cocok dengan CN dalam sertifikat x509 yang diinstal pada node hybrid Anda. Anda dapat menggunakan atribut sertifikat lain untuk mengidentifikasi node Anda secara unik. Atribut sertifikat yang Anda gunakan dalam kebijakan kepercayaan harus sesuai dengan yang `nodeName` Anda tetapkan dalam `nodeadm` konfigurasi Anda. Untuk informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": [
                   "sts:TagSession",
                   "sts:SetSourceIdentity"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "rolesanywhere.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "StringEquals": {
                       "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                       "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                   },
                   "ArnEquals": {
                       "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                   }
               }
           }
       ]
   }
   ```

1. Buat peran dengan perintah berikut.

   ```
   aws iam create-role \
       --role-name AmazonEKSHybridNodesRole \
       --assume-role-policy-document file://eks-hybrid-iamra-trust.json
   ```

1. Lampirkan yang `EKSDescribeClusterPolicy` Anda buat di langkah sebelumnya. Ganti `AWS_ACCOUNT_ID` dengan ID AWS akun Anda.

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::AWS_ACCOUNT_ID:policy/EKSDescribeClusterPolicy
   ```

1. Lampirkan kebijakan `AmazonEC2ContainerRegistryPullOnly` AWS terkelola

   ```
   aws iam attach-role-policy \
       --role-name AmazonEKSHybridNodesRole \
       --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
   ```

### Konsol Manajemen AWS
<a name="hybrid-nodes-creds-console"></a>

 **Buat EKS Jelaskan Kebijakan Cluster** 

1. Buka konsol [Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Di panel navigasi di sebelah kiri, pilih **Kebijakan**.

1. Pada halaman **Kebijakan**, pilih **Buat kebijakan**.

1. Pada halaman Tentukan izin, di panel Pilih layanan, pilih EKS.

   1. Filter tindakan untuk **DescribeCluster**dan pilih tindakan **DescribeCluster**Baca.

   1. Pilih **Berikutnya**.

1. Pada halaman **Review dan buat**

   1. Masukkan **nama Kebijakan** untuk kebijakan Anda seperti`EKSDescribeClusterPolicy`.

   1. Pilih **Buat kebijakan**.

 **Langkah-langkah untuk aktivasi hibrida AWS SSM** 

1. Buka konsol [Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Di panel navigasi di sebelah kiri, pilih **Kebijakan**.

1. Pada **halaman Kebijakan**, pilih **Buat kebijakan**.

1. Pada halaman **Tentukan izin**, di navigasi kanan atas **editor Kebijakan**, pilih **JSON**. Tempel cuplikan berikut. Ganti `AWS_REGION` dengan AWS Wilayah aktivasi hibrida AWS SSM Anda dan ganti `AWS_ACCOUNT_ID` dengan ID AWS akun Anda. Ganti `TAG_KEY` dan `TAG_VALUE` dengan kunci tag sumber daya AWS SSM yang Anda gunakan saat membuat aktivasi hibrida AWS SSM Anda.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "ssm:DescribeInstanceInformation",
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "ssm:DeregisterManagedInstance",
               "Resource": "arn:aws:ssm:us-east-1:123456789012:managed-instance/*",
               "Condition": {
                   "StringEquals": {
                       "ssm:resourceTag/TAG_KEY": "TAG_VALUE"
                   }
               }
           }
       ]
   }
   ```

   1. Pilih **Berikutnya**.

1. Pada halaman **Review dan Create**.

   1. Masukkan nama **Kebijakan** untuk kebijakan Anda seperti `EKSHybridSSMPolicy` 

   1. Pilih **Buat Kebijakan**.

1. Di panel navigasi sebelah kiri, pilih **Peran**.

1. Pada halaman **Peran**, pilih **Buat peran**.

1. Pada halaman **Pilih entitas tepercaya**, lakukan hal berikut:

   1. Di bagian Jenis **entitas tepercaya**, pilih **Kebijakan kepercayaan khusus**. Tempelkan berikut ini ke editor kebijakan kepercayaan kustom. Ganti `AWS_REGION` dengan AWS Wilayah aktivasi hibrida AWS SSM Anda dan `AWS_ACCOUNT_ID` dengan ID AWS akun Anda.

      ```
      {
         "Version":"2012-10-17",		 	 	 
         "Statement":[
            {
               "Sid":"",
               "Effect":"Allow",
               "Principal":{
                  "Service":"ssm.amazonaws.com"
               },
               "Action":"sts:AssumeRole",
               "Condition":{
                  "StringEquals":{
                     "aws:SourceAccount":"123456789012"
                  },
                  "ArnEquals":{
                     "aws:SourceArn":"arn:aws:ssm:us-east-1:123456789012:*"
                  }
               }
            }
         ]
      }
      ```

   1. Pilih Berikutnya.

1. Pada halaman **Tambahkan izin**, lampirkan kebijakan khusus atau lakukan hal berikut:

   1. Di kotak **Filter kebijakan**, masukkan`EKSDescribeClusterPolicy`, atau nama kebijakan yang Anda buat di atas. Pilih kotak centang di sebelah kiri nama kebijakan Anda di hasil penelusuran.

   1. Di kotak **Filter kebijakan**, masukkan`EKSHybridSSMPolicy`, atau nama kebijakan yang Anda buat di atas. Pilih kotak centang di sebelah kiri nama kebijakan Anda di hasil penelusuran.

   1. Di dalam kotak **Filter kebijakan**, masukkan `AmazonEC2ContainerRegistryPullOnly`. Pilih kotak centang di sebelah kiri `AmazonEC2ContainerRegistryPullOnly` dalam hasil pencarian.

   1. Di dalam kotak **Filter kebijakan**, masukkan `AmazonSSMManagedInstanceCore`. Pilih kotak centang di sebelah kiri `AmazonSSMManagedInstanceCore` dalam hasil pencarian.

   1. Pilih **Berikutnya**.

1. Pada halaman **Nama, tinjau, dan buat**, lakukan hal berikut:

   1. Untuk **nama Peran**, masukkan nama unik untuk peran Anda, seperti`AmazonEKSHybridNodesRole`.

   1. Untuk **Deskripsi**, ganti teks saat ini dengan teks deskriptif seperti`Amazon EKS - Hybrid Nodes role`.

   1. Pilih **Buat peran**.

 **Langkah-langkah untuk Peran AWS IAM Di Mana Saja** 

Untuk menggunakan Peran AWS IAM Di Mana Saja, Anda harus menyiapkan jangkar kepercayaan AWS IAM Roles Anywhere sebelum membuat Peran IAM Hybrid Nodes. Lihat [Siapkan Peran AWS IAM Di Mana Saja](#hybrid-nodes-iam-roles-anywhere) untuk instruksi.

1. Buka konsol [Amazon IAM](https://console.aws.amazon.com/iam/home) 

1. Di panel navigasi sebelah kiri, pilih **Peran**.

1. Pada halaman **Peran**, pilih **Buat peran**.

1. Pada halaman **Pilih entitas tepercaya**, lakukan hal berikut:

   1. Di **bagian Jenis entitas tepercaya**, pilih **Kebijakan kepercayaan khusus**. Tempelkan berikut ini ke editor kebijakan kepercayaan kustom. Ganti `TRUST_ANCHOR ARN` dengan ARN dari jangkar kepercayaan yang Anda buat di langkah-langkahnya. [Siapkan Peran AWS IAM Di Mana Saja](#hybrid-nodes-iam-roles-anywhere) Kondisi dalam kebijakan kepercayaan ini membatasi kemampuan IAM Roles Anywhere untuk mengambil peran AWS IAM Hybrid Nodes untuk bertukar kredenal IAM sementara hanya jika nama sesi peran cocok dengan CN dalam sertifikat x509 yang diinstal pada node hybrid Anda. Anda dapat menggunakan atribut sertifikat lain untuk mengidentifikasi node Anda secara unik. Atribut sertifikat yang Anda gunakan dalam kebijakan trust harus sesuai dengan NodeName yang Anda tetapkan dalam konfigurasi nodeadm Anda. Untuk informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": [
                      "sts:TagSession",
                      "sts:SetSourceIdentity"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              },
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "rolesanywhere.amazonaws.com"
                  },
                  "Action": "sts:AssumeRole",
                  "Condition": {
                      "StringEquals": {
                          "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}",
                          "aws:PrincipalTag/x509Subject/CN": "${aws:PrincipalTag/x509Subject/CN}"
                      },
                      "ArnEquals": {
                          "aws:SourceArn": "arn:aws:rolesanywhere:us-east-1:123456789012:trust-anchor/TA_ID"
                      }
                  }
              }
          ]
      }
      ```

   1. Pilih Berikutnya.

1. Pada halaman **Tambahkan izin**, lampirkan kebijakan khusus atau lakukan hal berikut:

   1. Di kotak **Filter kebijakan**, masukkan`EKSDescribeClusterPolicy`, atau nama kebijakan yang Anda buat di atas. Pilih kotak centang di sebelah kiri nama kebijakan Anda di hasil penelusuran.

   1. Di dalam kotak **Filter kebijakan**, masukkan `AmazonEC2ContainerRegistryPullOnly`. Pilih kotak centang di sebelah kiri `AmazonEC2ContainerRegistryPullOnly` dalam hasil pencarian.

   1. Pilih **Berikutnya**.

1. Pada halaman **Nama, tinjau, dan buat**, lakukan hal berikut:

   1. Untuk **nama Peran**, masukkan nama unik untuk peran Anda, seperti`AmazonEKSHybridNodesRole`.

   1. Untuk **Deskripsi**, ganti teks saat ini dengan teks deskriptif seperti`Amazon EKS - Hybrid Nodes role`.

   1. Pilih **Buat peran**.

# Buat klaster Amazon EKS dengan node hybrid
<a name="hybrid-nodes-cluster-create"></a>

Topik ini memberikan ikhtisar opsi yang tersedia dan menjelaskan apa yang harus dipertimbangkan saat Anda membuat klaster Amazon EKS berkemampuan node hibrida. EKS Hybrid Nodes memiliki dukungan [versi Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) yang sama dengan cluster Amazon EKS dengan node cloud, termasuk dukungan standar dan diperpanjang.

Jika Anda tidak berencana menggunakan EKS Hybrid Nodes, lihat dokumentasi klaster Amazon EKS utama yang membuat di[Buat kluster Amazon EKS](create-cluster.md).

## Prasyarat
<a name="hybrid-nodes-cluster-create-prep"></a>
+ [Pengaturan prasyarat untuk node hybrid](hybrid-nodes-prereqs.md)Selesai. Sebelum Anda membuat klaster berkemampuan node hibrid, node lokal dan pod Anda harus diidentifikasi secara opsional CIDRs , VPC dan subnet Anda dibuat sesuai dengan persyaratan EKS, dan persyaratan node hibrid, dan grup keamanan Anda dengan aturan masuk untuk pod lokal dan opsional Anda. CIDRs Untuk informasi lebih lanjut tentang prasyarat ini, lihat. [Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md)
+ Versi terbaru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda. Untuk memeriksa versi Anda saat ini, gunakan`aws --version`. Package manager seperti yum, apt-get, atau Homebrew untuk macOS seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat [Menginstal atau memperbarui ke versi terakhir CLI dan Mengkonfigurasi pengaturan untuk AWSAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [di Panduan Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) Antarmuka Baris AWS Perintah.
+ [Prinsipal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) dengan izin untuk membuat peran IAM dan melampirkan kebijakan, serta membuat dan mendeskripsikan kluster EKS

## Pertimbangan-pertimbangan
<a name="hybrid-nodes-cluster-create-consider"></a>
+ Cluster Anda harus menggunakan salah satu `API` atau `API_AND_CONFIG_MAP` untuk mode otentikasi cluster.
+ Cluster Anda harus menggunakan keluarga IPv4 alamat.
+ Cluster Anda harus menggunakan konektivitas titik akhir klaster Publik atau Pribadi. Cluster Anda tidak dapat menggunakan konektivitas endpoint klaster “Publik dan Pribadi”, karena endpoint server Amazon EKS Kubernetes API akan menyelesaikan ke publik IPs untuk node hybrid yang berjalan di luar VPC Anda.
+ Otentikasi OIDC didukung untuk kluster EKS dengan node hybrid.
+ Anda dapat menambahkan, mengubah, atau menghapus konfigurasi node hybrid dari cluster yang ada. Untuk informasi selengkapnya, lihat [Aktifkan node hibrid pada kluster Amazon EKS yang ada atau ubah konfigurasi](hybrid-nodes-cluster-update.md).

## Langkah 1: Buat peran IAM cluster
<a name="hybrid-nodes-cluster-create-iam"></a>

Jika Anda sudah memiliki peran IAM cluster, atau Anda akan membuat cluster Anda dengan `eksctl` atau AWS CloudFormation, maka Anda dapat melewati langkah ini. Secara default, `eksctl` dan AWS CloudFormation template membuat peran IAM cluster untuk Anda.

1. Jalankan perintah berikut untuk membuat file JSON kebijakan kepercayaan IAM.

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "eks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Buat peran IAM cluster Amazon EKS. Jika perlu, kata pengantar eks-cluster-role-trust -policy.json dengan jalur di komputer Anda tempat Anda menulis file di langkah sebelumnya. Perintah tersebut mengaitkan kebijakan kepercayaan yang Anda buat pada langkah sebelumnya dengan peran tersebut. Untuk membuat peran IAM, [prinsipal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) yang membuat peran harus diberi `iam:CreateRole` tindakan (izin).

   ```
   aws iam create-role \
       --role-name myAmazonEKSClusterRole \
       --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
   ```

1. Anda dapat menetapkan kebijakan terkelola Amazon EKS atau membuat kebijakan kustom Anda sendiri. Untuk izin minimum yang harus Anda gunakan dalam kebijakan kustom Anda, lihat[IAM role simpul Amazon EKS](create-node-role.md). Lampirkan kebijakan terkelola Amazon EKS yang diberi nama `AmazonEKSClusterPolicy` ke peran tersebut. Untuk melampirkan kebijakan IAM ke kepala sekolah [IAM, prinsipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) yang melampirkan kebijakan harus diberikan salah satu tindakan IAM berikut (izin): atau. `iam:AttachUserPolicy` `iam:AttachRolePolicy`

   ```
   aws iam attach-role-policy \
       --policy-arn arn:aws: iam::aws:policy/AmazonEKSClusterPolicy \
       --role-name myAmazonEKSClusterRole
   ```

## Langkah 2: Buat cluster berkemampuan node hybrid
<a name="hybrid-nodes-cluster-create-cluster"></a>

Anda dapat membuat cluster dengan menggunakan:
+  [eksctl](#hybrid-nodes-cluster-create-eksctl) 
+  [AWS CloudFormation](#hybrid-nodes-cluster-create-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-create-cli) 
+  [Konsol Manajemen AWS](#hybrid-nodes-cluster-create-console) 

### Buat cluster berkemampuan node hybrid - eksctl
<a name="hybrid-nodes-cluster-create-eksctl"></a>

Anda perlu menginstal versi terbaru dari alat baris `eksctl` perintah. Untuk menginstal atau memperbarui`eksctl`, lihat [Instalasi](https://eksctl.io/installation) dalam `eksctl` dokumentasi.

1. Buat `cluster-config.yaml` untuk menentukan cluster Amazon IPv4 EKS berkemampuan node hybrid. Buat penggantian berikut di Anda`cluster-config.yaml`. Untuk daftar lengkap pengaturan, lihat dokumentasi [eksctl](https://eksctl.io/getting-started/).

   1. Ganti `CLUSTER_NAME` dengan nama untuk cluster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil) dan tanda hubung. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat klaster.

   1. Ganti `AWS_REGION` dengan AWS Region tempat Anda ingin membuat cluster Anda.

   1. Ganti `K8S_VERSION` dengan [versi yang didukung Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

   1. Ganti `CREDS_PROVIDER` dengan `ssm` atau `ira` berdasarkan penyedia kredensi yang Anda konfigurasikan dalam langkah-langkahnya. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

   1. Ganti `CA_BUNDLE_CERT` jika penyedia kredensi Anda disetel ke`ira`, yang menggunakan AWS IAM Roles Anywhere sebagai penyedia kredensi. CA\$1BUNDLE\$1CERT adalah badan sertifikat otoritas sertifikat (CA) dan tergantung pada pilihan CA Anda. Sertifikat harus dalam format Privacy Enhanced Mail (PEM).

   1. Ganti `GATEWAY_ID` dengan ID gateway pribadi virtual atau gateway transit Anda untuk dilampirkan ke VPC Anda.

   1. Ganti `REMOTE_NODE_CIDRS` dengan simpul lokal CIDR untuk node hibrid Anda.

   1. Ganti `REMOTE_POD_CIDRS` dengan pod CIDR lokal untuk beban kerja yang berjalan pada node hybrid atau hapus baris dari konfigurasi Anda jika Anda tidak menjalankan webhook pada node hybrid. Anda harus mengonfigurasi `REMOTE_POD_CIDRS` jika CNI Anda tidak menggunakan Network Address Translation (NAT) atau menyamar untuk alamat IP pod saat lalu lintas pod meninggalkan host lokal Anda. Anda harus mengonfigurasi `REMOTE_POD_CIDRS` jika Anda menjalankan webhook pada node hybrid, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) untuk informasi lebih lanjut.

   1. Blok CIDR node dan pod lokal Anda harus memenuhi persyaratan berikut:

      1. Berada dalam salah satu rentang IPv4 RFC-1918:`10.0.0.0/8`,, atau `172.16.0.0/12``192.168.0.0/16`, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598:. `100.64.0.0/10`

      1. Tidak tumpang tindih satu sama lain, `VPC CIDR` untuk klaster Anda, atau CIDR layanan Kubernetes Anda IPv4 

         ```
         apiVersion: eksctl.io/v1alpha5
         kind: ClusterConfig
         
         metadata:
           name: CLUSTER_NAME
           region: AWS_REGION
           version: "K8S_VERSION"
         
         remoteNetworkConfig:
           iam:
             provider: CREDS_PROVIDER # default SSM, can also be set to IRA
             # caBundleCert: CA_BUNDLE_CERT
           vpcGatewayID: GATEWAY_ID
           remoteNodeNetworks:
           - cidrs: ["REMOTE_NODE_CIDRS"]
           remotePodNetworks:
           - cidrs: ["REMOTE_POD_CIDRS"]
         ```

1. Jalankan perintah berikut:

   ```
   eksctl create cluster -f cluster-config.yaml
   ```

   Penyediaan klaster memerlukan waktu beberapa menit. Saat cluster sedang dibuat, beberapa baris output muncul. Baris terakhir output mirip dengan baris contoh berikut.

   ```
   [✓]  EKS cluster "CLUSTER_NAME" in "REGION" region is ready
   ```

1. Lanjutkan dengan [Langkah 3: Perbarui kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Buat cluster berkemampuan node hybrid - AWS CloudFormation
<a name="hybrid-nodes-cluster-create-cfn"></a>

 CloudFormation Tumpukan membuat peran IAM kluster EKS dan cluster EKS dengan `RemoteNodeNetwork` dan `RemotePodNetwork` Anda tentukan. Ubah CloudFormation template Jika Anda perlu menyesuaikan pengaturan untuk kluster EKS Anda yang tidak terekspos di CloudFormation template.

1. Unduh CloudFormation template.

   ```
   curl -OL 'https://raw.githubusercontent.com/aws/eks-hybrid/refs/heads/main/example/hybrid-eks-cfn.yaml'
   ```

1. Buat `cfn-eks-parameters.json` dan tentukan konfigurasi Anda untuk setiap nilai.

   1.  `CLUSTER_NAME`: nama cluster EKS yang akan dibuat

   1.  `CLUSTER_ROLE_NAME`: nama peran IAM cluster EKS yang akan dibuat. Default dalam template adalah “EKSClusterPeran”.

   1.  `SUBNET1_ID`: ID subnet pertama yang Anda buat dalam langkah-langkah prasyarat

   1.  `SUBNET2_ID`: ID subnet kedua yang Anda buat dalam langkah-langkah prasyarat

   1.  `SG_ID`: ID grup keamanan yang Anda buat dalam langkah-langkah prasyarat

   1.  `REMOTE_NODE_CIDRS`: simpul lokal CIDR untuk node hybrid Anda

   1.  `REMOTE_POD_CIDRS`: pod CIDR lokal untuk beban kerja yang berjalan pada node hybrid. Anda harus mengonfigurasi `REMOTE_POD_CIDRS` jika CNI Anda tidak menggunakan Network Address Translation (NAT) atau menyamar untuk alamat IP pod saat lalu lintas pod meninggalkan host lokal Anda. Anda harus mengonfigurasi `REMOTE_POD_CIDRS` jika Anda menjalankan webhook pada node hybrid, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) untuk informasi lebih lanjut.

   1. Blok CIDR node dan pod lokal Anda harus memenuhi persyaratan berikut:

      1. Berada dalam salah satu rentang IPv4 RFC-1918:`10.0.0.0/8`,, atau `172.16.0.0/12``192.168.0.0/16`, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598:. `100.64.0.0/10`

      1. Tidak tumpang tindih satu sama lain, `VPC CIDR` untuk klaster Anda, atau CIDR layanan Kubernetes Anda. IPv4 

   1.  `CLUSTER_AUTH`: mode otentikasi cluster untuk cluster Anda. Nilai yang valid adalah `API` dan `API_AND_CONFIG_MAP`. Default dalam template adalah`API_AND_CONFIG_MAP`.

   1.  `CLUSTER_ENDPOINT`: konektivitas titik akhir cluster untuk cluster Anda. Nilai yang valid adalah “Publik” dan “Pribadi”. Default dalam template adalah Private, yang berarti Anda hanya akan dapat terhubung ke endpoint API Kubernetes dari dalam VPC Anda.

   1.  `K8S_VERSION`: versi Kubernetes yang akan digunakan untuk klaster Anda. Lihat [versi yang didukung Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html).

      ```
      {
        "Parameters": {
          "ClusterName": "CLUSTER_NAME",
          "ClusterRoleName": "CLUSTER_ROLE_NAME",
          "SubnetId1": "SUBNET1_ID",
          "SubnetId2": "SUBNET2_ID",
          "SecurityGroupId" "SG_ID",
          "RemoteNodeCIDR": "REMOTE_NODE_CIDRS",
          "RemotePodCIDR": "REMOTE_POD_CIDRS",
          "ClusterAuthMode": "CLUSTER_AUTH",
          "ClusterEndpointConnectivity": "CLUSTER_ENDPOINT",
          "K8sVersion": "K8S_VERSION"
        }
       }
      ```

1. Menyebarkan CloudFormation tumpukan. Ganti `STACK_NAME` dengan nama Anda untuk CloudFormation tumpukan dan `AWS_REGION` dengan AWS Wilayah Anda di mana cluster akan dibuat.

   ```
   aws cloudformation deploy \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --template-file hybrid-eks-cfn.yaml \
       --parameter-overrides file://cfn-eks-parameters.json \
       --capabilities CAPABILITY_NAMED_IAM
   ```

   Penyediaan klaster memerlukan waktu beberapa menit. Anda dapat memeriksa status tumpukan Anda dengan perintah berikut. Ganti `STACK_NAME` dengan nama Anda untuk CloudFormation tumpukan dan `AWS_REGION` dengan AWS Wilayah Anda di mana cluster akan dibuat.

   ```
   aws cloudformation describe-stacks \
       --stack-name STACK_NAME \
       --region AWS_REGION \
       --query 'Stacks[].StackStatus'
   ```

1. Lanjutkan dengan [Langkah 3: Perbarui kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Buat cluster berkemampuan node hybrid - CLI AWS
<a name="hybrid-nodes-cluster-create-cli"></a>

1. Jalankan perintah berikut untuk membuat cluster EKS berkemampuan node hybrid. Sebelum menjalankan perintah, ganti yang berikut ini dengan pengaturan Anda. Untuk daftar lengkap pengaturan, lihat [Buat kluster Amazon EKS](create-cluster.md) dokumentasi.

   1.  `CLUSTER_NAME`: nama cluster EKS yang akan dibuat

   1.  `AWS_REGION`: AWS Wilayah tempat cluster akan dibuat.

   1.  `K8S_VERSION`: versi Kubernetes yang akan digunakan untuk klaster Anda. Lihat versi yang didukung Amazon EKS.

   1.  `ROLE_ARN`: peran klaster Amazon EKS yang Anda konfigurasikan untuk cluster Anda. Lihat peran IAM klaster Amazon EKS untuk informasi selengkapnya.

   1.  `SUBNET1_ID`: ID subnet pertama yang Anda buat dalam langkah-langkah prasyarat

   1.  `SUBNET2_ID`: ID subnet kedua yang Anda buat dalam langkah-langkah prasyarat

   1.  `SG_ID`: ID grup keamanan yang Anda buat dalam langkah-langkah prasyarat

   1. Anda dapat menggunakan `API` dan `API_AND_CONFIG_MAP` untuk mode otentikasi akses cluster Anda. Pada perintah di bawah ini, mode otentikasi akses cluster diatur ke`API_AND_CONFIG_MAP`.

   1. Anda dapat menggunakan `endpointPrivateAccess` parameter `endpointPublicAccess` dan untuk mengaktifkan atau menonaktifkan akses publik dan pribadi ke titik akhir server Kubernetes API klaster Anda. Dalam perintah di bawah `endpointPublicAccess` ini diatur ke false dan `endpointPrivateAccess` diatur ke true.

   1.  `REMOTE_NODE_CIDRS`: simpul lokal CIDR untuk node hybrid Anda.

   1.  `REMOTE_POD_CIDRS`(opsional): CIDR pod lokal untuk beban kerja yang berjalan pada node hybrid.

   1. Blok CIDR node dan pod lokal Anda harus memenuhi persyaratan berikut:

      1. Berada dalam salah satu rentang IPv4 RFC-1918:`10.0.0.0/8`,, atau `172.16.0.0/12``192.168.0.0/16`, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598:. `100.64.0.0/10`

      1. Tidak tumpang tindih satu sama lain, `VPC CIDR` untuk cluster Amazon EKS Anda, atau CIDR layanan Kubernetes Anda. IPv4 

         ```
         aws eks create-cluster \
             --name CLUSTER_NAME \
             --region AWS_REGION \
             --kubernetes-version K8S_VERSION \
             --role-arn ROLE_ARN \
             --resources-vpc-config subnetIds=SUBNET1_ID,SUBNET2_ID,securityGroupIds=SG_ID,endpointPrivateAccess=true,endpointPublicAccess=false \
             --access-config authenticationMode=API_AND_CONFIG_MAP \
             --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
         ```

1. Dibutuhkan beberapa menit untuk menyediakan cluster. Anda dapat melakukan kueri status klaster Anda dengan perintah berikut. Ganti `CLUSTER_NAME` dengan nama cluster yang Anda buat dan `AWS_REGION` dengan AWS Wilayah tempat cluster dibuat. Jangan lanjutkan ke langkah berikutnya sampai output yang dikembalikan`ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Lanjutkan dengan [Langkah 3: Perbarui kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

### Buat cluster berkemampuan node hybrid - Konsol Manajemen AWS
<a name="hybrid-nodes-cluster-create-console"></a>

1. Buka konsol Amazon EKS di konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih Add cluster dan kemudian pilih Create.

1. Pada halaman Configure cluster, masukkan bidang-bidang berikut:

   1.  **Nama** — Nama untuk klaster Anda. Nama hanya dapat berisi karakter alfanumerik (peka huruf besar/kecil), tanda hubung, dan garis bawah. Itu harus dimulai dengan karakter alfanumerik dan tidak boleh lebih dari 100 karakter. Nama harus unik di dalam AWS Wilayah dan AWS akun tempat Anda membuat klaster.

   1.  Peran **IAM Cluster — Pilih peran** IAM klaster Amazon EKS yang Anda buat untuk memungkinkan bidang kontrol Kubernetes mengelola AWS sumber daya atas nama Anda.

   1.  **Versi Kubernetes** — Versi Kubernetes untuk digunakan untuk klaster Anda. Sebaiknya pilih versi terbaru, kecuali jika Anda memerlukan versi sebelumnya.

   1.  **Kebijakan peningkatan** - Pilih Extended atau Standard.

      1.  **Diperpanjang:** Opsi ini mendukung versi Kubernetes selama 26 bulan setelah tanggal rilis. Periode dukungan yang diperpanjang memiliki biaya per jam tambahan yang dimulai setelah periode dukungan standar berakhir. Ketika dukungan diperpanjang berakhir, cluster Anda akan otomatis ditingkatkan ke versi berikutnya.

      1.  **Standar:** Opsi ini mendukung versi Kubernetes selama 14 bulan setelah tanggal rilis. Tidak ada biaya tambahan. Ketika dukungan standar berakhir, cluster Anda akan otomatis ditingkatkan ke versi berikutnya.

   1.  **Akses cluster** - pilih untuk mengizinkan atau melarang akses administrator cluster dan pilih mode otentikasi. Mode otentikasi berikut didukung untuk cluster berkemampuan node hybrid.

      1.  **EKS API**: Cluster akan mencari prinsip IAM yang diautentikasi hanya dari entri akses EKS. APIs

      1.  **EKS API dan ConfigMap**: Cluster akan mendapatkan prinsipal IAM yang diautentikasi dari entri akses EKS dan. APIs `aws-auth` ConfigMap

   1.  **Enkripsi rahasia** — (Opsional) Pilih untuk mengaktifkan enkripsi rahasia rahasia Kubernetes menggunakan kunci KMS. Anda juga dapat mengaktifkan ini setelah Anda membuat cluster Anda. Sebelum Anda mengaktifkan kemampuan ini, pastikan Anda terbiasa dengan informasi di dalamnya[Enkripsi rahasia Kubernetes dengan KMS di cluster yang ada](enable-kms.md).

   1.  **ARC zonal shift** - Jika diaktifkan, EKS akan mendaftarkan cluster Anda dengan ARC zonal shift untuk memungkinkan Anda menggunakan zonal shift untuk mengalihkan lalu lintas aplikasi dari AZ.

   1.  **Tanda** — (Opsional) Tambahkan tanda apapun ke klaster Anda. Untuk informasi selengkapnya, lihat [Mengatur sumber daya Amazon EKS dengan tag](eks-using-tags.md).

   1. Setelah selesai dengan halaman ini, pilih **Berikutnya**.

1. Pada halaman **Tentukan jaringan**, pilih nilai untuk kolom berikut:

   1.  **VPC — Pilih VPC** yang sudah ada yang memenuhi dan persyaratan [Lihat persyaratan jaringan Amazon EKS untuk VPC dan subnet](network-reqs.md) [Amazon EKS](hybrid-nodes-prereqs.md) Hybrid Nodes. Sebelum memilih VPC, sebaiknya Anda memahami semua persyaratan dan pertimbangan dalam persyaratan jaringan View Amazon EKS untuk VPC, subnet, dan node hybrid. Anda tidak dapat mengubah VPC mana yang ingin Anda gunakan setelah pembuatan cluster. Jika tidak VPCs terdaftar, maka Anda harus membuatnya terlebih dahulu. Untuk informasi selengkapnya, lihat [Buat VPC Amazon untuk kluster Amazon EKS Anda](creating-a-vpc.md) dan [persyaratan jaringan Amazon EKS Hybrid Nodes](hybrid-nodes-prereqs.md).

   1.  **Subnet** — Secara default, semua subnet yang tersedia di VPC yang ditentukan di bidang sebelumnya telah dipilih sebelumnya. Anda harus memilih setidaknya dua.

   1.  **Grup keamanan** — (Opsional) Tentukan satu atau beberapa grup keamanan yang ingin Anda kaitkan Amazon EKS ke antarmuka jaringan yang dibuatnya. Setidaknya salah satu grup keamanan yang Anda tentukan harus memiliki aturan masuk untuk node lokal dan pod opsional. CIDRs Lihat [persyaratan jaringan Amazon EKS Hybrid Nodes](hybrid-nodes-networking.md) untuk informasi selengkapnya. Apakah Anda memilih grup keamanan atau tidak, Amazon EKS membuat grup keamanan yang memungkinkan komunikasi antara cluster dan VPC Anda. Amazon EKS mengaitkan grup keamanan ini, dan apa pun yang Anda pilih, ke antarmuka jaringan yang dibuatnya. Untuk informasi selengkapnya tentang grup keamanan klaster yang dibuat Amazon EKS, lihat [Lihat persyaratan grup keamanan Amazon EKS untuk cluster](sec-group-reqs.md) Anda dapat mengubah aturan di grup keamanan klaster yang dibuat Amazon EKS.

   1.  **Pilih keluarga alamat IP cluster** — Anda harus memilih klaster IPv4 berkemampuan node hibrida.

   1. **(Opsional) Pilih **Konfigurasi rentang alamat IP Layanan Kubernetes dan tentukan rentang** Layanan. IPv4 **

   1.  **Pilih Konfigurasi jaringan jarak jauh untuk mengaktifkan node hibrid** dan tentukan node dan pod lokal Anda CIDRs untuk node hybrid.

   1. Anda harus mengonfigurasi CIDR pod jarak jauh jika CNI Anda tidak menggunakan Network Address Translation (NAT) atau menyamar untuk alamat IP pod saat lalu lintas pod meninggalkan host lokal Anda. Anda harus mengkonfigurasi pod jarak jauh CIDR jika Anda menjalankan webhook pada node hybrid.

   1. Blok CIDR node dan pod lokal Anda harus memenuhi persyaratan berikut:

      1. Berada dalam salah satu rentang IPv4 RFC-1918:`10.0.0.0/8`,, atau `172.16.0.0/12``192.168.0.0/16`, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598:. `100.64.0.0/10`

      1. Tidak tumpang tindih satu sama lain, `VPC CIDR` untuk klaster Anda, atau CIDR layanan Kubernetes Anda IPv4 

   1. Untuk **akses endpoint Cluster**, pilih opsi. Setelah cluster Anda dibuat, Anda dapat mengubah opsi ini. Untuk cluster berkemampuan node hybrid, Anda harus memilih Publik atau Pribadi. Sebelum memilih opsi non-default, pastikan untuk membiasakan diri dengan opsi dan implikasinya. Untuk informasi selengkapnya, lihat [Titik akhir server API kluster](cluster-endpoint.md).

   1. Setelah selesai dengan halaman ini, pilih **Berikutnya**.

1. (Opsional) Pada halaman **Konfigurasi** observabilitas, pilih opsi pencatatan bidang Metrik dan Kontrol mana yang akan diaktifkan. Secara default, setiap jenis log dimatikan.

   1. Untuk informasi selengkapnya tentang opsi metrik Prometheus, lihat. [Pantau metrik klaster Anda dengan Prometheus](prometheus.md)

   1. Untuk informasi selengkapnya tentang opsi pencatatan kontrol EKS, lihat[Kirim log pesawat kontrol ke CloudWatch Log](control-plane-logs.md).

   1. Setelah selesai dengan halaman ini, pilih **Berikutnya**.

1. Pada halaman **Pilih add-on**, pilih add-on yang ingin Anda tambahkan ke cluster Anda.

   1. Anda dapat memilih add-on **Amazon EKS dan add-on AWS ** **Marketplace** sebanyak yang Anda butuhkan. Add-on Amazon EKS yang tidak kompatibel dengan node hybrid ditandai dengan “Tidak kompatibel dengan Hybrid Nodes” dan add-on memiliki aturan anti-afinitas untuk mencegahnya berjalan pada node hybrid. Lihat Mengonfigurasi add-on untuk node hybrid untuk informasi selengkapnya. Jika add-on ** AWS Marketplace** yang ingin Anda instal tidak terdaftar, Anda dapat mencari **add-on AWS Marketplace** yang tersedia dengan memasukkan teks di kotak pencarian. Anda juga dapat mencari berdasarkan **kategori**, **vendor**, atau **model harga** dan kemudian memilih add-on dari hasil pencarian.

   1. Beberapa add-on, seperti CoreDNS dan kube-proxy, diinstal secara default. Jika Anda menonaktifkan salah satu add-on default, ini dapat memengaruhi kemampuan Anda untuk menjalankan aplikasi Kubernetes.

   1. Setelah selesai dengan halaman ini, pilih`Next`.

1. Pada halaman **Konfigurasi pengaturan add-on yang dipilih**, pilih versi yang ingin Anda instal.

   1. Anda selalu dapat memperbarui ke versi yang lebih baru setelah pembuatan cluster. Anda dapat memperbarui konfigurasi setiap add-on setelah pembuatan cluster. Untuk informasi selengkapnya tentang mengonfigurasi add-on, lihat. [Perbarui add-on Amazon EKS](updating-an-add-on.md) Untuk versi add-on yang kompatibel dengan node hybrid, lihat[Konfigurasikan add-on untuk node hybrid](hybrid-nodes-add-ons.md).

   1. Setelah selesai dengan halaman ini, pilih Berikutnya.

1. Pada halaman **Tinjau dan buat**, tinjau informasi yang Anda masukkan atau pilih pada halaman sebelumnya. Jika Anda perlu melakukan perubahan, pilih **Edit**. Saat Anda puas, pilih **Buat**. Bidang **Status** menunjukkan **CREATING** saat cluster disediakan. Penyediaan klaster memerlukan waktu beberapa menit.

1. Lanjutkan dengan [Langkah 3: Perbarui kubeconfig](#hybrid-nodes-cluster-create-kubeconfig).

## Langkah 3: Perbarui kubeconfig
<a name="hybrid-nodes-cluster-create-kubeconfig"></a>

Jika Anda membuat cluster Anda menggunakan`eksctl`, maka Anda dapat melewati langkah ini. Ini karena `eksctl` sudah menyelesaikan langkah ini untuk Anda. Aktifkan `kubectl` untuk berkomunikasi dengan cluster Anda dengan menambahkan konteks baru ke file `kubectl` konfigurasi. Untuk informasi selengkapnya tentang cara membuat dan memperbarui file, lihat[Connect kubectl ke kluster EKS dengan membuat file kubeconfig](create-kubeconfig.md).

```
aws eks update-kubeconfig --name CLUSTER_NAME --region AWS_REGION
```

Contoh output adalah sebagai berikut.

```
Added new context arn:aws: eks:AWS_REGION:111122223333:cluster/CLUSTER_NAME to /home/username/.kube/config
```

Konfirmasikan komunikasi dengan cluster Anda dengan menjalankan perintah berikut.

```
kubectl get svc
```

Contoh output adalah sebagai berikut.

```
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   28h
```

## Langkah 4: Pengaturan cluster
<a name="_step_4_cluster_setup"></a>

Sebagai langkah selanjutnya, lihat [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md) untuk mengaktifkan akses untuk node hybrid Anda untuk bergabung dengan cluster Anda.

# Aktifkan node hibrid pada kluster Amazon EKS yang ada atau ubah konfigurasi
<a name="hybrid-nodes-cluster-update"></a>

Topik ini memberikan ikhtisar opsi yang tersedia dan menjelaskan apa yang harus dipertimbangkan saat Anda menambahkan, mengubah, atau menghapus konfigurasi node hibrida untuk klaster Amazon EKS.

Untuk mengaktifkan klaster Amazon EKS menggunakan node hibrid, tambahkan rentang CIDR alamat IP dari node lokal Anda dan jaringan pod opsional dalam konfigurasi. `RemoteNetworkConfig` EKS menggunakan daftar ini CIDRs untuk mengaktifkan konektivitas antara kluster dan jaringan lokal Anda. Untuk daftar lengkap opsi saat memperbarui konfigurasi cluster Anda, lihat [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)di *Referensi API Amazon EKS*.

Anda dapat melakukan salah satu tindakan berikut ke konfigurasi jaringan EKS Hybrid Nodes dalam sebuah cluster:
+  [Tambahkan konfigurasi jaringan jarak jauh untuk mengaktifkan EKS Hybrid Nodes di cluster yang ada.](#hybrid-nodes-cluster-enable-existing) 
+  [Tambahkan, ubah, atau hapus jaringan node jarak jauh atau jaringan pod jarak jauh di cluster yang ada.](#hybrid-nodes-cluster-update-config) 
+  [Hapus semua rentang CIDR jaringan node jarak jauh untuk menonaktifkan EKS Hybrid Nodes di cluster yang ada.](#hybrid-nodes-cluster-disable) 

## Prasyarat
<a name="hybrid-nodes-cluster-enable-prep"></a>
+ Sebelum mengaktifkan kluster Amazon EKS untuk node hibrida, pastikan lingkungan Anda memenuhi persyaratan yang diuraikan di[Pengaturan prasyarat untuk node hybrid](hybrid-nodes-prereqs.md), dan dirinci di[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md),[Siapkan sistem operasi untuk node hybrid](hybrid-nodes-os.md), dan. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)
+ Cluster Anda harus menggunakan keluarga IPv4 alamat.
+ Cluster Anda harus menggunakan salah satu `API` atau `API_AND_CONFIG_MAP` untuk mode otentikasi cluster. Proses untuk memodifikasi mode otentikasi cluster dijelaskan di. [Ubah mode otentikasi untuk menggunakan entri akses](setting-up-access-entries.md)
+ Kami menyarankan Anda menggunakan akses endpoint publik atau pribadi untuk endpoint server API Amazon EKS Kubernetes, tetapi tidak keduanya. Jika Anda memilih “Publik dan Pribadi”, endpoint server API Amazon EKS Kubernetes akan selalu menyelesaikan ke publik IPs untuk node hybrid yang berjalan di luar VPC Anda, yang dapat mencegah node hybrid Anda bergabung dengan cluster. Proses untuk memodifikasi akses jaringan ke cluster Anda dijelaskan di[Titik akhir server API kluster](cluster-endpoint.md).
+ Versi terbaru dari AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi pada perangkat Anda. Untuk memeriksa versi Anda saat ini, gunakan`aws --version`. Package manager seperti yum, apt-get, atau Homebrew untuk macOS seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat [Menginstal atau memperbarui ke versi terbaru CLI dan Mengkonfigurasi pengaturan untuk AWSAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [di Panduan Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) Antarmuka Baris AWS Perintah.
+ [Prinsipal IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal) dengan izin untuk menelepon [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)kluster Amazon EKS Anda.
+ Perbarui add-on ke versi yang kompatibel dengan node hybrid. Untuk versi add-on yang kompatibel dengan node hybrid, lihat[Konfigurasikan add-on untuk node hybrid](hybrid-nodes-add-ons.md).
+ Jika Anda menjalankan add-on yang tidak kompatibel dengan node hybrid, pastikan bahwa add-on [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)atau [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) memiliki aturan afinitas berikut untuk mencegah penyebaran ke node hybrid. Tambahkan aturan afinitas berikut jika belum ada.

  ```
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
  ```

## Pertimbangan-pertimbangan
<a name="hybrid-nodes-cluster-enable-consider"></a>

Objek `remoteNetworkConfig` JSON memiliki perilaku berikut selama pembaruan:
+ Setiap bagian konfigurasi yang ada yang tidak Anda tentukan tidak berubah. Jika Anda tidak menentukan salah satu dari `remoteNodeNetworks` atau`remotePodNetworks`, bagian itu akan tetap sama.
+ Jika Anda memodifikasi `remotePodNetworks` daftar `remoteNodeNetworks` atau daftar CIDRs, Anda harus menentukan daftar lengkap CIDRs yang Anda inginkan dalam konfigurasi akhir Anda. Saat Anda menentukan perubahan ke daftar `remoteNodeNetworks` atau `remotePodNetworks` CIDR, EKS menggantikan daftar asli selama pembaruan.
+ Blok CIDR node dan pod lokal Anda harus memenuhi persyaratan berikut:

  1. Berada dalam salah satu rentang IPv4 RFC-1918:10.0.0.0/8, 172.16.0.0/12, atau 192.168.0.0/16, atau dalam rentang CGNAT yang ditentukan oleh RFC 6598: `100.64.0.0/10` 

  1. Tidak saling tumpang tindih, semua CIDRs VPC untuk cluster Amazon EKS Anda, atau CIDR layanan IPv4 Kubernetes Anda.

## Aktifkan node hybrid pada cluster yang ada
<a name="hybrid-nodes-cluster-enable-existing"></a>

Anda dapat mengaktifkan EKS Hybrid Nodes di cluster yang ada dengan menggunakan:
+  [AWS CloudFormation](#hybrid-nodes-cluster-enable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-enable-cli) 
+  [Konsol Manajemen AWS](#hybrid-nodes-cluster-enable-console) 

### Aktifkan Node Hibrid EKS di cluster yang ada - AWS CloudFormation
<a name="hybrid-nodes-cluster-enable-cfn"></a>

1. Untuk mengaktifkan EKS Hybrid Nodes di cluster Anda, tambahkan `RemoteNodeNetwork` dan (opsional) `RemotePodNetwork` ke CloudFormation template Anda dan perbarui tumpukan. Perhatikan bahwa `RemoteNodeNetwork` adalah daftar dengan maksimum satu `Cidrs` item dan `Cidrs` adalah daftar beberapa rentang IP CIDR.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [RemoteNodeCIDR]
     RemotePodNetworks:
       - Cidrs: [RemotePodCIDR]
   ```

1. Lanjutkan ke [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).

### Aktifkan Node Hibrid EKS di cluster yang ada - AWS CLI
<a name="hybrid-nodes-cluster-enable-cli"></a>

1. Jalankan perintah berikut `RemoteNetworkConfig` untuk mengaktifkan EKS Hybrid Nodes untuk kluster EKS Anda. Sebelum menjalankan perintah, ganti yang berikut ini dengan pengaturan Anda. Untuk daftar lengkap pengaturan, lihat [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)di *Referensi API Amazon EKS*.

   1.  `CLUSTER_NAME`: nama cluster EKS untuk diperbarui.

   1.  `AWS_REGION`: AWS Wilayah tempat cluster EKS berjalan.

   1.  `REMOTE_NODE_CIDRS`: simpul lokal CIDR untuk node hybrid Anda.

   1.  `REMOTE_POD_CIDRS`(opsional): CIDR pod lokal untuk beban kerja yang berjalan pada node hybrid.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
      ```

1. Dibutuhkan beberapa menit untuk memperbarui cluster. Anda dapat melakukan kueri status klaster Anda dengan perintah berikut. Ganti `CLUSTER_NAME` dengan nama cluster yang Anda modifikasi dan `AWS_REGION` dengan AWS Wilayah tempat cluster berjalan. Jangan lanjutkan ke langkah berikutnya sampai output yang dikembalikan`ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. Lanjutkan ke [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).

### Aktifkan Node Hibrid EKS di cluster yang ada - Konsol Manajemen AWS
<a name="hybrid-nodes-cluster-enable-console"></a>

1. Buka konsol Amazon EKS di konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih nama klaster untuk menampilkan informasi klaster Anda.

1. Pilih tab **Jaringan** dan pilih **Kelola**.

1. Di dropdown, pilih Jaringan **jarak jauh**.

1.  **Pilih Konfigurasi jaringan jarak jauh untuk mengaktifkan node hibrid** dan tentukan node dan pod lokal Anda CIDRs untuk node hybrid.

1. Pilih **Simpan perubahan** untuk menyelesaikan. Tunggu status klaster kembali ke **Aktif**.

1. Lanjutkan ke [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).

## Perbarui konfigurasi node hybrid di cluster yang ada
<a name="hybrid-nodes-cluster-update-config"></a>

Anda dapat memodifikasi `remoteNetworkConfig` di cluster hybrid yang ada dengan menggunakan salah satu dari berikut ini:
+  [AWS CloudFormation](#hybrid-nodes-cluster-update-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-update-cli) 
+  [Konsol Manajemen AWS](#hybrid-nodes-cluster-update-console) 

### Perbarui konfigurasi hybrid di cluster yang ada - AWS CloudFormation
<a name="hybrid-nodes-cluster-update-cfn"></a>

1. Perbarui CloudFormation template Anda dengan nilai CIDR jaringan baru.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [NEW_REMOTE_NODE_CIDRS]
     RemotePodNetworks:
       - Cidrs: [NEW_REMOTE_POD_CIDRS]
   ```
**catatan**  
Saat memperbarui `RemoteNodeNetworks` atau daftar `RemotePodNetworks` CIDR, sertakan semua CIDRs (baru dan yang sudah ada). EKS menggantikan seluruh daftar selama pembaruan. Menghilangkan bidang ini dari permintaan pembaruan mempertahankan konfigurasi yang ada.

1. Perbarui CloudFormation tumpukan Anda dengan template yang dimodifikasi dan tunggu pembaruan tumpukan selesai.

### Perbarui konfigurasi hybrid di cluster yang ada - AWS CLI
<a name="hybrid-nodes-cluster-update-cli"></a>

1. Untuk memodifikasi jaringan jarak jauh CIDRs, jalankan perintah berikut. Ganti nilai dengan pengaturan Anda:

   ```
   aws eks update-cluster-config
   --name CLUSTER_NAME
   --region AWS_REGION
   --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["NEW_REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["NEW_REMOTE_POD_CIDRS"]}]}'
   ```
**catatan**  
Saat memperbarui `remoteNodeNetworks` atau daftar `remotePodNetworks` CIDR, sertakan semua CIDRs (baru dan yang sudah ada). EKS menggantikan seluruh daftar selama pembaruan. Menghilangkan bidang ini dari permintaan pembaruan mempertahankan konfigurasi yang ada.

1. Tunggu status cluster kembali ke ACTIVE sebelum melanjutkan.

### Perbarui konfigurasi hybrid di cluster yang ada - Konsol Manajemen AWS
<a name="hybrid-nodes-cluster-update-console"></a>

1. Buka konsol Amazon EKS di konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih nama klaster untuk menampilkan informasi klaster Anda.

1. Pilih tab **Jaringan** dan pilih **Kelola**.

1. Di dropdown, pilih Jaringan **jarak jauh**.

1. Perbarui bagian CIDRs bawah `Remote node networks` dan `Remote pod networks - Optional` sesuai kebutuhan.

1. Pilih **Simpan perubahan** dan tunggu status klaster kembali ke **Aktif**.

## Nonaktifkan node Hybrid di cluster yang ada
<a name="hybrid-nodes-cluster-disable"></a>

Anda dapat menonaktifkan EKS Hybrid Nodes di cluster yang ada dengan menggunakan:
+  [AWS CloudFormation](#hybrid-nodes-cluster-disable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-disable-cli) 
+  [Konsol Manajemen AWS](#hybrid-nodes-cluster-disable-console) 

### Nonaktifkan EKS Hybrid Nodes di cluster yang ada - AWS CloudFormation
<a name="hybrid-nodes-cluster-disable-cfn"></a>

1. Untuk menonaktifkan EKS Hybrid Nodes di cluster Anda, atur `RemoteNodeNetworks` dan `RemotePodNetworks` kosongkan array di CloudFormation template Anda dan perbarui tumpukan.

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks: []
     RemotePodNetworks: []
   ```

### Nonaktifkan EKS Hybrid Nodes di cluster yang ada - AWS CLI
<a name="hybrid-nodes-cluster-disable-cli"></a>

1. Jalankan perintah berikut untuk menghapus `RemoteNetworkConfig` dari kluster EKS Anda. Sebelum menjalankan perintah, ganti yang berikut ini dengan pengaturan Anda. Untuk daftar lengkap pengaturan, lihat [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)di *Referensi API Amazon EKS*.

   1.  `CLUSTER_NAME`: nama cluster EKS untuk diperbarui.

   1.  `AWS_REGION`: AWS Wilayah tempat cluster EKS berjalan.

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[],"remotePodNetworks":[]}'
      ```

1. Dibutuhkan beberapa menit untuk memperbarui cluster. Anda dapat melakukan kueri status klaster Anda dengan perintah berikut. Ganti `CLUSTER_NAME` dengan nama cluster yang Anda modifikasi dan `AWS_REGION` dengan AWS Wilayah tempat cluster berjalan. Jangan lanjutkan ke langkah berikutnya sampai output yang dikembalikan`ACTIVE`.

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

### Nonaktifkan EKS Hybrid Nodes di cluster yang ada - Konsol Manajemen AWS
<a name="hybrid-nodes-cluster-disable-console"></a>

1. Buka konsol Amazon EKS di konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih nama klaster untuk menampilkan informasi klaster Anda.

1. Pilih tab **Jaringan** dan pilih **Kelola**.

1. Di dropdown, pilih Jaringan **jarak jauh**.

1. Pilih **Konfigurasi jaringan jarak jauh untuk mengaktifkan node hibrida** dan menghapus semua bagian CIDRs bawah `Remote node networks` dan`Remote pod networks - Optional`.

1. Pilih **Simpan perubahan** untuk menyelesaikan. Tunggu status klaster kembali ke **Aktif**.

# Mempersiapkan akses cluster untuk node hybrid
<a name="hybrid-nodes-cluster-prep"></a>

Sebelum menghubungkan node hybrid ke cluster Amazon EKS Anda, Anda harus mengaktifkan Peran IAM Hybrid Nodes Anda dengan izin Kubernetes untuk bergabung dengan cluster. Lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md) untuk informasi tentang cara membuat peran IAM Hybrid Nodes. Amazon EKS mendukung dua cara untuk mengaitkan prinsipal IAM dengan Kubernetes Role-Based Access Control (RBAC), entri akses Amazon EKS, dan entri akses. `aws-auth` ConfigMap Untuk informasi selengkapnya tentang manajemen akses Amazon EKS, lihat[Berikan akses kepada pengguna dan peran IAM ke Kubernetes APIs](grant-k8s-access.md).

Gunakan prosedur di bawah ini untuk mengaitkan peran IAM Hybrid Nodes Anda dengan izin Kubernetes. Untuk menggunakan entri akses Amazon EKS, klaster Anda harus dibuat dengan mode `API_AND_CONFIG_MAP` autentikasi `API` atau. Untuk menggunakan `aws-auth` ConfigMap, cluster Anda harus dibuat dengan mode `API_AND_CONFIG_MAP` otentikasi. Mode otentikasi `CONFIG_MAP` -only tidak didukung untuk cluster Amazon EKS yang mendukung node hybrid.

## Menggunakan entri akses Amazon EKS untuk peran IAM Hybrid Nodes
<a name="_using_amazon_eks_access_entries_for_hybrid_nodes_iam_role"></a>

Ada jenis entri akses Amazon EKS untuk node hybrid bernama HYBRID\$1LINUX yang dapat digunakan dengan peran IAM. Dengan jenis entri akses ini, nama pengguna secara otomatis diatur ke system:node: \$1\$1SessionName\$1\$1. Untuk informasi selengkapnya tentang membuat entri akses, lihat[Buat entri akses](creating-access-entries.md).

### AWS CLI
<a name="shared_aws_cli"></a>

1. Anda harus menginstal dan mengonfigurasi AWS CLI versi terbaru di perangkat Anda. Untuk memeriksa versi Anda saat ini, gunakan`aws --version`. Package manager seperti yum, apt-get, atau Homebrew untuk macOS seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat Menginstal dan Konfigurasi cepat dengan aws configure di Panduan Pengguna Antarmuka Baris AWS Perintah.

1. Buat entri akses Anda dengan perintah berikut. Ganti CLUSTER\$1NAME dengan nama cluster Anda dan HYBRID\$1NODES\$1ROLE\$1ARN dengan ARN dari peran yang Anda buat dalam langkah-langkah untuk. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

   ```
   aws eks create-access-entry --cluster-name CLUSTER_NAME \
       --principal-arn HYBRID_NODES_ROLE_ARN \
       --type HYBRID_LINUX
   ```

### Konsol Manajemen AWS
<a name="hybrid-nodes-cluster-prep-console"></a>

1. Buka konsol Amazon EKS di konsol [Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Pilih nama cluster berkemampuan node hybrid Anda.

1. Pilih tab **Access**.

1. Pilih **Buat entri akses**.

1. Untuk **prinsipal IAM**, pilih peran IAM Hybrid Nodes yang Anda buat di langkah-langkahnya. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

1. Untuk **Type**, pilih **Hybrid Linux**.

1. (Opsional) Untuk **Tag**, tetapkan label ke entri akses. Misalnya, untuk membuatnya lebih mudah untuk menemukan semua sumber daya dengan tag yang sama.

1. Pilih **Lewati untuk meninjau dan membuat**. Anda tidak dapat menambahkan kebijakan ke entri akses Hybrid Linux atau mengubah cakupan aksesnya.

1. Tinjau konfigurasi untuk entri akses Anda. Jika ada yang terlihat salah, pilih **Sebelumnya** untuk kembali melalui langkah-langkah dan memperbaiki kesalahan. Jika konfigurasi sudah benar, pilih **Buat**.

## Menggunakan aws-auth ConfigMap untuk peran IAM Hybrid Nodes
<a name="_using_aws_auth_configmap_for_hybrid_nodes_iam_role"></a>

Dalam langkah-langkah berikut, Anda akan membuat atau memperbarui `aws-auth` ConfigMap dengan ARN dari Peran IAM Hybrid Nodes yang Anda buat dalam langkah-langkah untuk. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

1. Periksa untuk melihat apakah Anda memiliki yang ada `aws-auth` ConfigMap untuk cluster Anda. Perhatikan bahwa jika Anda menggunakan `kubeconfig` file tertentu, gunakan `--kubeconfig` bendera.

   ```
   kubectl describe configmap -n kube-system aws-auth
   ```

1. Jika Anda ditampilkan `aws-auth` ConfigMap, maka perbarui sesuai kebutuhan.

   1. Buka ConfigMap untuk mengedit.

      ```
      kubectl edit -n kube-system configmap/aws-auth
      ```

   1. Tambahkan `mapRoles` entri baru sesuai kebutuhan. Ganti `HYBRID_NODES_ROLE_ARN` dengan ARN peran IAM Hybrid Nodes Anda. Catatan, `{{SessionName}}` adalah format template yang benar untuk disimpan di ConfigMap. Jangan menggantinya dengan nilai lain.

      ```
      data:
        mapRoles: |
        - groups:
          - system:bootstrappers
          - system:nodes
          rolearn: HYBRID_NODES_ROLE_ARN
          username: system:node:{{SessionName}}
      ```

   1. Simpan file dan keluar dari editor teks Anda.

1. Jika tidak ada yang ada `aws-auth` ConfigMap untuk cluster Anda, buat dengan perintah berikut. Ganti `HYBRID_NODES_ROLE_ARN` dengan ARN peran IAM Hybrid Nodes Anda. Perhatikan bahwa itu `{{SessionName}}` adalah format template yang benar untuk disimpan di ConfigMap. Jangan menggantinya dengan nilai lain.

   ```
   kubectl apply -f=/dev/stdin <<-EOF
   apiVersion: v1
   kind: ConfigMap
   metadata:
     name: aws-auth
     namespace: kube-system
   data:
     mapRoles: |
     - groups:
       - system:bootstrappers
       - system:nodes
       rolearn: HYBRID_NODES_ROLE_ARN
       username: system:node:{{SessionName}}
   EOF
   ```

# Jalankan beban kerja lokal pada node hibrid
<a name="hybrid-nodes-tutorial"></a>

Di kluster EKS dengan node hibrid yang diaktifkan, Anda dapat menjalankan aplikasi lokal dan edge di infrastruktur Anda sendiri dengan kluster, fitur, dan alat Amazon EKS yang sama yang Anda gunakan di AWS Cloud.

Bagian berikut berisi step-by-step instruksi untuk menggunakan node hybrid.

**Topics**
+ [Connect node hybrid](hybrid-nodes-join.md)
+ [Hubungkan node hybrid dengan Bottlerocket](hybrid-nodes-bottlerocket.md)
+ [Tingkatkan node hibrida](hybrid-nodes-upgrade.md)
+ [Patch node hibrida](hybrid-nodes-security.md)
+ [Hapus node hybrid](hybrid-nodes-remove.md)

# Connect node hybrid
<a name="hybrid-nodes-join"></a>

**catatan**  
Langkah-langkah berikut berlaku untuk node hybrid yang menjalankan sistem operasi yang kompatibel kecuali Bottlerocket. Untuk langkah-langkah untuk menghubungkan node hybrid yang menjalankan Bottlerocket, lihat. [Hubungkan node hybrid dengan Bottlerocket](hybrid-nodes-bottlerocket.md)

Topik ini menjelaskan cara menghubungkan node hybrid ke cluster Amazon EKS. Setelah node hybrid Anda bergabung dengan cluster, mereka akan muncul dengan status Not Ready di konsol Amazon EKS dan di tooling yang kompatibel dengan Kubernetes seperti kubectl. Setelah menyelesaikan langkah-langkah di halaman ini, lanjutkan [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) untuk membuat node hibrida Anda siap untuk menjalankan aplikasi.

## Prasyarat
<a name="_prerequisites"></a>

Sebelum menghubungkan node hybrid ke cluster Amazon EKS Anda, pastikan Anda telah menyelesaikan langkah-langkah prasyarat.
+ Anda memiliki konektivitas jaringan dari lingkungan lokal ke AWS Wilayah yang menghosting kluster Amazon EKS Anda. Untuk informasi selengkapnya, lihat [Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md).
+ Anda memiliki sistem operasi yang kompatibel untuk node hibrid yang diinstal pada host lokal Anda. Untuk informasi selengkapnya, lihat [Siapkan sistem operasi untuk node hybrid](hybrid-nodes-os.md).
+ Anda telah membuat peran IAM Hybrid Nodes dan menyiapkan penyedia kredensi lokal (aktivasi hybrid AWS Systems Manager atau AWS IAM Roles Anywhere). Untuk informasi selengkapnya, lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md).
+ Anda telah membuat cluster Amazon EKS yang mendukung node hybrid Anda. Untuk informasi selengkapnya, lihat [Buat klaster Amazon EKS dengan node hybrid](hybrid-nodes-cluster-create.md).
+ Anda telah mengaitkan peran IAM Hybrid Nodes Anda dengan izin Kubernetes Role-Based Access Control (RBAC). Untuk informasi selengkapnya, lihat [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).

## Langkah 1: Instal node hybrid CLI (`nodeadm`) di setiap host lokal
<a name="_step_1_install_the_hybrid_nodes_cli_nodeadm_on_each_on_premises_host"></a>

Jika Anda menyertakan Amazon EKS Hybrid Nodes CLI (`nodeadm`) dalam gambar sistem operasi pra-bangun Anda, Anda dapat melewati langkah ini. Untuk informasi lebih lanjut tentang versi node hibrida`nodeadm`, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

Versi node hibrida di-host di Amazon S3 yang digawangi oleh Amazon. `nodeadm` CloudFront Untuk menginstal `nodeadm` di setiap host lokal, Anda dapat menjalankan perintah berikut dari host lokal Anda.

 **Untuk host x86\$164:** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Untuk host ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Tambahkan izin file yang dapat dieksekusi ke biner yang diunduh di setiap host.

```
chmod +x nodeadm
```

## Langkah 2: Instal dependensi node hybrid dengan `nodeadm`
<a name="_step_2_install_the_hybrid_nodes_dependencies_with_nodeadm"></a>

Jika Anda menginstal dependensi node hybrid dalam gambar sistem operasi pra-bangun, Anda dapat melewati langkah ini. `nodeadm install`Perintah ini dapat digunakan untuk menginstal semua dependensi yang diperlukan untuk node hybrid. Dependensi node hybrid mencakup komponen containerd, kubelet, kubectl, dan SSM atau IAM Roles Anywhere. AWS AWS Lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md) untuk informasi selengkapnya tentang komponen dan lokasi file yang diinstal oleh`nodeadm install`. Lihat node hibrid [Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md) untuk informasi selengkapnya tentang domain yang harus diizinkan di firewall lokal untuk proses tersebut`nodeadm install`.

Jalankan perintah di bawah ini untuk menginstal dependensi node hybrid pada host lokal Anda. Perintah di bawah ini harus dijalankan dengan pengguna yang memiliki sudo/root akses pada host Anda.

**penting**  
Node hybrid CLI (`nodeadm`) harus dijalankan dengan pengguna yang memiliki sudo/root akses pada host Anda.
+ Ganti `K8S_VERSION` dengan versi minor Kubernetes dari cluster Amazon EKS Anda, misalnya. `1.31` Lihat versi yang [didukung Amazon EKS untuk daftar versi](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) Kubernetes yang didukung.
+ Ganti `CREDS_PROVIDER` dengan penyedia kredensi lokal yang Anda gunakan. Nilai yang valid adalah `ssm` untuk AWS SSM dan `iam-ra` untuk Peran AWS IAM Di Mana Saja.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER
```

## Langkah 3: Hubungkan node hybrid ke cluster Anda
<a name="_step_3_connect_hybrid_nodes_to_your_cluster"></a>

Sebelum menghubungkan node hibrid ke klaster, pastikan Anda telah mengizinkan akses yang diperlukan di firewall lokal dan di grup keamanan untuk klaster Anda untuk komunikasi node to/from hybrid bidang kontrol Amazon EKS. Sebagian besar masalah pada langkah ini terkait dengan konfigurasi firewall, konfigurasi grup keamanan, atau konfigurasi peran IAM Hybrid Nodes.

**penting**  
Node hybrid CLI (`nodeadm`) harus dijalankan dengan pengguna yang memiliki sudo/root akses pada host Anda.

1. Buat `nodeConfig.yaml` file di setiap host dengan nilai untuk penerapan Anda. Untuk deskripsi lengkap tentang pengaturan konfigurasi yang tersedia, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md). Jika peran IAM Hybrid Nodes Anda tidak memiliki izin untuk `eks:DescribeCluster` tindakan tersebut, Anda harus meneruskan endpoint Kubernetes API, bundel CA cluster, dan CIDR layanan IPv4 Kubernetes di bagian cluster Anda. `nodeConfig.yaml`

   1. Gunakan `nodeConfig.yaml` contoh di bawah ini jika Anda menggunakan aktivasi hibrida AWS SSM untuk penyedia kredensi lokal Anda.

      1. Ganti `CLUSTER_NAME` dengan nama klaster Anda.

      1. Ganti `AWS_REGION` dengan AWS Region hosting cluster Anda. Misalnya, `us-west-2`.

      1. Ganti `ACTIVATION_CODE` dengan kode aktivasi yang Anda terima saat membuat aktivasi hibrida AWS SSM Anda. Untuk informasi selengkapnya, lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md).

      1. Ganti `ACTIVATION_ID` dengan ID aktivasi yang Anda terima saat membuat aktivasi hibrida AWS SSM Anda. Anda dapat mengambil informasi ini dari konsol AWS Systems Manager atau dari perintah AWS `aws ssm describe-activations` CLI.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             ssm:
               activationCode: ACTIVATION_CODE
               activationId: ACTIVATION_ID
         ```

   1. Gunakan `nodeConfig.yaml` contoh di bawah ini jika Anda menggunakan AWS IAM Roles Anywhere untuk penyedia kredensi lokal Anda.

      1. Ganti `CLUSTER_NAME` dengan nama klaster Anda.

      1. Ganti `AWS_REGION` dengan AWS Region hosting cluster Anda. Misalnya, `us-west-2`.

      1. Ganti `NODE_NAME` dengan nama node Anda. Nama node harus cocok dengan CN sertifikat pada host jika Anda mengonfigurasi kebijakan kepercayaan peran IAM Hybrid Nodes Anda dengan kondisi `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"` sumber daya. Yang `nodeName` Anda gunakan tidak boleh lebih dari 64 karakter.

      1. Ganti `TRUST_ANCHOR_ARN` dengan ARN dari jangkar kepercayaan yang Anda konfigurasikan dalam langkah-langkah untuk Siapkan kredensil untuk node hibrida.

      1. Ganti `PROFILE_ARN` dengan ARN dari jangkar kepercayaan yang Anda konfigurasikan dalam langkah-langkahnya. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

      1. Ganti `ROLE_ARN` dengan ARN peran IAM Hybrid Nodes Anda.

      1. Ganti `CERTIFICATE_PATH` dengan path di disk ke sertifikat node Anda. Jika Anda tidak menentukannya, defaultnya adalah`/etc/iam/pki/server.pem`.

      1. Ganti `KEY_PATH` dengan jalur di disk ke kunci pribadi sertifikat Anda. Jika Anda tidak menentukannya, defaultnya adalah`/etc/iam/pki/server.key`.

         ```
         apiVersion: node.eks.aws/v1alpha1
         kind: NodeConfig
         spec:
           cluster:
             name: CLUSTER_NAME
             region: AWS_REGION
           hybrid:
             iamRolesAnywhere:
               nodeName: NODE_NAME
               trustAnchorArn: TRUST_ANCHOR_ARN
               profileArn: PROFILE_ARN
               roleArn: ROLE_ARN
               certificatePath: CERTIFICATE_PATH
               privateKeyPath: KEY_PATH
         ```

1. Jalankan `nodeadm init` perintah dengan Anda `nodeConfig.yaml` untuk menghubungkan node hybrid Anda ke cluster Amazon EKS Anda.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

Jika perintah di atas berhasil diselesaikan, node hybrid Anda telah bergabung dengan cluster Amazon EKS Anda. Anda dapat memverifikasi ini di konsol Amazon EKS dengan menavigasi ke tab Compute untuk klaster Anda ([pastikan kepala sekolah IAM memiliki izin untuk](view-kubernetes-resources.md#view-kubernetes-resources-permissions) melihat) atau dengan. `kubectl get nodes`

**penting**  
Node Anda akan memiliki status`Not Ready`, yang diharapkan dan karena kurangnya CNI yang berjalan pada node hybrid Anda. Jika node Anda tidak bergabung dengan cluster, lihat[Memecahkan masalah node hybrid](hybrid-nodes-troubleshooting.md).

## Langkah 4: Konfigurasikan CNI untuk node hybrid
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Untuk membuat node hybrid Anda siap menjalankan aplikasi, lanjutkan dengan langkah-langkahnya[Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).

# Hubungkan node hybrid dengan Bottlerocket
<a name="hybrid-nodes-bottlerocket"></a>

Topik ini menjelaskan cara menghubungkan node hybrid yang menjalankan Bottlerocket ke cluster Amazon EKS. [Bottlerocket](https://aws.amazon.com/bottlerocket/) adalah distribusi Linux open source yang disponsori dan didukung oleh. AWS Bottlerocket dibuat khusus untuk menampung beban kerja kontainer. Dengan Bottlerocket, Anda dapat meningkatkan ketersediaan penerapan kontainer dan mengurangi biaya operasional dengan mengotomatiskan pembaruan infrastruktur kontainer Anda. Bottlerocket hanya mencakup perangkat lunak penting untuk menjalankan kontainer, yang meningkatkan penggunaan sumber daya, mengurangi ancaman keamanan, dan menurunkan overhead manajemen.

Hanya VMware varian Bottlerocket versi v1.37.0 ke atas yang didukung dengan EKS Hybrid Nodes. VMware varian dari Bottlerocket tersedia untuk Kubernetes versi v1.28 dan di atasnya. Gambar OS untuk varian ini termasuk kubelet, containerd, aws-iam-authenticator dan prasyarat perangkat lunak lainnya untuk EKS Hybrid Nodes. Anda dapat mengonfigurasi komponen ini menggunakan file [pengaturan](https://github.com/bottlerocket-os/bottlerocket#settings) Bottlerocket yang menyertakan data pengguna yang dikodekan base64 untuk bootstrap Bottlerocket dan wadah admin. Mengkonfigurasi pengaturan ini memungkinkan Bottlerocket untuk menggunakan penyedia kredensi node hybrid Anda untuk mengautentikasi node hybrid ke cluster Anda. Setelah node hibrid Anda bergabung dengan cluster, mereka akan muncul dengan status `Not Ready` di konsol Amazon EKS dan di perkakas yang kompatibel dengan Kubernetes seperti. `kubectl` Setelah menyelesaikan langkah-langkah di halaman ini, lanjutkan [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) untuk membuat node hibrida Anda siap untuk menjalankan aplikasi.

## Prasyarat
<a name="_prerequisites"></a>

Sebelum menghubungkan node hybrid ke cluster Amazon EKS Anda, pastikan Anda telah menyelesaikan langkah-langkah prasyarat.
+ Anda memiliki konektivitas jaringan dari lingkungan lokal ke AWS Wilayah yang menghosting kluster Amazon EKS Anda. Untuk informasi selengkapnya, lihat [Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md).
+ Anda telah membuat peran IAM Hybrid Nodes dan menyiapkan penyedia kredensi lokal (aktivasi hybrid AWS Systems Manager atau AWS IAM Roles Anywhere). Untuk informasi selengkapnya, lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md).
+ Anda telah membuat cluster Amazon EKS yang mendukung node hybrid Anda. Untuk informasi selengkapnya, lihat [Buat klaster Amazon EKS dengan node hybrid](hybrid-nodes-cluster-create.md).
+ Anda telah mengaitkan peran IAM Hybrid Nodes Anda dengan izin Kubernetes Role-Based Access Control (RBAC). Untuk informasi selengkapnya, lihat [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).

## Langkah 1: Buat file TOMM pengaturan Bottlerocket
<a name="_step_1_create_the_bottlerocket_settings_toml_file"></a>

Untuk mengkonfigurasi Bottlerocket untuk node hybrid, Anda perlu membuat `settings.toml` file dengan konfigurasi yang diperlukan. Isi file TOMM akan berbeda berdasarkan penyedia kredensi yang Anda gunakan (Peran SSM atau IAM Di Mana Saja). File ini akan diteruskan sebagai data pengguna saat menyediakan instance Bottlerocket.

**catatan**  
File TOMM yang disediakan di bawah ini hanya mewakili pengaturan minimum yang diperlukan untuk menginisialisasi VMWare mesin Bottlerocket sebagai simpul pada cluster EKS. [Bottlerocket menyediakan berbagai pengaturan untuk mengatasi beberapa kasus penggunaan yang berbeda, jadi untuk opsi konfigurasi lebih lanjut di luar inisialisasi node hibrida, silakan lihat dokumentasi Bottlerocket untuk daftar lengkap semua pengaturan yang [didokumentasikan untuk versi Bottlerocket](https://bottlerocket.dev/en) yang Anda gunakan (misalnya, di sini adalah semua pengaturan yang tersedia untuk Bottlerocket 1.51.x).](https://bottlerocket.dev/en/os/1.51.x/api/settings-index)

### SSM
<a name="_ssm"></a>

Jika Anda menggunakan AWS Systems Manager sebagai penyedia kredensi Anda, buat `settings.toml` file dengan konten berikut:

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "ssm"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"

[settings.host-containers.control]
enabled = true
```

Ganti placeholder dengan nilai-nilai berikut:
+  `<cluster-name>`: Nama cluster Amazon EKS Anda.
+  `<api-server-endpoint>`: Titik akhir server API cluster Anda.
+  `<cluster-certificate-authority>`: Bundel CA yang dikodekan base64 dari cluster Anda.
+  `<region>`: AWS Wilayah yang menghosting cluster Anda, misalnya “us-east-1".
+  `<hostname>`: Nama host dari instance Bottlerocket, yang juga akan dikonfigurasi sebagai nama node. Ini bisa berupa nilai unik pilihan Anda, tetapi harus mengikuti konvensi penamaan [Objek Kubernetes.](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names) Selain itu, nama host yang Anda gunakan tidak boleh lebih dari 64 karakter. CATATAN: Saat menggunakan penyedia SSM, nama host dan nama node ini akan diganti dengan ID instance terkelola (misalnya, `mi-*` ID) setelah instance terdaftar dengan SSM.
+  `<base64-encoded-admin-container-userdata>`: Konten base64 yang dikodekan dari konfigurasi kontainer admin Bottlerocket. Mengaktifkan wadah admin memungkinkan Anda terhubung ke instance Bottlerocket Anda dengan SSH untuk eksplorasi dan debugging sistem. Meskipun ini bukan pengaturan yang diperlukan, kami sarankan untuk mengaktifkannya untuk kemudahan pemecahan masalah. Lihat [dokumentasi kontainer admin Bottlerocket untuk informasi lebih lanjut tentang otentikasi dengan wadah admin](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Kontainer admin mengambil pengguna SSH dan input kunci dalam format JSON, misalnya,

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: Konten base64 yang dikodekan dari konfigurasi wadah bootstrap Bottlerocket. Lihat [dokumentasi wadah bootstrap Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container) untuk informasi lebih lanjut tentang konfigurasinya. Container bootstrap bertanggung jawab untuk mendaftarkan instance sebagai Instans Terkelola AWS SSM dan menggabungkannya sebagai node Kubernetes di Cluster Amazon EKS Anda. Data pengguna yang diteruskan ke wadah bootstrap berbentuk pemanggilan perintah yang menerima sebagai masukan kode aktivasi hibrida SSM dan ID yang sebelumnya Anda buat:

```
eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region>
```

### IAM Roles Anywhere
<a name="_iam_roles_anywhere"></a>

Jika Anda menggunakan AWS IAM Roles Anywhere sebagai penyedia kredensi Anda, buat `settings.toml` file dengan konten berikut:

```
[settings.kubernetes]
cluster-name = "<cluster-name>"
api-server = "<api-server-endpoint>"
cluster-certificate = "<cluster-certificate-authority>"
hostname-override = "<hostname>"
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
authentication-mode = "aws"
cloud-provider = ""
server-tls-bootstrap = true

[settings.network]
hostname = "<hostname>"

[settings.aws]
region = "<region>"
config = "<base64-encoded-aws-config-file>"

[settings.kubernetes.credential-providers.ecr-credential-provider]
enabled = true
cache-duration = "12h"
image-patterns = [
    "*.dkr.ecr.*.amazonaws.com",
    "*.dkr.ecr.*.amazonaws.com.rproxy.goskope.com.cn",
    "*.dkr.ecr.*.amazonaws.eu",
    "*.dkr.ecr-fips.*.amazonaws.com",
    "*.dkr.ecr-fips.*.amazonaws.eu",
    "public.ecr.aws"
]

[settings.kubernetes.node-labels]
"eks.amazonaws.com/compute-type" = "hybrid"
"eks.amazonaws.com/hybrid-credential-provider" = "iam-ra"

[settings.host-containers.admin]
enabled = true
user-data = "<base64-encoded-admin-container-userdata>"

[settings.bootstrap-containers.eks-hybrid-setup]
mode = "always"
user-data = "<base64-encoded-bootstrap-container-userdata>"
```

Ganti placeholder dengan nilai-nilai berikut:
+  `<cluster-name>`: Nama cluster Amazon EKS Anda.
+  `<api-server-endpoint>`: Titik akhir server API cluster Anda.
+  `<cluster-certificate-authority>`: Bundel CA yang dikodekan base64 dari cluster Anda.
+  `<region>`: AWS Wilayah yang menampung klaster Anda, misalnya, “us-east-1"
+  `<hostname>`: Nama host dari instance Bottlerocket, yang juga akan dikonfigurasi sebagai nama node. Ini bisa berupa nilai unik pilihan Anda, tetapi harus mengikuti konvensi penamaan [Objek Kubernetes.](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names) Selain itu, nama host yang Anda gunakan tidak boleh lebih dari 64 karakter. CATATAN: Saat menggunakan penyedia IAM-RA, nama node harus cocok dengan CN sertifikat pada host jika Anda mengonfigurasi kebijakan kepercayaan peran IAM Hybrid Nodes Anda dengan kondisi sumber daya. `"sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}"`
+  `<base64-encoded-aws-config-file>`: Konten berkas konfigurasi Anda yang disandikan base64. AWS Isi file harus sebagai berikut:

```
[default]
credential_process = aws_signing_helper credential-process --certificate /root/.aws/node.crt --private-key /root/.aws/node.key --profile-arn <profile-arn> --role-arn <role-arn> --trust-anchor-arn <trust-anchor-arn> --role-session-name <role-session-name>
```
+  `<base64-encoded-admin-container-userdata>`: Konten base64 yang dikodekan dari konfigurasi kontainer admin Bottlerocket. Mengaktifkan wadah admin memungkinkan Anda terhubung ke instance Bottlerocket Anda dengan SSH untuk eksplorasi dan debugging sistem. Meskipun ini bukan pengaturan yang diperlukan, kami sarankan untuk mengaktifkannya untuk kemudahan pemecahan masalah. Lihat [dokumentasi kontainer admin Bottlerocket untuk informasi lebih lanjut tentang otentikasi dengan wadah admin](https://github.com/bottlerocket-os/bottlerocket-admin-container#authenticating-with-the-admin-container). Kontainer admin mengambil pengguna SSH dan input kunci dalam format JSON, misalnya,

```
{
  "user": "<ssh-user>",
  "ssh": {
    "authorized-keys": [
      "<ssh-authorized-key>"
    ]
  }
}
```
+  `<base64-encoded-bootstrap-container-userdata>`: Konten base64 yang dikodekan dari konfigurasi wadah bootstrap Bottlerocket. Lihat [dokumentasi wadah bootstrap Bottlerocket](https://github.com/bottlerocket-os/bottlerocket-bootstrap-container) untuk informasi lebih lanjut tentang konfigurasinya. Wadah bootstrap bertanggung jawab untuk membuat sertifikat host IAM Roles Anywhere dan file kunci pribadi sertifikat pada instance. Ini kemudian akan digunakan oleh `aws_signing_helper` untuk mendapatkan kredensi sementara untuk mengautentikasi dengan kluster Amazon EKS Anda. Data pengguna yang diteruskan ke dalam wadah bootstrap berbentuk pemanggilan perintah yang menerima sebagai masukan isi sertifikat dan kunci pribadi yang Anda buat sebelumnya:

```
eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key>
```

## Langkah 2: Menyediakan Bottlerocket vSphere VM dengan data pengguna
<a name="_step_2_provision_the_bottlerocket_vsphere_vm_with_user_data"></a>

Setelah Anda membuat file TOMM, berikan sebagai data pengguna selama pembuatan VSphere VM. Perlu diingat bahwa data pengguna harus dikonfigurasi sebelum VM dinyalakan untuk pertama kalinya. Dengan demikian, Anda harus menyediakannya saat membuat instance, atau jika Anda ingin membuat VM sebelumnya, VM harus dalam status PoweredOff sampai Anda mengonfigurasi data pengguna untuk itu. Misalnya, jika menggunakan `govc` CLI:

### Membuat VM untuk pertama kalinya
<a name="_creating_vm_for_the_first_time"></a>

```
govc vm.create \
  -on=true \
  -c=2 \
  -m=4096 \
  -net.adapter=<network-adapter> \
  -net=<network-name> \
  -e guestinfo.userdata.encoding="base64" \
  -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
  -template=<template-name> \
  <vm-name>
```

### Memperbarui data pengguna untuk VM yang ada
<a name="_updating_user_data_for_an_existing_vm"></a>

```
govc vm.create \
    -on=false \
    -c=2 \
    -m=4096 \
    -net.adapter=<network-adapter> \
    -net=<network-name> \
    -template=<template-name> \
    <vm-name>

govc vm.change
    -vm <vm-name> \
    -e guestinfo.userdata="$(base64 -w0 settings.toml)" \
    -e guestinfo.userdata.encoding="base64"

govc vm.power -on <vm-name>
```

Pada bagian di atas, `-e guestinfo.userdata.encoding="base64"` opsi menentukan bahwa data pengguna dikodekan base64. `-e guestinfo.userdata`Opsi ini meneruskan konten `settings.toml` berkas yang dikodekan base64 sebagai data pengguna ke instance Bottlerocket. Ganti placeholder dengan nilai spesifik Anda, seperti template Bottlerocket OVA dan detail jaringan.

## Langkah 3: Verifikasi koneksi node hybrid
<a name="_step_3_verify_the_hybrid_node_connection"></a>

Setelah instans Bottlerocket dimulai, instans akan mencoba bergabung dengan cluster Amazon EKS Anda. Anda dapat memverifikasi koneksi di konsol Amazon EKS dengan menavigasi ke tab Compute untuk klaster Anda atau dengan menjalankan perintah berikut:

```
kubectl get nodes
```

**penting**  
Node Anda akan memiliki status`Not Ready`, yang diharapkan dan karena kurangnya CNI yang berjalan pada node hybrid Anda. Jika node Anda tidak bergabung dengan cluster, lihat[Memecahkan masalah node hybrid](hybrid-nodes-troubleshooting.md).

## Langkah 4: Konfigurasikan CNI untuk node hybrid
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

Untuk membuat node hybrid Anda siap menjalankan aplikasi, lanjutkan dengan langkah-langkahnya[Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).

# Tingkatkan node hybrid untuk klaster Anda
<a name="hybrid-nodes-upgrade"></a>

Panduan untuk memutakhirkan node hibrida mirip dengan node Amazon EKS yang dikelola sendiri yang berjalan di Amazon. EC2 Kami menyarankan Anda membuat node hybrid baru pada versi Kubernetes target Anda, dengan anggun memigrasikan aplikasi Anda yang ada ke node hybrid pada versi Kubernetes yang baru, dan menghapus node hybrid pada versi Kubernetes lama dari klaster Anda. Pastikan untuk meninjau [Praktik Terbaik Amazon EKS](https://docs.aws.amazon.com/eks/latest/best-practices/cluster-upgrades.html) untuk peningkatan sebelum memulai pemutakhiran. Amazon EKS Hybrid Nodes memiliki dukungan [versi Kubernetes yang sama untuk](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) klaster Amazon EKS dengan node cloud, termasuk dukungan standar dan diperpanjang.

Amazon EKS Hybrid Nodes mengikuti [kebijakan skew versi](https://kubernetes.io/releases/version-skew-policy/#supported-version-skew) yang sama untuk node seperti Kubernetes upstream. Amazon EKS Hybrid Nodes tidak dapat menggunakan versi yang lebih baru daripada bidang kontrol Amazon EKS, dan node hybrid mungkin memiliki hingga tiga versi minor Kubernetes yang lebih lama dari versi minor bidang kontrol Amazon EKS.

Jika Anda tidak memiliki kapasitas cadangan untuk membuat node hybrid baru pada versi Kubernetes target Anda untuk strategi upgrade migrasi cutover, Anda dapat menggunakan Amazon EKS Hybrid Nodes CLI (`nodeadm`) untuk meng-upgrade versi Kubernetes dari node hybrid Anda di tempat.

**penting**  
Jika Anda memutakhirkan node hybrid Anda di tempat`nodeadm`, ada downtime untuk node selama proses di mana versi lama dari komponen Kubernetes dimatikan dan komponen versi Kubernetes yang baru diinstal dan dimulai.

## Prasyarat
<a name="_prerequisites"></a>

Sebelum memutakhirkan, pastikan Anda telah menyelesaikan prasyarat berikut.
+ Versi Kubernetes target untuk upgrade node hybrid Anda harus sama atau kurang dari versi control plane Amazon EKS.
+ Jika Anda mengikuti strategi upgrade migrasi cutover, node hybrid baru yang Anda instal pada versi Kubernetes target Anda harus memenuhi persyaratan. [Pengaturan prasyarat untuk node hybrid](hybrid-nodes-prereqs.md) Ini termasuk memiliki alamat IP dalam CIDR Jaringan Node Jarak Jauh yang Anda lewati selama pembuatan klaster Amazon EKS.
+ Untuk migrasi cutover dan peningkatan di tempat, node hybrid harus memiliki akses ke [domain yang diperlukan](hybrid-nodes-networking.md#hybrid-nodes-networking-on-prem) untuk menarik versi baru dari dependensi node hybrid.
+ Anda harus menginstal kubectl di mesin lokal atau instance yang Anda gunakan untuk berinteraksi dengan endpoint API Amazon EKS Kubernetes Anda.
+ Versi CNI Anda harus mendukung versi Kubernetes yang sedang Anda upgrade. Jika tidak, tingkatkan versi CNI Anda sebelum memutakhirkan node hybrid Anda. Untuk informasi selengkapnya, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).

## Peningkatan migrasi cutover (biru-hijau)
<a name="hybrid-nodes-upgrade-cutover"></a>

 *Upgrade migrasi cutover* mengacu pada proses pembuatan node hybrid baru pada host baru dengan versi Kubernetes target Anda, dengan anggun memigrasikan aplikasi Anda yang ada ke node hybrid baru pada versi Kubernetes target Anda, dan menghapus node hybrid pada versi Kubernetes lama dari klaster Anda. Strategi ini juga disebut migrasi biru-hijau.

1. Hubungkan host baru Anda sebagai node hibrida mengikuti [Connect node hybrid](hybrid-nodes-join.md) langkah-langkahnya. Saat menjalankan `nodeadm install` perintah, gunakan versi Kubernetes target Anda.

1. Aktifkan komunikasi antara node hybrid baru pada versi Kubernetes target dan node hybrid Anda pada versi Kubernetes lama. Konfigurasi ini memungkinkan pod untuk berkomunikasi satu sama lain saat Anda memigrasikan beban kerja Anda ke node hibrida pada versi Kubernetes target.

1. Konfirmasikan node hibrida Anda pada versi Kubernetes target Anda berhasil bergabung dengan klaster Anda dan memiliki status Siap.

1. Gunakan perintah berikut untuk menandai setiap node yang ingin Anda hapus sebagai tidak dapat dijadwalkan. Hal ini agar pod baru tidak dijadwalkan atau dijadwal ulang pada node yang Anda ganti. Untuk informasi selengkapnya, lihat [kubectl cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) di dokumentasi Kubernetes. Ganti `NODE_NAME` dengan nama node hybrid pada versi Kubernetes lama.

   ```
   kubectl cordon NODE_NAME
   ```

   Anda dapat mengidentifikasi dan mengikat semua node dari versi Kubernetes tertentu (dalam hal ini,`1.28`) dengan cuplikan kode berikut.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Cordoning $node"
       kubectl cordon $node
   done
   ```

1. Jika penerapan Anda saat ini menjalankan kurang dari dua replika CoreDNS pada node hybrid Anda, skala penerapan menjadi setidaknya dua replika. Kami menyarankan Anda menjalankan setidaknya dua replika CoreDNS pada node hybrid untuk ketahanan selama operasi normal.

   ```
   kubectl scale deployments/coredns --replicas=2 -n kube-system
   ```

1. Kuras setiap node hybrid pada versi Kubernetes lama yang ingin Anda hapus dari cluster Anda dengan perintah berikut. Untuk informasi selengkapnya tentang menguras node, lihat [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) dalam dokumentasi Kubernetes. Ganti `NODE_NAME` dengan nama node hybrid pada versi Kubernetes lama.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

   Anda dapat mengidentifikasi dan menguras semua node dari versi Kubernetes tertentu (dalam hal ini,`1.28`) dengan cuplikan kode berikut.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Draining $node"
       kubectl drain $node --ignore-daemonsets --delete-emptydir-data
   done
   ```

1. Anda dapat menggunakan `nodeadm` untuk menghentikan dan menghapus artefak node hybrid dari host. Anda harus menjalankan `nodeadm` dengan pengguna yang memiliki root/sudo hak istimewa. Secara default, tidak `nodeadm uninstall` akan melanjutkan jika ada pod yang tersisa di node. Untuk mengetahui informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

   ```
   nodeadm uninstall
   ```

1. Dengan artefak node hybrid dihentikan dan dihapus instalasinya, hapus sumber daya node dari cluster Anda.

   ```
   kubectl delete node node-name
   ```

   Anda dapat mengidentifikasi dan menghapus semua node dari versi Kubernetes tertentu (dalam hal ini,`1.28`) dengan cuplikan kode berikut.

   ```
   K8S_VERSION=1.28
   for node in $(kubectl get nodes -o json | jq --arg K8S_VERSION "$K8S_VERSION" -r '.items[] | select(.status.nodeInfo.kubeletVersion | match("\($K8S_VERSION)")).metadata.name')
   do
       echo "Deleting $node"
       kubectl delete node $node
   done
   ```

1. Tergantung pada pilihan CNI Anda, mungkin ada artefak yang tersisa di node hybrid Anda setelah menjalankan langkah-langkah di atas. Untuk informasi selengkapnya, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).

## Peningkatan di tempat
<a name="hybrid-nodes-upgrade-inplace"></a>

Proses upgrade di tempat mengacu pada penggunaan `nodeadm upgrade` untuk meng-upgrade versi Kubernetes untuk node hybrid tanpa menggunakan host fisik atau virtual baru dan strategi migrasi cutover. `nodeadm upgrade`Proses ini mematikan komponen Kubernetes lama yang sudah ada yang berjalan pada node hybrid, menghapus instalasi komponen Kubernetes lama yang sudah ada, menginstal komponen Kubernetes target baru, dan memulai komponen Kubernetes target baru. Sangat disarankan untuk memutakhirkan satu node pada satu waktu untuk meminimalkan dampak pada aplikasi yang berjalan pada node hybrid. Durasi proses ini tergantung pada bandwidth dan latensi jaringan Anda.

1. Gunakan perintah berikut untuk menandai node yang Anda upgrade sebagai tidak dapat dijadwalkan. Hal ini agar pod baru tidak dijadwalkan atau dijadwal ulang pada node yang sedang Anda upgrade. Untuk informasi selengkapnya, lihat [kubectl cordon](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_cordon/) di dokumentasi Kubernetes. Ganti `NODE_NAME` dengan nama node hybrid yang Anda upgrade

   ```
   kubectl cordon NODE_NAME
   ```

1. Kuras node yang Anda upgrade dengan perintah berikut. Untuk informasi selengkapnya tentang menguras node, lihat [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) dalam dokumentasi Kubernetes. Ganti `NODE_NAME` dengan nama node hybrid yang Anda upgrade.

   ```
   kubectl drain NODE_NAME --ignore-daemonsets --delete-emptydir-data
   ```

1. Jalankan `nodeadm upgrade` pada node hybrid yang Anda upgrade. Anda harus menjalankan `nodeadm` dengan pengguna yang memiliki root/sudo hak istimewa. Nama node dipertahankan melalui peningkatan untuk penyedia kredensi AWS SSM dan AWS IAM Roles Anywhere. Anda tidak dapat mengubah penyedia kredensi selama proses pemutakhiran. Lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md) untuk nilai konfigurasi untuk`nodeConfig.yaml`. Ganti `K8S_VERSION` dengan versi Kubernetes target yang Anda tingkatkan.

   ```
   nodeadm upgrade K8S_VERSION -c file://nodeConfig.yaml
   ```

1. Untuk memungkinkan pod dijadwalkan pada node setelah Anda memutakhirkan, ketik berikut ini. Ganti `NODE_NAME` dengan nama node.

   ```
   kubectl uncordon NODE_NAME
   ```

1. Perhatikan status node hybrid Anda dan tunggu node Anda dimatikan dan restart pada versi Kubernetes baru dengan status Ready.

   ```
   kubectl get nodes -o wide -w
   ```

# Pembaruan keamanan patch untuk node hybrid
<a name="hybrid-nodes-security"></a>

Topik ini menjelaskan prosedur untuk melakukan penambalan pembaruan keamanan di tempat untuk paket dan dependensi tertentu yang berjalan pada node hybrid Anda. Sebagai praktik terbaik, kami menyarankan Anda untuk memperbarui node hybrid Anda secara teratur untuk menerima CVEs dan patch keamanan.

Untuk langkah-langkah untuk meng-upgrade versi Kubernetes, lihat. [Tingkatkan node hybrid untuk klaster Anda](hybrid-nodes-upgrade.md)

Salah satu contoh perangkat lunak yang mungkin memerlukan patch keamanan adalah`containerd`.

## `Containerd`
<a name="_containerd"></a>

 `containerd`adalah runtime container Kubernetes standar dan dependensi inti untuk EKS Hybrid Nodes, yang digunakan untuk mengelola siklus hidup kontainer, termasuk menarik gambar dan mengelola eksekusi container. Pada node hybrid, Anda dapat menginstal `containerd` melalui [CLI nodeadm](https://docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html) atau secara manual. Tergantung pada sistem operasi node Anda, `nodeadm` akan menginstal `containerd` dari paket OS-distributed atau paket Docker.

Ketika CVE `containerd` telah diterbitkan, Anda memiliki opsi berikut untuk meningkatkan ke versi patch `containerd` pada node Hybrid Anda.

## Langkah 1: Periksa apakah patch dipublikasikan ke manajer paket
<a name="_step_1_check_if_the_patch_published_to_package_managers"></a>

Anda dapat memeriksa apakah patch `containerd` CVE telah dipublikasikan ke masing-masing manajer paket OS dengan mengacu pada buletin keamanan yang sesuai:
+  [Amazon Linux 2023](https://alas.aws.amazon.com/alas2023.html) 
+  [RHEL](https://access.redhat.com/security/security-updates/security-advisories) 
+  [Ubuntu 20.04](https://ubuntu.com/security/notices?order=newest&release=focal) 
+  [Ubuntu 22.04](https://ubuntu.com/security/notices?order=newest&release=jammy) 
+  [Ubuntu 24.04](https://ubuntu.com/security/notices?order=newest&release=noble) 

Jika Anda menggunakan repo Docker sebagai sumbernya`containerd`, Anda dapat memeriksa [pengumuman keamanan Docker](https://docs.docker.com/security/security-announcements/) untuk mengidentifikasi ketersediaan versi yang ditambal di repo Docker.

## Langkah 2: Pilih metode untuk menginstal tambalan
<a name="_step_2_choose_the_method_to_install_the_patch"></a>

Ada tiga metode untuk menambal dan menginstal peningkatan keamanan di tempat pada node. Metode mana yang dapat Anda gunakan tergantung pada apakah tambalan tersedia dari sistem operasi di manajer paket atau tidak:

1. Instal tambalan dengan `nodeadm upgrade` yang dipublikasikan ke manajer paket, lihat [Langkah 2 a](#hybrid-nodes-security-nodeadm).

1. Instal tambalan dengan manajer paket secara langsung, lihat [Langkah 2 b](#hybrid-nodes-security-package).

1. Instal patch kustom yang tidak dipublikasikan di manajer paket. Perhatikan bahwa ada pertimbangan khusus untuk tambalan khusus untuk`containerd`, [Langkah 2 c](#hybrid-nodes-security-manual).

## Langkah 2 a: Menambal dengan `nodeadm upgrade`
<a name="hybrid-nodes-security-nodeadm"></a>

Setelah Anda mengonfirmasi bahwa tambalan `containerd` CVE telah dipublikasikan ke OS atau repo Docker (baik Apt atau RPM), Anda dapat menggunakan `nodeadm upgrade` perintah untuk meningkatkan ke versi terbaru. `containerd` Karena ini bukan upgrade versi Kubernetes, Anda harus meneruskan versi Kubernetes Anda saat ini ke perintah upgrade. `nodeadm`

```
nodeadm upgrade K8S_VERSION --config-source file:///root/nodeConfig.yaml
```

## Langkah 2 b: Menambal dengan manajer paket sistem operasi
<a name="hybrid-nodes-security-package"></a>

Atau Anda juga dapat memperbarui melalui manajer paket masing-masing dan menggunakannya untuk meningkatkan `containerd` paket sebagai berikut.

 **Amazon Linux 2023** 

```
sudo yum update -y
sudo yum install -y containerd
```

 **RHEL** 

```
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum update -y
sudo yum install -y containerd
```

 **Ubuntu** 

```
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt install -y --only-upgrade containerd.io
```

## Langkah 2 c: Patch `Containerd` CVE tidak dipublikasikan di manajer paket
<a name="hybrid-nodes-security-manual"></a>

Jika `containerd` versi yang ditambal hanya tersedia dengan cara lain alih-alih di manajer paket, misalnya dalam GitHub rilis, maka Anda dapat menginstal `containerd` dari GitHub situs resmi.

1. Jika mesin telah bergabung dengan cluster sebagai node hybrid, maka Anda perlu menjalankan `nodeadm uninstall` perintah.

1. Instal `containerd` binari resmi. Anda dapat menggunakan langkah-langkah [langkah-langkah instalasi resmi](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-1-from-the-official-binaries) pada GitHub.

1. Jalankan `nodeadm install` perintah dengan `--containerd-source` argumen yang disetel ke`none`, yang akan melewati `containerd` instalasi`nodeadm`. Anda dapat menggunakan nilai `none` dalam `containerd` sumber untuk sistem operasi apa pun yang sedang dijalankan oleh node.

   ```
   nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --containerd-source none
   ```

# Hapus node hybrid
<a name="hybrid-nodes-remove"></a>

Topik ini menjelaskan cara menghapus node hybrid dari cluster Amazon EKS Anda. [Anda harus menghapus node hybrid Anda dengan alat yang kompatibel dengan Kubernetes seperti kubectl.](https://kubernetes.io/docs/reference/kubectl/) Biaya untuk node hybrid berhenti ketika objek node dihapus dari cluster Amazon EKS. Untuk informasi selengkapnya tentang harga node hibrida, lihat [Harga Amazon EKS](https://aws.amazon.com/eks/pricing/).

**penting**  
Menghapus node mengganggu beban kerja yang berjalan pada node. Sebelum menghapus node hybrid, sebaiknya Anda menguras node terlebih dahulu untuk memindahkan pod ke node aktif lainnya. Untuk informasi selengkapnya tentang menguras node, lihat [Safely Drain a Node](https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/) dalam dokumentasi Kubernetes.

Jalankan langkah-langkah kubectl di bawah ini dari mesin lokal atau instance yang Anda gunakan untuk berinteraksi dengan titik akhir API Kubernetes klaster Amazon EKS. Jika Anda menggunakan `kubeconfig` file tertentu, gunakan `--kubeconfig` bendera.

## Langkah 1: Daftar node Anda
<a name="_step_1_list_your_nodes"></a>

```
kubectl get nodes
```

## Langkah 2: Tiriskan node Anda
<a name="_step_2_drain_your_node"></a>

Lihat [kubectl drain](https://kubernetes.io/docs/reference/kubectl/generated/kubectl_drain/) di dokumentasi Kubernetes untuk informasi selengkapnya tentang perintah. `kubectl drain`

```
kubectl drain --ignore-daemonsets <node-name>
```

## Langkah 3: Hentikan dan hapus instalasi artefak node hybrid
<a name="_step_3_stop_and_uninstall_hybrid_nodes_artifacts"></a>

Anda dapat menggunakan Amazon EKS Hybrid Nodes CLI (`nodeadm`) untuk menghentikan dan menghapus artefak node hybrid dari host. Anda harus menjalankan `nodeadm` dengan pengguna yang memiliki root/sudo hak istimewa. Secara default, tidak `nodeadm uninstall` akan melanjutkan jika ada pod yang tersisa di node. Jika Anda menggunakan AWS Systems Manager (SSM) sebagai penyedia kredensialnya, `nodeadm uninstall` perintah tersebut membatalkan pendaftaran host sebagai instans terkelola SSM. AWS Untuk informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

```
nodeadm uninstall
```

## Langkah 4: Hapus node Anda dari cluster
<a name="_step_4_delete_your_node_from_the_cluster"></a>

Dengan artefak node hybrid dihentikan dan dihapus, hapus sumber daya node dari cluster Anda.

```
kubectl delete node <node-name>
```

## Langkah 5: Periksa artefak yang tersisa
<a name="_step_5_check_for_remaining_artifacts"></a>

Tergantung pada pilihan CNI Anda, mungkin ada artefak yang tersisa di node hybrid Anda setelah menjalankan langkah-langkah di atas. Lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) untuk informasi selengkapnya.

# Konfigurasikan jaringan aplikasi, add-on, dan webhook untuk node hybrid
<a name="hybrid-nodes-configure"></a>

Setelah Anda membuat kluster EKS untuk node hibrida, konfigurasikan kemampuan tambahan untuk jaringan aplikasi (CNI, BGP, Ingress, Load Balancing, Kebijakan Jaringan), add-on, webhook, dan pengaturan proxy. Untuk daftar lengkap EKS dan add-on komunitas yang kompatibel dengan node hibrida, lihat[Konfigurasikan add-on untuk node hybrid](hybrid-nodes-add-ons.md).

 **Wawasan kluster EKS EKS menyertakan pemeriksaan wawasan untuk kesalahan konfigurasi dalam penyiapan node hibrid Anda yang dapat mengganggu fungsionalitas klaster atau beban** kerja Anda. Untuk informasi lebih lanjut tentang wawasan cluster, lihat[Bersiaplah untuk upgrade versi Kubernetes dan pecahkan masalah kesalahan konfigurasi dengan wawasan klaster](cluster-insights.md).

Berikut ini mencantumkan kemampuan umum dan add-on yang dapat Anda gunakan dengan node hybrid:
+  **Container Networking Interface (CNI)**: AWS mendukung [Cilium](https://docs.cilium.io/en/stable/index.html) sebagai CNI untuk node hybrid. Untuk informasi selengkapnya, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md). Perhatikan bahwa AWS VPC CNI tidak dapat digunakan dengan node hybrid.
+  **CoreDNS dan `kube-proxy`**: CoreDNS dan diinstal secara otomatis ketika node hybrid `kube-proxy` bergabung dengan cluster EKS. Add-on ini dapat dikelola sebagai add-on EKS setelah pembuatan cluster.
+  **Ingress dan Load Balancing**: Anda dapat menggunakan Load AWS Balancer Controller dan Application Load Balancer (ALB) atau Network Load Balancer (NLB) dengan tipe target untuk beban kerja yang berjalan pada node hybrid. `ip` AWS mendukung fitur load balancing Ingress, Gateway, dan Kubernetes Service bawaan Cilium untuk beban kerja yang berjalan pada node hybrid. Untuk informasi selengkapnya, lihat [Konfigurasikan Ingress Kubernetes untuk node hybrid](hybrid-nodes-ingress.md) dan [Konfigurasikan Layanan tipe LoadBalancer untuk node hibrida](hybrid-nodes-load-balancing.md).
+  **Metrik**: Anda dapat menggunakan Amazon Managed Service for Prometheus (AMP) tanpa agen scraper, Distro for Open Telemetry (ADOT) AWS , dan Amazon Observability Agent dengan node hybrid. CloudWatch Untuk menggunakan scraper tanpa agen AMP untuk metrik pod pada node hybrid, pod Anda harus dapat diakses dari VPC yang Anda gunakan untuk cluster EKS.
+  **Log**: Anda dapat mengaktifkan pencatatan bidang kontrol EKS untuk cluster berkemampuan node hibrida. Anda dapat menggunakan add-on ADOT EKS dan add-on Amazon CloudWatch Observability Agent EKS untuk node hybrid dan pod logging.
+  **Identitas Pod dan IRSA**: Anda dapat menggunakan EKS Pod Identities dan IAM Roles for Service Accounts (IRSA) dengan aplikasi yang berjalan pada node hybrid untuk mengaktifkan akses granular untuk pod Anda yang berjalan pada node hybrid dengan layanan lain. AWS 
+  **Webhooks**: Jika Anda menjalankan webhook, lihat pertimbangan dan langkah-langkah [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) untuk menjalankan webhook secara opsional di node cloud jika Anda tidak dapat membuat jaringan pod lokal dapat dirutekan.
+  **Proxy**: Jika Anda menggunakan server proxy di lingkungan lokal untuk lalu lintas yang meninggalkan pusat data atau lingkungan edge, Anda dapat mengonfigurasi node dan cluster hibrida untuk menggunakan server proxy Anda. Lihat informasi yang lebih lengkap di [Konfigurasikan proxy untuk node hybrid](hybrid-nodes-proxy.md).

**Topics**
+ [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)
+ [Konfigurasikan add-on untuk node hybrid](hybrid-nodes-add-ons.md)
+ [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md)
+ [Konfigurasikan proxy untuk node hybrid](hybrid-nodes-proxy.md)
+ [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md)
+ [Konfigurasikan Ingress Kubernetes untuk node hybrid](hybrid-nodes-ingress.md)
+ [Konfigurasikan Layanan tipe LoadBalancer untuk node hibrida](hybrid-nodes-load-balancing.md)
+ [Konfigurasikan Kebijakan Jaringan Kubernetes untuk node hybrid](hybrid-nodes-network-policies.md)

# Konfigurasikan CNI untuk node hybrid
<a name="hybrid-nodes-cni"></a>

Cilium adalah Container Networking Interface (CNI) yang AWS didukung untuk Amazon EKS Hybrid Nodes. Anda harus menginstal CNI untuk node hybrid agar siap melayani beban kerja. Node hibrida muncul dengan status `Not Ready` sampai CNI berjalan. Anda dapat mengelola CNI dengan alat pilihan Anda seperti Helm. Petunjuk pada halaman ini mencakup manajemen siklus hidup Cilium (instal, tingkatkan, hapus). Lihat[Ikhtisar Cilium Ingress dan Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium),[Jenis layanan LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer), dan [Konfigurasikan Kebijakan Jaringan Kubernetes untuk node hybrid](hybrid-nodes-network-policies.md) untuk cara mengonfigurasi Cilium untuk kebijakan ingress, load balancing, dan network.

Cilium tidak didukung oleh AWS saat berjalan di node di AWS Cloud. Amazon VPC CNI tidak kompatibel dengan node hybrid dan VPC CNI dikonfigurasi dengan anti-afinitas untuk label. `eks.amazonaws.com/compute-type: hybrid`

Dokumentasi Calico sebelumnya di halaman ini telah dipindahkan ke [EKS Hybrid Examples Repository](https://github.com/aws-samples/eks-hybrid-examples).

## Kompatibilitas versi
<a name="hybrid-nodes-cilium-version-compatibility"></a>

Versi cilium `v1.17.x` dan `v1.18.x` didukung untuk EKS Hybrid Nodes untuk setiap versi Kubernetes yang didukung di Amazon EKS.

**catatan**  
 Persyaratan kernel **Cilium v1.18.3: Karena persyaratan kernel** (kernel Linux >= 5.10), Cilium v1.18.3 tidak didukung pada:
+ Ubuntu 20.04
+ Red Hat Enterprise Linux (RHEL) 8

Untuk persyaratan sistem, lihat Persyaratan [sistem Cilium](https://docs.cilium.io/en/stable/operations/system_requirements/).

Lihat [dukungan versi Kubernetes untuk versi](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) Kubernetes yang didukung oleh Amazon EKS. EKS Hybrid Nodes memiliki dukungan versi Kubernetes yang sama dengan cluster Amazon EKS dengan node cloud.

## Kemampuan yang didukung
<a name="hybrid-nodes-cilium-support"></a>

 AWS [memelihara build Cilium untuk EKS Hybrid Nodes yang didasarkan pada proyek Cilium open source.](https://github.com/cilium/cilium) Untuk menerima dukungan dari AWS Cilium, Anda harus menggunakan build Cilium yang AWS dikelola dan versi Cilium yang didukung.

 AWS memberikan dukungan teknis untuk konfigurasi default dari kemampuan Cilium berikut untuk digunakan dengan EKS Hybrid Nodes. Jika Anda berencana untuk menggunakan fungsionalitas di luar cakupan AWS dukungan, disarankan untuk mendapatkan dukungan komersial alternatif untuk Cilium atau memiliki keahlian internal untuk memecahkan masalah dan berkontribusi perbaikan pada proyek Cilium.


| Fitur Cilium | Didukung oleh AWS  | 
| --- | --- | 
|  Kesesuaian jaringan Kubernetes  |  Ya  | 
|  Konektivitas cluster inti  |  Ya  | 
|  Keluarga IP  |  IPv4  | 
|  Manajemen Siklus Hidup  |  Helm  | 
|  Mode Jaringan  |  Enkapsulasi VXLAN  | 
|  Manajemen Alamat IP (IPAM)  |  Lingkup Cluster Cilium IPAM  | 
|  Kebijakan Jaringan  |  Kebijakan Jaringan Kubernetes  | 
|  Protokol Gerbang Perbatasan (BGP)  |  Bidang Kontrol Cilium BGP  | 
|  Masuknya Kubernetes  |  Masuknya Cilium, Gerbang Cilium  | 
|   LoadBalancer Alokasi IP Layanan  |  Load Balancer Cilium IPAM  | 
|  Iklan Alamat LoadBalancer IP Layanan  |  Bidang Kontrol Cilium BGP  | 
|  penggantian kube-proxy  |  Ya  | 

## Pertimbangan silia
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Repositori Helm** [- AWS menjadi tuan rumah bagan Cilium Helm di Amazon Elastic Container Registry Public (Amazon ECR Public) di Amazon EKS Cilium/Cilium.](https://gallery.ecr.aws/eks/cilium/cilium) Versi yang tersedia meliputi:
  + Silia v1.17.9: `oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0` 
  + Silia v1.18.3: `oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0` 

    Perintah dalam topik ini menggunakan repositori ini. Perhatikan bahwa `helm repo` perintah tertentu tidak valid untuk repositor Helm di Amazon ECR Public, jadi Anda tidak dapat merujuk ke repositori ini dari nama repo Helm lokal. Sebagai gantinya, gunakan URI lengkap di sebagian besar perintah.
+ [Secara default, Cilium dikonfigurasi untuk berjalan dalam mode overlay/tunnel dengan VXLAN sebagai metode enkapsulasi.](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation) Mode ini memiliki persyaratan paling sedikit pada jaringan fisik yang mendasarinya.
+ Secara default, Cilium [menyamarkan](https://docs.cilium.io/en/stable/network/concepts/masquerading/) alamat IP sumber dari semua lalu lintas pod meninggalkan cluster ke alamat IP node. Jika Anda menonaktifkan masquerading, maka pod Anda CIDRs harus dapat dirutekan di jaringan lokal Anda.
+ Jika Anda menjalankan webhook pada node hybrid, pod Anda CIDRs harus dapat dirutekan di jaringan lokal Anda. Jika pod CIDRs Anda tidak dapat dirutekan di jaringan lokal, maka disarankan untuk menjalankan webhook di node cloud di cluster yang sama. Lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) dan [Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md) untuk informasi lebih lanjut.
+  AWS merekomendasikan penggunaan fungsionalitas BGP bawaan Cilium untuk membuat pod Anda CIDRs dapat dirutekan di jaringan lokal Anda. Untuk informasi lebih lanjut tentang cara mengkonfigurasi Cilium BGP dengan node hybrid, lihat. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md)
+ IP Address Management (IPAM) default di Cilium disebut [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/), di mana operator Cilium mengalokasikan alamat IP untuk setiap node berdasarkan pod yang dikonfigurasi pengguna. CIDRs

## Instal Cilium pada node hybrid
<a name="hybrid-nodes-cilium-install"></a>

### Prosedur
<a name="_procedure"></a>

1. Buat file YAMM bernama`cilium-values.yaml`. Contoh berikut mengonfigurasi Cilium untuk berjalan hanya pada node hibrida dengan menetapkan afinitas untuk `eks.amazonaws.com/compute-type: hybrid` label untuk agen dan operator Cilium.
   + Konfigurasikan `clusterPoolIpv4PodCIDRList` dengan pod yang sama dengan yang CIDRs Anda konfigurasikan untuk *jaringan pod jarak jauh* kluster EKS Anda. Misalnya, `10.100.0.0/24`. Operator Cilium mengalokasikan irisan alamat IP dari dalam ruang IP yang dikonfigurasi. `clusterPoolIpv4PodCIDRList` CIDR pod Anda tidak boleh tumpang tindih dengan node CIDR lokal, CIDR VPC Anda, atau CIDR layanan Kubernetes Anda.
   + Konfigurasikan `clusterPoolIpv4MaskSize` berdasarkan pod yang Anda butuhkan per node. Misalnya, `25` untuk ukuran segmen /25 128 pod per node.
   + Jangan mengubah `clusterPoolIpv4PodCIDRList` atau `clusterPoolIpv4MaskSize` setelah menerapkan Cilium di klaster Anda, lihat [Memperluas kumpulan klaster untuk informasi selengkapnya](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool).
   + Jika Anda menjalankan Cilium dalam mode penggantian kube-proxy, atur `kubeProxyReplacement: "true"` nilai Helm Anda dan pastikan Anda tidak memiliki penerapan kube-proxy yang berjalan pada node yang sama dengan Cilium.
   + Contoh di bawah ini menonaktifkan proxy Envoy Layer 7 (L7) yang digunakan Cilium untuk kebijakan dan ingress jaringan L7. Untuk informasi selengkapnya, lihat [Konfigurasikan Kebijakan Jaringan Kubernetes untuk node hybrid](hybrid-nodes-network-policies.md) dan [Ikhtisar Cilium Ingress dan Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + Contoh di bawah ini mengonfigurasi`loadBalancer.serviceTopology`: `true` agar Distribusi Lalu Lintas Layanan berfungsi dengan benar jika Anda mengonfigurasinya untuk layanan Anda. Untuk informasi selengkapnya, lihat [Konfigurasikan Distribusi Lalu Lintas Layanan](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Untuk daftar lengkap nilai Helm untuk Cilium, lihat [referensi Helm](https://docs.cilium.io/en/stable/helm-reference/) di dokumentasi Cilium.

     ```
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
     ipam:
       mode: cluster-pool
       operator:
         clusterPoolIPv4MaskSize: 25
         clusterPoolIPv4PodCIDRList:
         - POD_CIDR
     loadBalancer:
       serviceTopology: true
     operator:
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: eks.amazonaws.com/compute-type
                 operator: In
                 values:
                   - hybrid
       unmanagedPodWatcher:
         restart: false
     loadBalancer:
       serviceTopology: true
     envoy:
       enabled: false
     kubeProxyReplacement: "false"
     ```

1. Instal Cilium di cluster Anda.
   + Ganti `CILIUM_VERSION` dengan versi Cilium (misalnya `1.17.9-0` atau`1.18.3-0`). Disarankan untuk menggunakan versi patch terbaru untuk versi minor Cilium.
   + Pastikan node Anda memenuhi persyaratan kernel untuk versi yang Anda pilih. Cilium v1.18.3 membutuhkan kernel Linux >= 5.10.
   + Jika Anda menggunakan file kubeconfig tertentu, gunakan `--kubeconfig` flag dengan perintah Helm install.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Konfirmasikan instalasi Cilium Anda berhasil dengan perintah berikut. Anda akan melihat `cilium-operator` penerapan dan `cilium-agent` berjalan pada setiap node hybrid Anda. Selain itu, node hybrid Anda sekarang harus memiliki status`Ready`. Untuk informasi tentang cara mengonfigurasi Cilium BGP untuk mengiklankan pod Anda ke jaringan lokal, CIDRs lanjutkan ke. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md)

   ```
   kubectl get pods -n kube-system
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   cilium-jjjn8                      1/1     Running   0          11m
   cilium-operator-d4f4d7fcb-sc5xn   1/1     Running   0          11m
   ```

   ```
   kubectl get nodes
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION
   mi-04a2cf999b7112233   Ready    <none>   19m   v1.31.0-eks-a737599
   ```

## Tingkatkan Cilium pada node hibrida
<a name="hybrid-nodes-cilium-upgrade"></a>

Sebelum memutakhirkan penerapan Cilium Anda, tinjau [dokumentasi pemutakhiran Cilium dan catatan pemutakhiran](https://docs.cilium.io/en/v1.17/operations/upgrade/) dengan cermat untuk memahami perubahan dalam versi Cilium target.

1. Pastikan Anda telah menginstal `helm` CLI di lingkungan baris perintah Anda. Lihat [dokumentasi Helm](https://helm.sh/docs/intro/quickstart/) untuk petunjuk penginstalan.

1. Jalankan pemeriksaan pra-penerbangan peningkatan Cilium. Ganti `CILIUM_VERSION` dengan versi Cilium target Anda. Kami menyarankan Anda menjalankan versi patch terbaru untuk versi minor Cilium Anda. Anda dapat menemukan rilis patch terbaru untuk rilis Cilium minor tertentu di [bagian Stable Releases](https://github.com/cilium/cilium#stable-releases) dari dokumentasi Cilium.

   ```
   helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace=kube-system \
     --set preflight.enabled=true \
     --set agent=false \
     --set operator.enabled=false
   ```

1. Setelah menerapkan`cilium-preflight.yaml`, pastikan jumlah pod sama dengan jumlah `READY` pod Cilium yang berjalan.

   ```
   kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
   ```

   ```
   NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   cilium                    2         2         2       2            2           <none>          1h20m
   cilium-pre-flight-check   2         2         2       2            2           <none>          7m15s
   ```

1. Setelah jumlah pod READY sama, pastikan penerapan pra-penerbangan Cilium juga ditandai sebagai READY 1/1. Jika menunjukkan READY 0/1, lihat bagian [Validasi CNP](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) dan selesaikan masalah dengan penerapan sebelum melanjutkan dengan peningkatan.

   ```
   kubectl get deployment -n kube-system cilium-pre-flight-check -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Hapus preflight

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Sebelum menjalankan `helm upgrade` perintah, pertahankan nilai untuk penerapan Anda di `existing-cilium-values.yaml` atau gunakan opsi baris `--set` perintah untuk pengaturan Anda saat Anda menjalankan perintah pemutakhiran. Operasi pemutakhiran menimpa Cilium ConfigMap, jadi sangat penting bahwa nilai konfigurasi Anda diteruskan saat Anda memutakhirkan.

   ```
   helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
   ```

1. Selama operasi cluster normal, semua komponen Cilium harus menjalankan versi yang sama. Langkah-langkah berikut menjelaskan cara memutakhirkan semua komponen dari satu rilis stabil ke rilis stabil selanjutnya. Saat memutakhirkan dari satu rilis minor ke rilis minor lainnya, disarankan untuk memutakhirkan ke rilis patch terbaru untuk versi minor Cilium yang ada terlebih dahulu. Untuk meminimalkan gangguan, atur `upgradeCompatibility` opsi ke versi Cilium awal yang Anda instal di cluster ini.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace kube-system \
     --set upgradeCompatibility=1.X \
     -f existing-cilium-values.yaml
   ```

1. (Opsional) Jika Anda perlu mengembalikan upgrade Anda karena masalah, jalankan perintah berikut.

   ```
   helm history cilium --namespace kube-system
   helm rollback cilium [REVISION] --namespace kube-system
   ```

## Hapus Cilium dari node hibrida
<a name="hybrid-nodes-cilium-delete"></a>

1. Jalankan perintah berikut untuk menghapus semua komponen Cilium dari cluster Anda. Catatan, menghapus instalasi CNI dapat memengaruhi kesehatan node dan pod dan tidak boleh dilakukan pada cluster produksi.

   ```
   helm uninstall cilium --namespace kube-system
   ```

   Antarmuka dan rute yang dikonfigurasi oleh Cilium tidak dihapus secara default saat CNI dihapus dari cluster, lihat [GitHub masalah](https://github.com/cilium/cilium/issues/34289) untuk informasi selengkapnya.

1. Untuk membersihkan file konfigurasi dan sumber daya on-disk, jika Anda menggunakan direktori konfigurasi standar, Anda dapat menghapus file seperti yang ditunjukkan oleh [`cni-uninstall.sh`skrip](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) di repositori Cilium pada. GitHub

1. Untuk menghapus Cilium Custom Resource Definitions (CRDs) dari cluster Anda, Anda dapat menjalankan perintah berikut.

   ```
   kubectl get crds -oname | grep "cilium" | xargs kubectl delete
   ```

# Konfigurasikan add-on untuk node hybrid
<a name="hybrid-nodes-add-ons"></a>

Halaman ini menjelaskan pertimbangan untuk menjalankan AWS add-on dan add-on komunitas di Amazon EKS Hybrid Nodes. Untuk mempelajari lebih lanjut tentang add-on Amazon EKS dan proses untuk membuat, meningkatkan, dan menghapus add-on dari klaster Anda, lihat. [Add-on Amazon EKS](eks-add-ons.md) Kecuali dinyatakan lain di halaman ini, proses untuk membuat, meningkatkan, dan menghapus add-on Amazon EKS sama untuk klaster Amazon EKS dengan node hibrida seperti halnya untuk cluster Amazon EKS dengan node yang berjalan di Cloud. AWS Hanya add-on yang disertakan pada halaman ini yang telah divalidasi untuk kompatibilitas dengan Amazon EKS Hybrid Nodes.

 AWS Add-on berikut ini kompatibel dengan Amazon EKS Hybrid Nodes.


|  AWS add-on | Versi add-on yang kompatibel | 
| --- | --- | 
|  kube-proxy  |  v1.25.14-eksbuild.2 dan di atas  | 
|  CoreDNS  |  v1.9.3-eksbuild.7 dan di atas  | 
|   AWS Distro untuk OpenTelemetry (ADOT)  |  v0.102.1-eksbuild.2 dan di atas  | 
|  CloudWatch Agen observabilitas  |  v2.2.1-eksbuild.1 dan di atas  | 
|  Agen Identitas EKS Pod  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/hybrid-nodes-add-ons.html)  | 
|  Agen pemantauan simpul  |  v1.2.0-eksbuild.1 dan di atas  | 
|  Pengontrol snapshot CSI  |  v8.1.0-eksbuild.1 dan di atas  | 
|   AWS Konektor CA Pribadi untuk Kubernetes  |  v1.6.0-eksbuild.1 dan di atas  | 
|  Pengemudi Amazon FSx CSI  |  v1.7.0-eksbuild.1 dan di atas  | 
|   AWS Toko Rahasia Penyedia driver CSI  |  v2.1.1-eksbuild.1 dan di atas  | 

Add-on komunitas berikut kompatibel dengan Amazon EKS Hybrid Nodes. Untuk mempelajari lebih lanjut tentang add-on komunitas, lihat[Pengaya komunitas](community-addons.md).


| Add-on komunitas | Versi add-on yang kompatibel | 
| --- | --- | 
|  Server Metrik Kubernetes  |  v0.7.2-eksbuild.1 dan di atas  | 
|  manajer sertifikat  |  v1.17.2-eksbuild.1 dan di atas  | 
|  Prometheus Node Exportir  |  v1.9.1-eksbuild.2 dan di atas  | 
|  kube-state-metrics  |  v2.15.0-eksbuild.4 dan di atas  | 
|  DNS Eksternal  |  v0.19.0-eksbuild.1 dan di atas  | 

Selain add-on Amazon EKS pada tabel di atas, [Amazon Managed Service untuk Prometheus Collector,](prometheus.md) dan Load [AWS Balancer Controller [untuk masuknya aplikasi](alb-ingress.md) (HTTP) [dan load](network-load-balancing.md) balancing](aws-load-balancer-controller.md) (TCP/UDP) kompatibel dengan node hybrid.

Ada AWS add-on dan add-on komunitas yang tidak kompatibel dengan Amazon EKS Hybrid Nodes. Versi terbaru dari add-on ini memiliki aturan anti-afinitas untuk `eks.amazonaws.com/compute-type: hybrid` label default yang diterapkan pada node hybrid. Ini mencegah mereka berjalan pada node hybrid saat digunakan di cluster Anda. Jika Anda memiliki cluster dengan node hybrid dan node yang berjalan di AWS Cloud, Anda dapat menerapkan add-on ini di cluster Anda ke node yang berjalan di Cloud. AWS Amazon VPC CNI tidak kompatibel dengan node hybrid, dan Cilium dan Calico didukung sebagai Container Networking Interfaces () CNIs untuk Amazon EKS Hybrid Nodes. Untuk informasi selengkapnya, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md).

## AWS add-on
<a name="hybrid-nodes-add-ons-aws-add-ons"></a>

Bagian berikut menjelaskan perbedaan antara menjalankan AWS add-on yang kompatibel pada node hybrid dibandingkan dengan jenis komputasi Amazon EKS lainnya.

## kube-proxy dan CoreDNS
<a name="hybrid-nodes-add-ons-core"></a>

EKS menginstal kube-proxy dan CoreDNS sebagai add-on yang dikelola sendiri secara default saat Anda membuat cluster EKS dengan API dan, termasuk dari CLI. AWS AWS SDKs AWS Anda dapat menimpa add-on ini dengan add-on Amazon EKS setelah pembuatan cluster. Referensi dokumentasi EKS untuk detail tentang [Kelola `kube-proxy` di kluster Amazon EKS](managing-kube-proxy.md) dan[Kelola CoreDNS untuk DNS di kluster Amazon EKS](managing-coredns.md). Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, AWS rekomendasikan untuk memiliki setidaknya satu replika CoreDNS pada node hybrid dan setidaknya satu replika CoreDNS di node Anda di Cloud. AWS Lihat [Konfigurasikan replika CoreDNS](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-coredns) langkah-langkah konfigurasi.

## CloudWatch Agen observabilitas
<a name="hybrid-nodes-add-ons-cw"></a>

Operator agen CloudWatch Observability menggunakan [webhook](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Jika Anda menjalankan operator pada node hibrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal dan Anda harus mengonfigurasi kluster EKS Anda dengan jaringan pod jarak jauh Anda. Untuk informasi selengkapnya, lihat [Mengonfigurasi webhook untuk node hybrid](hybrid-nodes-webhooks.md).

Metrik tingkat simpul tidak tersedia untuk node hibrida karena [CloudWatch Wawasan Kontainer](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) bergantung pada ketersediaan [Layanan Metadata Instance (IMDS) untuk metrik tingkat simpul](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html). Metrik tingkat cluster, beban kerja, pod, dan container tersedia untuk node hybrid.

Setelah menginstal add-on dengan mengikuti langkah-langkah yang dijelaskan di [Instal CloudWatch agen dengan Amazon CloudWatch Observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html), manifes add-on harus diperbarui sebelum agen dapat berjalan dengan sukses di node hybrid. Edit `amazoncloudwatchagents` sumber daya pada cluster untuk menambahkan variabel `RUN_WITH_IRSA` lingkungan seperti yang ditunjukkan di bawah ini.

```
kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
```

```
apiVersion: v1
items:
- apiVersion: cloudwatch.aws.amazon.com/v1alpha1
  kind: AmazonCloudWatchAgent
  metadata:
    ...
    name: cloudwatch-agent
    namespace: amazon-cloudwatch
    ...
  spec:
    ...
    env:
    - name: RUN_WITH_IRSA # <-- Add this
      value: "True" # <-- Add this
    - name: K8S_NODE_NAME
      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
          ...
```

## Kolektor terkelola Prometheus yang Dikelola Amazon untuk node hibrida
<a name="hybrid-nodes-add-ons-amp"></a>

Kolektor terkelola Amazon Managed Service for Prometheus (AMP) terdiri dari scraper yang menemukan dan mengumpulkan metrik dari sumber daya di klaster Amazon EKS. AMP mengelola scraper untuk Anda, menghilangkan kebutuhan untuk mengelola instans, agen, atau pencakar apa pun sendiri.

Anda dapat menggunakan kolektor terkelola AMP tanpa konfigurasi tambahan khusus untuk node hibrid. Namun titik akhir metrik untuk aplikasi Anda pada node hybrid harus dapat dijangkau dari VPC, termasuk rute dari VPC ke jaringan pod jarak jauh CIDRs dan port yang terbuka di firewall lokal Anda. Selain itu, cluster Anda harus memiliki [akses endpoint cluster pribadi](cluster-endpoint.md).

Ikuti langkah-langkah dalam [Menggunakan kolektor AWS terkelola](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html) di Amazon Managed Service for Prometheus User Guide.

## AWS Distro untuk OpenTelemetry (ADOT)
<a name="hybrid-nodes-add-ons-adot"></a>

Anda dapat menggunakan add-on AWS Distro for OpenTelemetry (ADOT) untuk mengumpulkan metrik, log, dan melacak data dari aplikasi Anda yang berjalan pada node hybrid. ADOT menggunakan [webhook](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) masuk untuk mengubah dan memvalidasi permintaan Sumber Daya Kustom Kolektor. Jika Anda menjalankan operator ADOT pada node hibrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal dan Anda harus mengonfigurasi kluster EKS dengan jaringan pod jarak jauh. Untuk informasi selengkapnya, lihat [Mengonfigurasi webhook untuk node hybrid](hybrid-nodes-webhooks.md).

Ikuti langkah-langkah dalam [Memulai dengan AWS Distro untuk OpenTelemetry menggunakan EKS Add-On](https://aws-otel.github.io/docs/getting-started/adot-eks-add-on) di * AWS Distro* untuk dokumentasi. OpenTelemetry

## AWS Pengontrol Load Balancer
<a name="hybrid-nodes-add-ons-lbc"></a>

Anda dapat menggunakan [AWS Load Balancer Controller](aws-load-balancer-controller.md) dan Application Load Balancer (ALB) atau Network Load Balancer (NLB) dengan `ip` tipe target untuk beban kerja pada node hybrid Target IP yang digunakan dengan ALB atau NLB harus dapat dirutekan dari. AWS[Pengontrol AWS Load Balancer juga menggunakan webhook.](https://kubernetes.io/docs/reference/access-authn-authz/webhook/) Jika Anda menjalankan operator AWS Load Balancer Controller pada node hybrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal dan Anda harus mengonfigurasi klaster EKS dengan jaringan pod jarak jauh. Untuk informasi selengkapnya, lihat [Mengonfigurasi webhook untuk node hybrid](hybrid-nodes-webhooks.md).

Untuk menginstal AWS Load Balancer Controller, ikuti langkah-langkah di [AWS Application Load Balancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-alb) atau. [AWS Network Load Balancer](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-nlb)

Untuk masuk dengan ALB, Anda harus menentukan anotasi di bawah ini. Untuk informasi selengkapnya, lihat [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md).

```
alb.ingress.kubernetes.io/target-type: ip
```

Untuk load balancing dengan NLB, Anda harus menentukan anotasi di bawah ini. Untuk informasi selengkapnya, lihat [Rute lalu lintas TCP dan UDP dengan Network Load Balancers](network-load-balancing.md).

```
service.beta.kubernetes.io/aws-load-balancer-type: "external"
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"
```

## Agen Identitas EKS Pod
<a name="hybrid-nodes-add-ons-pod-id"></a>

**catatan**  
Agar berhasil menerapkan add-on EKS Pod Identity Agent pada node hybrid yang menjalankan Bottlerocket, pastikan versi Bottlerocket Anda setidaknya v1.39.0. Agen Identitas Pod tidak didukung pada versi Bottlerocket sebelumnya di lingkungan node hybrid.

Agen Identitas Pod Amazon DaemonSet EKS asli bergantung pada ketersediaan EC2 IMDS pada node untuk mendapatkan kredensi yang diperlukan. AWS Karena IMDS tidak tersedia pada node hybrid, dimulai dengan versi 1.3.3-eksbuild.1, add-on Pod Identity Agent secara opsional menerapkan a yang memasang kredensil yang diperlukan. DaemonSet Node hybrid yang menjalankan Bottlerocket memerlukan metode yang berbeda untuk me-mount kredensialnya, dan mulai dari versi 1.3.7-eksbuild.2, add-on Pod Identity Agent secara opsional menyebarkan a yang secara khusus menargetkan node hybrid Bottlerocket. DaemonSet Bagian berikut menjelaskan proses untuk mengaktifkan opsional DaemonSets.

### Ubuntu/RHEL/AL2023
<a name="_ubunturhelal2023"></a>

1. Untuk menggunakan agen Pod Identity pada node hybrid Ubuntu/RHEL/Al 2023, atur `enableCredentialsFile: true` di bagian hybrid `nodeadm` konfigurasi seperti yang ditunjukkan di bawah ini:

   ```
   apiVersion: node.eks.aws/v1alpha1
   kind: NodeConfig
   spec:
       hybrid:
           enableCredentialsFile: true # <-- Add this
   ```

   Ini akan dikonfigurasi `nodeadm` untuk membuat file kredensial yang akan dikonfigurasi pada node di bawah`/eks-hybrid/.aws/credentials`, yang akan digunakan oleh `eks-pod-identity-agent` pod. File kredensial ini akan berisi AWS kredensil sementara yang akan di-refresh secara berkala.

1. Setelah Anda memperbarui `nodeadm` konfigurasi pada *setiap* node, jalankan `nodeadm init` perintah berikut dengan Anda `nodeConfig.yaml` untuk menggabungkan node hybrid Anda ke cluster Amazon EKS Anda. Jika node Anda telah bergabung dengan cluster sebelumnya, tetap jalankan `nodeadm init` perintah lagi.

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

1. Instal `eks-pod-identity-agent` dengan dukungan untuk node hybrid diaktifkan, dengan menggunakan AWS CLI atau. Konsol Manajemen AWS

   1.  AWS CLI: Dari mesin yang Anda gunakan untuk mengelola cluster, jalankan perintah berikut untuk menginstal `eks-pod-identity-agent` dengan dukungan untuk node hybrid diaktifkan. Ganti `my-cluster` dengan nama klaster Anda.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}'
      ```

   1.  Konsol Manajemen AWS: Jika Anda menginstal add-on Pod Identity Agent melalui AWS konsol, tambahkan berikut ini ke konfigurasi opsional untuk menyebarkan node hybrid DaemonSet yang menargetkan.

      ```
      {"daemonsets":{"hybrid":{"create": true}}}
      ```

### Bottlerocket
<a name="_bottlerocket"></a>

1. Untuk menggunakan agen Pod Identity pada node hybrid Bottlerocket, tambahkan `--enable-credentials-file=true` flag ke perintah yang digunakan untuk data pengguna container bootstrap Bottlerocket, seperti yang dijelaskan dalam. [Hubungkan node hybrid dengan Bottlerocket](hybrid-nodes-bottlerocket.md)

   1. Jika Anda menggunakan penyedia kredensi SSM, perintah Anda akan terlihat seperti ini:

      ```
      eks-hybrid-ssm-setup --activation-id=<activation-id> --activation-code=<activation-code> --region=<region> --enable-credentials-file=true
      ```

   1. Jika Anda menggunakan penyedia kredensi IAM Roles Anywhere, perintah Anda akan terlihat seperti ini:

      ```
      eks-hybrid-iam-ra-setup --certificate=<certificate> --key=<private-key> --enable-credentials-file=true
      ```

      Ini akan mengkonfigurasi skrip bootstrap untuk membuat file kredensial pada node di bawah`/var/eks-hybrid/.aws/credentials`, yang akan digunakan oleh `eks-pod-identity-agent` pod. File kredensial ini akan berisi AWS kredensil sementara yang akan di-refresh secara berkala.

1. Instal `eks-pod-identity-agent` dengan dukungan untuk node hybrid Bottlerocket diaktifkan, dengan menggunakan CLI atau. AWS Konsol Manajemen AWS

   1.  AWS CLI: Dari mesin yang Anda gunakan untuk mengelola cluster, jalankan perintah berikut untuk menginstal `eks-pod-identity-agent` dengan dukungan untuk node hybrid Bottlerocket diaktifkan. Ganti `my-cluster` dengan nama klaster Anda.

      ```
      aws eks create-addon \
          --cluster-name my-cluster \
          --addon-name eks-pod-identity-agent \
          --configuration-values '{"daemonsets":{"hybrid-bottlerocket":{"create": true}}}'
      ```

   1.  Konsol Manajemen AWS: Jika Anda menginstal add-on Pod Identity Agent melalui AWS konsol, tambahkan berikut ini ke konfigurasi opsional untuk menyebarkan node hybrid Bottlerocket DaemonSet yang menargetkan Bottlerocket.

      ```
      {"daemonsets":{"hybrid-bottlerocket":{"create": true}}}
      ```

## Pengontrol snapshot CSI
<a name="hybrid-nodes-add-ons-csi-snapshotter"></a>

Dimulai dengan versi`v8.1.0-eksbuild.2`, [add-on pengontrol snapshot CSI](csi-snapshot-controller.md) menerapkan aturan anti-afinitas lunak untuk node hibrida, lebih memilih pengontrol `deployment` untuk berjalan di EC2 di Wilayah yang sama dengan bidang kontrol Amazon AWS EKS. Menempatkan bersama `deployment` di AWS Wilayah yang sama dengan bidang kontrol Amazon EKS meningkatkan latensi.

## Pengaya komunitas
<a name="hybrid-nodes-add-ons-community"></a>

Bagian berikut menjelaskan perbedaan antara menjalankan add-on komunitas yang kompatibel pada node hibrida dibandingkan dengan jenis komputasi Amazon EKS lainnya.

## Server Metrik Kubernetes
<a name="hybrid-nodes-add-ons-metrics-server"></a>

Bidang kontrol perlu mencapai IP pod Metrics Server (atau IP node jika HostNetwork diaktifkan). Oleh karena itu, kecuali Anda menjalankan Metrics Server dalam mode HostNetwork, Anda harus mengonfigurasi jaringan pod jarak jauh saat membuat cluster Amazon EKS Anda, dan Anda harus membuat alamat IP pod Anda dapat dirutekan. Menerapkan Border Gateway Protocol (BGP) dengan CNI adalah salah satu cara umum untuk membuat alamat IP pod Anda dapat dirutekan.

## manajer sertifikat
<a name="hybrid-nodes-add-ons-cert-manager"></a>

 `cert-manager`menggunakan [webhooks](https://kubernetes.io/docs/reference/access-authn-authz/webhook/). Jika Anda menjalankan `cert-manager` node hibrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal dan Anda harus mengonfigurasi kluster EKS dengan jaringan pod jarak jauh. Untuk informasi selengkapnya, lihat [Mengonfigurasi webhook untuk node hybrid](hybrid-nodes-webhooks.md).

# Konfigurasikan webhook untuk node hybrid
<a name="hybrid-nodes-webhooks"></a>

Halaman ini merinci pertimbangan untuk menjalankan webhook dengan node hybrid. Webhook digunakan dalam aplikasi Kubernetes dan proyek open source, seperti Load Balancer AWS Controller dan CloudWatch Observability Agent, untuk melakukan kemampuan mutasi dan validasi saat runtime.

 **Jaringan pod yang dapat dirutekan** 

Jika Anda dapat membuat CIDR pod lokal dapat dirutekan di jaringan lokal, Anda dapat menjalankan webhook pada node hibrid. Ada beberapa teknik yang dapat Anda gunakan untuk membuat pod lokal CIDR dapat dirutekan di jaringan lokal Anda termasuk Border Gateway Protocol (BGP), rute statis, atau solusi perutean kustom lainnya. BGP adalah solusi yang direkomendasikan karena lebih skalabel dan lebih mudah dikelola daripada solusi alternatif yang memerlukan konfigurasi rute khusus atau manual. AWS mendukung kemampuan BGP Cilium dan Calico untuk pod iklan CIDRs, lihat [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) dan untuk informasi lebih lanjut. [Pod jarak jauh yang dapat dirutekan CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)

 **Jaringan pod yang tidak dapat dirutekan** 

Jika Anda *tidak dapat* membuat CIDR pod lokal dapat dirutekan di jaringan lokal dan perlu menjalankan webhook, sebaiknya jalankan semua webhook di node cloud di cluster EKS yang sama dengan node hibrid Anda.

## Pertimbangan untuk cluster mode campuran
<a name="hybrid-nodes-considerations-mixed-mode"></a>

 *Cluster mode campuran* didefinisikan sebagai cluster EKS yang memiliki node hybrid dan node yang berjalan di AWS Cloud. Saat menjalankan cluster mode campuran, pertimbangkan rekomendasi berikut:
+ Jalankan VPC CNI pada node di AWS Cloud dan Cilium atau Calico pada node hybrid. Cilium dan Calico tidak didukung AWS saat berjalan di node di Cloud. AWS 
+ Konfigurasikan webhook untuk berjalan di node di AWS Cloud. Lihat [Konfigurasikan webhook untuk add-on](#hybrid-nodes-webhooks-add-ons) cara mengonfigurasi webhook untuk AWS dan add-on komunitas.
+ Jika aplikasi Anda memerlukan pod yang berjalan di node di AWS Cloud untuk berkomunikasi langsung dengan pod yang berjalan pada node hybrid (“komunikasi timur-barat”), dan Anda menggunakan CNI VPC pada node di AWS Cloud, dan Cilium atau Calico pada node hybrid, maka CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal Anda.
+ Jalankan setidaknya satu replika CoreDNS pada node AWS di Cloud dan setidaknya satu replika CoreDNS pada node hybrid.
+ Konfigurasikan Distribusi Lalu Lintas Layanan untuk menjaga lalu lintas Layanan lokal ke zona asalnya. Untuk informasi selengkapnya tentang Distribusi Lalu Lintas Layanan, lihat[Konfigurasikan Distribusi Lalu Lintas Layanan](#hybrid-nodes-mixed-service-traffic-distribution).
+ Jika Anda menggunakan AWS Application Load Balancers (ALB) atau Network Load Balancers (NLB) untuk lalu lintas beban kerja yang berjalan pada node hybrid, maka target IP yang digunakan dengan ALB atau NLB harus dapat dirutekan dari. AWS
+ Add-on Metrics Server memerlukan konektivitas dari bidang kontrol EKS ke alamat IP pod Metrics Server. Jika Anda menjalankan add-on Metrics Server pada node hibrid, maka CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal Anda.
+ Untuk mengumpulkan metrik node hibrid menggunakan Amazon Managed Service untuk kolektor terkelola Prometheus (AMP), CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal. Atau, Anda dapat menggunakan kolektor terkelola AMP untuk metrik dan sumber daya bidang kontrol EKS yang berjalan di AWS Cloud, dan add-on AWS Distro for OpenTelemetry (ADOT) untuk mengumpulkan metrik untuk node hibrid.

## Konfigurasikan cluster mode campuran
<a name="hybrid-nodes-mixed-mode"></a>

Untuk melihat webhook yang bermutasi dan memvalidasi yang berjalan di klaster, Anda dapat melihat jenis sumber daya **Ekstensi** di panel **Resources** konsol EKS untuk klaster Anda, atau Anda dapat menggunakan perintah berikut. EKS juga melaporkan metrik webhook di dasbor observabilitas cluster, lihat [Memantau klaster dengan dasbor observabilitas](observability-dashboard.md) untuk informasi lebih lanjut.

```
kubectl get mutatingwebhookconfigurations
```

```
kubectl get validatingwebhookconfigurations
```

### Konfigurasikan Distribusi Lalu Lintas Layanan
<a name="hybrid-nodes-mixed-service-traffic-distribution"></a>

Saat menjalankan cluster mode campuran, kami menyarankan Anda menggunakan [https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution) untuk menjaga lalu lintas Layanan lokal ke zona asalnya. Service Traffic Distribution (tersedia untuk Kubernetes versi 1.31 dan yang lebih baru di EKS) adalah solusi yang direkomendasikan melalui [Topology Aware Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) karena lebih mudah diprediksi. Dengan Distribusi Lalu Lintas Layanan, titik akhir yang sehat di zona tersebut akan menerima semua lalu lintas untuk zona itu. Dengan Topology Aware Routing, setiap layanan harus memenuhi beberapa kondisi di zona tersebut untuk menerapkan perutean kustom, jika tidak, ia merutekan lalu lintas secara merata ke semua titik akhir.

Jika Anda menggunakan Cilium sebagai CNI Anda, Anda harus menjalankan CNI dengan `enable-service-topology` set untuk mengaktifkan Distribusi Lalu Lintas `true` Layanan. Anda dapat meneruskan konfigurasi ini dengan bendera Helm install `--set loadBalancer.serviceTopology=true` atau Anda dapat memperbarui instalasi yang ada dengan perintah Cilium CLI. `cilium config set enable-service-topology true` Agen Cilium yang berjalan pada setiap node harus dimulai ulang setelah memperbarui konfigurasi untuk instalasi yang ada.

Contoh cara mengonfigurasi Distribusi Lalu Lintas Layanan untuk Layanan CoreDNS ditampilkan di bagian berikut, dan kami menyarankan Anda mengaktifkan hal yang sama untuk semua Layanan di klaster Anda untuk menghindari lalu lintas lintas lingkungan yang tidak diinginkan.

### Konfigurasikan replika CoreDNS
<a name="hybrid-nodes-mixed-coredns"></a>

Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, sebaiknya Anda memiliki setidaknya satu replika CoreDNS pada node hybrid dan setidaknya satu replika CoreDNS di node Anda di Cloud. AWS [Untuk mencegah masalah latensi dan jaringan dalam pengaturan cluster mode campuran, Anda dapat mengonfigurasi Layanan CoreDNS untuk memilih replika CoreDNS terdekat dengan Distribusi Lalu Lintas Layanan.](https://kubernetes.io/docs/reference/networking/virtual-ips/#traffic-distribution)

 *Service Traffic Distribution* (tersedia untuk Kubernetes versi 1.31 dan yang lebih baru di EKS) adalah solusi yang direkomendasikan melalui [Topology Aware Routing](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) karena lebih mudah diprediksi. Dalam Distribusi Lalu Lintas Layanan, titik akhir yang sehat di zona tersebut akan menerima semua lalu lintas untuk zona itu. Dalam Topology Aware Routing, setiap layanan harus memenuhi beberapa kondisi di zona tersebut untuk menerapkan perutean kustom, jika tidak, ia merutekan lalu lintas secara merata ke semua titik akhir. Langkah-langkah berikut mengkonfigurasi Distribusi Lalu Lintas Layanan.

Jika Anda menggunakan Cilium sebagai CNI Anda, Anda harus menjalankan CNI dengan `enable-service-topology` set untuk mengaktifkan Distribusi Lalu Lintas `true` Layanan. Anda dapat meneruskan konfigurasi ini dengan bendera Helm install `--set loadBalancer.serviceTopology=true` atau Anda dapat memperbarui instalasi yang ada dengan perintah Cilium CLI. `cilium config set enable-service-topology true` Agen Cilium yang berjalan pada setiap node harus dimulai ulang setelah memperbarui konfigurasi untuk instalasi yang ada.

1. Tambahkan label zona topologi untuk setiap node hibrida Anda, misalnya. `topology.kubernetes.io/zone: onprem` Atau, Anda dapat mengatur label pada `nodeadm init` fase dengan menentukan label dalam `nodeadm` konfigurasi Anda, lihat[Node Config untuk menyesuaikan kubelet (Opsional)](hybrid-nodes-nodeadm.md#hybrid-nodes-nodeadm-kubelet). Catatan, node yang berjalan di AWS Cloud secara otomatis mendapatkan label zona topologi yang diterapkan padanya yang sesuai dengan zona ketersediaan (AZ) node.

   ```
   kubectl label node hybrid-node-name topology.kubernetes.io/zone=zone
   ```

1. Tambahkan `podAntiAffinity` ke penerapan CoreDNS dengan kunci zona topologi. Atau, Anda dapat mengonfigurasi penerapan CoreDNS selama instalasi dengan add-on EKS.

   ```
   kubectl edit deployment coredns -n kube-system
   ```

   ```
   spec:
     template:
       spec:
         affinity:
          ...
           podAntiAffinity:
             preferredDuringSchedulingIgnoredDuringExecution:
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: kubernetes.io/hostname
               weight: 100
             - podAffinityTerm:
                 labelSelector:
                   matchExpressions:
                   - key: k8s-app
                     operator: In
                     values:
                     - kube-dns
                 topologyKey: topology.kubernetes.io/zone
               weight: 50
         ...
   ```

1. Tambahkan pengaturan ke konfigurasi `kube-dns` Layanan `trafficDistribution: PreferClose` untuk mengaktifkan Distribusi Lalu Lintas Layanan.

   ```
   kubectl patch svc kube-dns -n kube-system --type=merge -p '{
     "spec": {
       "trafficDistribution": "PreferClose"
     }
   }'
   ```

1. Anda dapat mengonfirmasi bahwa Distribusi Lalu Lintas Layanan diaktifkan dengan melihat irisan titik akhir untuk `kube-dns` Layanan. Irisan titik akhir Anda harus menunjukkan label zona topologi Anda, yang mengonfirmasi bahwa Distribusi Lalu Lintas Layanan diaktifkan. `hints` Jika Anda tidak melihat `hints` untuk setiap alamat titik akhir, maka Distribusi Lalu Lintas Layanan tidak diaktifkan.

   ```
   kubectl get endpointslice -A | grep "kube-dns"
   ```

   ```
   kubectl get endpointslice [.replaceable]`kube-dns-<id>`  -n kube-system -o yaml
   ```

   ```
   addressType: IPv4
   apiVersion: discovery.k8s.io/v1
   endpoints:
   - addresses:
     - <your-hybrid-node-pod-ip>
     hints:
       forZones:
       - name: onprem
     nodeName: <your-hybrid-node-name>
     zone: onprem
   - addresses:
     - <your-cloud-node-pod-ip>
     hints:
       forZones:
       - name: us-west-2a
     nodeName: <your-cloud-node-name>
     zone: us-west-2a
   ```

### Konfigurasikan webhook untuk add-on
<a name="hybrid-nodes-webhooks-add-ons"></a>

Add-on berikut menggunakan webhook dan didukung untuk digunakan dengan node hybrid.
+  AWS Pengontrol Load Balancer
+ CloudWatch Agen Observabilitas
+  AWS Distro untuk OpenTelemetry (ADOT)
+  `cert-manager` 

Lihat bagian berikut untuk mengonfigurasi webhook yang digunakan oleh add-on ini untuk berjalan di node di Cloud. AWS 

#### AWS Pengontrol Load Balancer
<a name="hybrid-nodes-mixed-lbc"></a>

Untuk menggunakan AWS Load Balancer Controller dalam pengaturan cluster mode campuran, Anda harus menjalankan controller pada node di AWS Cloud. Untuk melakukannya, tambahkan berikut ini ke konfigurasi nilai Helm Anda atau tentukan nilainya dengan menggunakan konfigurasi add-on EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

#### CloudWatch Agen Observabilitas
<a name="hybrid-nodes-mixed-cwagent"></a>

Add-on CloudWatch Observability Agent memiliki Operator Kubernetes yang menggunakan webhook. Untuk menjalankan operator pada node di AWS Cloud dalam pengaturan cluster mode campuran, edit konfigurasi operator CloudWatch Observability Agent. Anda tidak dapat mengonfigurasi afinitas operator selama penginstalan dengan add-on Helm dan EKS (lihat masalah [containers-roadmap](https://github.com/aws/containers-roadmap/issues/2431) \$12431).

```
kubectl edit -n amazon-cloudwatch deployment amazon-cloudwatch-observability-controller-manager
```

```
spec:
  ...
  template:
    ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: eks.amazonaws.com/compute-type
                operator: NotIn
                values:
                - hybrid
```

#### AWS Distro untuk OpenTelemetry (ADOT)
<a name="hybrid-nodes-mixed-adot"></a>

Add-on AWS Distro for OpenTelemetry (ADOT) memiliki Operator Kubernetes yang menggunakan webhook. Untuk menjalankan operator pada node di AWS Cloud dalam pengaturan cluster mode campuran, tambahkan berikut ini ke konfigurasi nilai Helm Anda atau tentukan nilai dengan menggunakan konfigurasi add-on EKS.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
```

Jika CIDR pod Anda tidak dapat dirutekan di jaringan lokal Anda, maka kolektor ADOT harus berjalan pada node hybrid untuk mengikis metrik dari node hibrid Anda dan beban kerja yang berjalan di dalamnya. Untuk melakukannya, edit Definisi Sumber Daya Kustom (CRD).

```
kubectl -n opentelemetry-operator-system edit opentelemetrycollectors.opentelemetry.io adot-col-prom-metrics
```

```
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: In
            values:
            - hybrid
```

Anda dapat mengonfigurasi kolektor ADOT untuk hanya mengikis metrik dari node hibrida dan sumber daya yang berjalan pada node hibrida dengan menambahkan yang berikut `relabel_configs` ke masing-masing `scrape_configs` dalam konfigurasi CRD kolektor ADOT.

```
relabel_configs:
  - action: keep
    regex: hybrid
    source_labels:
    - __meta_kubernetes_node_label_eks_amazonaws_com_compute_type
```

Add-on ADOT memiliki persyaratan prasyarat `cert-manager` untuk menginstal sertifikat TLS yang digunakan oleh webhook operator ADOT. `cert-manager`juga menjalankan webhooks dan Anda dapat mengonfigurasinya untuk berjalan di node di AWS Cloud dengan konfigurasi nilai Helm berikut.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

#### `cert-manager`
<a name="hybrid-nodes-mixed-cert-manager"></a>

`cert-manager`Add-on menjalankan webhooks dan Anda dapat mengonfigurasinya untuk berjalan di node di AWS Cloud dengan konfigurasi nilai Helm berikut.

```
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: eks.amazonaws.com/compute-type
          operator: NotIn
          values:
          - hybrid
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
cainjector:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
startupapicheck:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
```

# Konfigurasikan proxy untuk node hybrid
<a name="hybrid-nodes-proxy"></a>

Jika Anda menggunakan server proxy di lingkungan lokal untuk lalu lintas yang meninggalkan pusat data atau lingkungan edge, Anda perlu mengonfigurasi node dan klaster secara terpisah untuk menggunakan server proxy Anda.

Klaster  
Di cluster Anda, Anda perlu mengkonfigurasi `kube-proxy` untuk menggunakan server proxy Anda. Anda harus mengonfigurasi `kube-proxy` setelah membuat cluster Amazon EKS Anda.

Simpul  
Pada node Anda, Anda harus mengkonfigurasi sistem operasi,`containerd`,`kubelet`, dan agen SSM Amazon untuk menggunakan server proxy Anda. Anda dapat membuat perubahan ini selama proses build untuk image sistem operasi Anda atau sebelum Anda menjalankan `nodeadm init` pada setiap node hybrid.

## Konfigurasi tingkat simpul
<a name="_node_level_configuration"></a>

Anda harus menerapkan konfigurasi berikut baik dalam gambar sistem operasi Anda atau sebelum berjalan `nodeadm init` pada setiap node hybrid.

### `containerd`konfigurasi proxy
<a name="_containerd_proxy_configuration"></a>

 `containerd`adalah runtime manajemen kontainer default untuk Kubernetes. Jika Anda menggunakan proxy untuk akses internet, Anda harus mengkonfigurasi `containerd` sehingga dapat menarik gambar kontainer yang diperlukan oleh Kubernetes dan Amazon EKS.

Buat file pada setiap node hybrid yang disebut `http-proxy.conf` dalam `/etc/systemd/system/containerd.service.d` direktori dengan konten berikut. Ganti `proxy-domain` dan `port` dengan nilai-nilai untuk lingkungan Anda.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `containerd`konfigurasi dari data pengguna
<a name="_containerd_configuration_from_user_data"></a>

`containerd.service.d`Direktori harus dibuat untuk file ini. Anda perlu memuat ulang systemd untuk mengambil file konfigurasi tanpa reboot. Di AL2 023, layanan kemungkinan sudah berjalan ketika skrip Anda dijalankan, jadi Anda juga perlu memulai ulang.

```
mkdir -p /etc/systemd/system/containerd.service.d
echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart containerd
```

### `kubelet`konfigurasi proxy
<a name="_kubelet_proxy_configuration"></a>

 `kubelet`adalah agen node Kubernetes yang berjalan pada setiap node Kubernetes dan bertanggung jawab untuk mengelola node dan pod yang berjalan di atasnya. Jika Anda menggunakan proxy di lingkungan lokal, Anda harus mengonfigurasinya `kubelet` agar dapat berkomunikasi dengan titik akhir publik atau pribadi klaster Amazon EKS Anda.

Buat file pada setiap node hybrid yang disebut `http-proxy.conf` dalam `/etc/systemd/system/kubelet.service.d/` direktori dengan konten berikut. Ganti `proxy-domain` dan `port` dengan nilai-nilai untuk lingkungan Anda.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `kubelet`konfigurasi dari data pengguna
<a name="_kubelet_configuration_from_user_data"></a>

`kubelet.service.d`Direktori harus dibuat untuk file ini. Anda perlu memuat ulang systemd untuk mengambil file konfigurasi tanpa reboot. Di AL2 023, layanan kemungkinan sudah berjalan ketika skrip Anda dijalankan, jadi Anda juga perlu memulai ulang.

```
mkdir -p /etc/systemd/system/kubelet.service.d
echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf
systemctl daemon-reload
systemctl restart kubelet
```

### `ssm`konfigurasi proxy
<a name="_ssm_proxy_configuration"></a>

 `ssm`adalah salah satu penyedia kredensi yang dapat digunakan untuk menginisialisasi node hybrid. `ssm`bertanggung jawab untuk mengautentikasi dengan AWS dan menghasilkan kredensi sementara yang digunakan oleh. `kubelet` Jika Anda menggunakan proxy di lingkungan lokal dan menggunakan `ssm` sebagai penyedia kredensi di node, Anda harus mengonfigurasinya `ssm` agar dapat berkomunikasi dengan titik akhir layanan Amazon SSM.

Buat file pada setiap node hybrid yang disebut `http-proxy.conf` di jalur di bawah ini tergantung pada sistem operasi
+ Ubuntu - `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf` 
+ Amazon Linux 2023 dan Red Hat Enterprise Linux - `/etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf` 

Isi file dengan konten berikut. Ganti `proxy-domain` dan `port` dengan nilai-nilai untuk lingkungan Anda.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

#### `ssm`konfigurasi dari data pengguna
<a name="_ssm_configuration_from_user_data"></a>

Direktori file layanan `ssm` systemd harus dibuat untuk file ini. Jalur direktori tergantung pada sistem operasi yang digunakan pada node.
+ Ubuntu - `/etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d` 
+ Amazon Linux 2023 dan Red Hat Enterprise Linux - `/etc/systemd/system/amazon-ssm-agent.service.d` 

Ganti nama layanan systemd dalam perintah restart di bawah ini tergantung pada sistem operasi yang digunakan pada node
+ Ubuntu - `snap.amazon-ssm-agent.amazon-ssm-agent` 
+ Amazon Linux 2023 dan Red Hat Enterprise Linux - `amazon-ssm-agent` 

```
mkdir -p systemd-service-file-directory
echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf
echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf
systemctl daemon-reload
systemctl restart [.replaceable]#systemd-service-name
```

### Konfigurasi proxy sistem operasi
<a name="_operating_system_proxy_configuration"></a>

Jika Anda menggunakan proxy untuk akses internet, Anda harus mengkonfigurasi sistem operasi Anda untuk dapat menarik dependensi node hybrid dari manajer paket sistem operasi Anda.

 **Ubuntu** 

1. Konfigurasikan `snap` untuk menggunakan proxy Anda dengan perintah berikut:

   ```
   sudo snap set system proxy.https=http://proxy-domain:port
   sudo snap set system proxy.http=http://proxy-domain:port
   ```

1. Untuk mengaktifkan proxy`apt`, buat file yang disebut `apt.conf` dalam `/etc/apt/` direktori. Ganti proxy-domain dan port dengan nilai untuk lingkungan Anda.

   ```
   Acquire::http::Proxy "http://proxy-domain:port";
   Acquire::https::Proxy "http://proxy-domain:port";
   ```

 **Amazon Linux 2023** 

1. `dnf`Konfigurasikan untuk menggunakan proxy Anda. Buat file `/etc/dnf/dnf.conf` dengan proxy-domain dan nilai port untuk lingkungan Anda.

   ```
   proxy=http://proxy-domain:port
   ```

 **Perusahaan Topi Merah Linux** 

1. `yum`Konfigurasikan untuk menggunakan proxy Anda. Buat file `/etc/yum.conf` dengan proxy-domain dan nilai port untuk lingkungan Anda.

   ```
   proxy=http://proxy-domain:port
   ```

### Konfigurasi proxy Peran IAM Di Mana Saja
<a name="_iam_roles_anywhere_proxy_configuration"></a>

Layanan penyedia kredensi IAM Roles Anywhere bertanggung jawab untuk menyegarkan kredensil saat menggunakan Peran IAM Di Mana Saja dengan tanda (lihat). `enableCredentialsFile` [Agen Identitas EKS Pod](hybrid-nodes-add-ons.md#hybrid-nodes-add-ons-pod-id) Jika Anda menggunakan proxy di lingkungan lokal, Anda harus mengonfigurasi layanan agar dapat berkomunikasi dengan titik akhir IAM Roles Anywhere.

Buat file yang disebut `http-proxy.conf` dalam `/etc/systemd/system/aws_signing_helper_update.service.d/` direktori dengan konten berikut. Ganti `proxy-domain` dan `port` dengan nilai-nilai untuk lingkungan Anda.

```
[Service]
Environment="HTTP_PROXY=http://proxy-domain:port"
Environment="HTTPS_PROXY=http://proxy-domain:port"
Environment="NO_PROXY=localhost"
```

## Konfigurasi luas cluster
<a name="_cluster_wide_configuration"></a>

Konfigurasi di bagian ini harus diterapkan setelah Anda membuat klaster Amazon EKS dan sebelum berjalan `nodeadm init` pada setiap node hybrid.

### konfigurasi proxy kube-proxy
<a name="_kube_proxy_proxy_configuration"></a>

Amazon EKS secara otomatis menginstal `kube-proxy` pada setiap node hybrid sebagai DaemonSet saat node hybrid Anda bergabung dengan cluster. `kube-proxy`memungkinkan perutean di seluruh layanan yang didukung oleh pod di kluster Amazon EKS. Untuk mengonfigurasi setiap host, `kube-proxy` memerlukan resolusi DNS untuk titik akhir klaster Amazon EKS Anda.

1. Edit `kube-proxy` DaemonSet dengan perintah berikut

   ```
   kubectl -n kube-system edit ds kube-proxy
   ```

   Ini akan membuka `kube-proxy` DaemonSet definisi pada editor Anda yang dikonfigurasi.

1. Tambahkan variabel lingkungan untuk `HTTP_PROXY` dan`HTTPS_PROXY`. Perhatikan variabel `NODE_NAME` lingkungan seharusnya sudah ada dalam konfigurasi Anda. Ganti `proxy-domain` dan `port` dengan nilai untuk lingkungan Anda.

   ```
   containers:
     - command:
       - kube-proxy
       - --v=2
       - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME)
       env:
       - name: HTTP_PROXY
         value: http://proxy-domain:port
       - name: HTTPS_PROXY
         value: http://proxy-domain:port
       - name: NODE_NAME
         valueFrom:
           fieldRef:
             apiVersion: v1
             fieldPath: spec.nodeName
   ```

# Konfigurasikan Cilium BGP untuk node hybrid
<a name="hybrid-nodes-cilium-bgp"></a>

Topik ini menjelaskan cara mengkonfigurasi Cilium Border Gateway Protocol (BGP) untuk Amazon EKS Hybrid Nodes. Fungsionalitas BGP Cilium disebut [Cilium BGP Control Plane](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane/) dan dapat digunakan untuk mengiklankan pod dan alamat layanan ke jaringan lokal Anda. Untuk metode alternatif untuk membuat pod CIDRs dapat dirutekan di jaringan lokal, lihat. [Pod jarak jauh yang dapat dirutekan CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)

## Konfigurasikan Cilium BGP
<a name="hybrid-nodes-cilium-bgp-configure"></a>

### Prasyarat
<a name="_prerequisites"></a>
+ Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

### Prosedur
<a name="_procedure"></a>

1. Untuk menggunakan BGP dengan Cilium untuk mengiklankan pod atau alamat layanan dengan jaringan lokal Anda, Cilium harus diinstal dengan. `bgpControlPlane.enabled: true` Jika Anda mengaktifkan BGP untuk penerapan Cilium yang ada, Anda harus memulai ulang operator Cilium untuk menerapkan konfigurasi BGP jika BGP sebelumnya tidak diaktifkan. Anda dapat mengatur `operator.rollOutPods` ke `true` dalam nilai Helm Anda untuk memulai ulang operator Cilium sebagai bagian dari proses Helm. install/upgrade 

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --set bgpControlPlane.enabled=true
   ```

1. Konfirmasikan bahwa operator dan agen Cilium telah dimulai ulang dan sedang berjalan.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

1. Buat file yang disebut `cilium-bgp-cluster.yaml` dengan `CiliumBGPClusterConfig` definisi. Anda mungkin perlu mendapatkan informasi berikut dari administrator jaringan Anda.
   + Konfigurasikan `localASN` dengan ASN untuk node yang menjalankan Cilium.
   + Konfigurasikan `peerASN` dengan ASN untuk router lokal Anda.
   + Konfigurasikan `peerAddress` dengan IP router lokal yang akan dilayani oleh setiap node yang menjalankan Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPClusterConfig
     metadata:
       name: cilium-bgp
     spec:
       nodeSelector:
         matchExpressions:
         - key: eks.amazonaws.com/compute-type
           operator: In
           values:
           - hybrid
       bgpInstances:
       - name: "rack0"
         localASN: NODES_ASN
         peers:
         - name: "onprem-router"
           peerASN: ONPREM_ROUTER_ASN
           peerAddress: ONPREM_ROUTER_IP
           peerConfigRef:
             name: "cilium-peer"
     ```

1. Terapkan konfigurasi cluster Cilium BGP ke cluster Anda.

   ```
   kubectl apply -f cilium-bgp-cluster.yaml
   ```

1. Buat file bernama `cilium-bgp-peer.yaml` dengan `CiliumBGPPeerConfig` sumber daya yang mendefinisikan konfigurasi rekan BGP. Beberapa rekan dapat berbagi konfigurasi yang sama dan memberikan referensi ke `CiliumBGPPeerConfig` sumber daya bersama. Lihat [konfigurasi BGP Peer](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-v2/#bgp-peer-configuration) dalam dokumentasi Cilium untuk daftar lengkap opsi konfigurasi.

   Nilai untuk setelan peer Cilium berikut harus sesuai dengan nilai router lokal yang Anda intip.
   + Konfigurasikan `holdTimeSeconds` yang menentukan berapa lama peer BGP menunggu pesan keepalive atau update sebelum mendeklarasikan sesi turun. Defaultnya adalah 90 detik.
   + Konfigurasikan `keepAliveTimeSeconds` yang menentukan apakah peer BGP masih dapat dijangkau dan sesi BGP aktif. Waktu default-nya adalah 30 detik.
   + Konfigurasikan `restartTimeSeconds` yang menentukan waktu pesawat kontrol BGP Cilium diharapkan untuk membangun kembali sesi BGP setelah restart. Periode default-nya adalah 120 detik.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPPeerConfig
     metadata:
       name: cilium-peer
     spec:
       timers:
         holdTimeSeconds: 90
         keepAliveTimeSeconds: 30
       gracefulRestart:
         enabled: true
         restartTimeSeconds: 120
       families:
         - afi: ipv4
           safi: unicast
           advertisements:
             matchLabels:
               advertise: "bgp"
     ```

1. Terapkan konfigurasi peer Cilium BGP ke cluster Anda.

   ```
   kubectl apply -f cilium-bgp-peer.yaml
   ```

1. Buat file bernama `cilium-bgp-advertisement-pods.yaml` dengan `CiliumBGPAdvertisement` sumber daya untuk mengiklankan pod CIDRs ke jaringan lokal Anda.
   + `CiliumBGPAdvertisement`Sumber daya digunakan untuk menentukan jenis iklan dan atribut yang terkait dengannya. Contoh di bawah ini mengonfigurasi Cilium hanya untuk mengiklankan pod. CIDRs Lihat contoh di [Jenis layanan LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer) dan [Penyeimbangan beban dalam cluster silia](hybrid-nodes-load-balancing.md#hybrid-nodes-service-lb-cilium) untuk informasi selengkapnya tentang mengonfigurasi Cilium untuk mengiklankan alamat layanan.
   + Setiap node hibrida yang menjalankan agen Cilium bermitra dengan router berkemampuan BGP hulu. Setiap node mengiklankan rentang pod CIDR yang dimilikinya ketika Cilium disetel ke `PodCIDR` like pada contoh di bawah `advertisementType` ini. Lihat [konfigurasi Iklan BGP](https://docs.cilium.io/en/stable/network/bgp-control-plane/bgp-control-plane-v2/#bgp-advertisements) di dokumentasi Cilium untuk informasi selengkapnya.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-pods
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "PodCIDR"
     ```

1. Terapkan konfigurasi Cilium BGP Advertisement ke cluster Anda.

   ```
   kubectl apply -f cilium-bgp-advertisement-pods.yaml
   ```

1. Anda dapat mengonfirmasi bahwa peering BGP bekerja dengan Cilium [CLI](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli) dengan menggunakan perintah. `cilium bgp peers` Anda akan melihat nilai yang benar dalam output untuk lingkungan Anda dan Status Sesi sebagai`established`. Lihat [Panduan Pemecahan Masalah dan Operasi](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/#troubleshooting-and-operation-guide) di dokumentasi Cilium untuk informasi selengkapnya tentang pemecahan masalah.

   Dalam contoh di bawah ini, ada lima node hybrid yang menjalankan agen Cilium dan setiap node mengiklankan rentang Pod CIDR yang dimilikinya.

   ```
   cilium bgp peers
   ```

   ```
   Node                   Local AS    Peer AS               Peer Address        Session State   Uptime     Family         Received   Advertised
   mi-026d6a261e355fba7   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   mi-082f73826a163626e   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-09183e8a3d755abf6   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m47s   ipv4/unicast   1          2
   mi-0d78d815980ed202d   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h19m12s   ipv4/unicast   1          2
   mi-0daa253999fe92daa   NODES_ASN
                     ONPREM_ROUTER_ASN
                     ONPREM_ROUTER_IP    established     1h18m58s   ipv4/unicast   1          2
   ```

   ```
   cilium bgp routes
   ```

   ```
   Node                   VRouter       Prefix           NextHop   Age         Attrs
   mi-026d6a261e355fba7   NODES_ASN     10.86.2.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN     10.86.2.192/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN     10.86.2.64/26    0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN     10.86.2.128/26   0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN     10.86.3.0/26     0.0.0.0   1h16m46s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

# Konfigurasikan Ingress Kubernetes untuk node hybrid
<a name="hybrid-nodes-ingress"></a>

Topik ini menjelaskan cara mengonfigurasi Kubernetes Ingress untuk beban kerja yang berjalan di Amazon EKS Hybrid Nodes. [Kubernetes Ingress mengekspos](https://kubernetes.io/docs/concepts/services-networking/ingress/) rute HTTP dan HTTPS dari luar klaster ke layanan di dalam klaster. Untuk memanfaatkan sumber daya Ingress, pengontrol Ingress Kubernetes diperlukan untuk menyiapkan infrastruktur jaringan dan komponen yang melayani lalu lintas jaringan.

 AWS mendukung AWS Application Load Balancer (ALB) dan Cilium for Kubernetes Ingress untuk beban kerja yang berjalan pada EKS Hybrid Nodes. Keputusan untuk menggunakan ALB atau Cilium untuk Ingress didasarkan pada sumber lalu lintas aplikasi. Jika lalu lintas aplikasi berasal dari AWS Region, AWS rekomendasikan untuk menggunakan AWS ALB dan Load AWS Balancer Controller. Jika lalu lintas aplikasi berasal dari lingkungan lokal atau edge lokal, AWS rekomendasikan untuk menggunakan kemampuan Ingress bawaan Cilium, yang dapat digunakan dengan atau tanpa infrastruktur penyeimbang beban di lingkungan Anda.

![\[Masuknya Node Hibrida EKS\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-ingress.png)


## AWS Application Load Balancer
<a name="hybrid-nodes-ingress-alb"></a>

Anda dapat menggunakan [AWS Load Balancer Controller](aws-load-balancer-controller.md) dan Application Load Balancer (ALB) dengan `ip` tipe target untuk beban kerja yang berjalan pada node hybrid. Saat menggunakan tipe target`ip`, ALB meneruskan lalu lintas langsung ke pod, melewati jalur jaringan Layer Service. Agar ALB dapat mencapai target IP pod pada node hibrid, CIDR pod lokal Anda harus dapat dirutekan di jaringan lokal Anda. Selain itu, AWS Load Balancer Controller menggunakan webhook dan memerlukan komunikasi langsung dari bidang kontrol EKS. Untuk informasi selengkapnya, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md).

### Pertimbangan
<a name="_considerations"></a>
+ Lihat [Rute aplikasi dan lalu lintas HTTP dengan Application Load Balancers](alb-ingress.md) dan [Instal AWS Load Balancer Controller dengan Helm](lbc-helm.md) untuk informasi lebih lanjut tentang AWS Application Load Balancer dan Load AWS Balancer Controller.
+ Lihat [Praktik Terbaik untuk Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balacing.html) untuk informasi tentang cara memilih antara AWS Application Load Balancer AWS dan Network Load Balancer.
+ Lihat anotasi [AWS Load Balancer Controller Ingress untuk daftar anotasi](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/) yang dapat dikonfigurasi untuk sumber daya Ingress dengan Application Load Balancer. AWS 

### Prasyarat
<a name="_prerequisites"></a>
+ Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda harus menggunakan metode alternatif untuk membuat pod lokal CIDRs dapat dirutekan di jaringan lokal Anda. Jika Anda tidak membuat pod lokal Anda CIDRs dapat dirutekan, ALB tidak akan dapat mendaftar atau menghubungi target IP pod Anda.
+ Helm diinstal di lingkungan baris perintah Anda, lihat [petunjuk Setup Helm](helm.md) untuk informasi selengkapnya.
+ eksctl diinstal di lingkungan baris perintah Anda, lihat petunjuk instalasi [eksctl](install-kubectl.md#eksctl-install-update) untuk informasi lebih lanjut.

### Prosedur
<a name="_procedure"></a>

1. Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan atas nama AWS APIs Anda.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Buat kebijakan IAM menggunakan kebijakan yang diunduh di langkah sebelumnya.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), dan ID AWS akun (`AWS_ACCOUNT_ID`) dengan pengaturan Anda dan jalankan perintah berikut.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Tambahkan repositori bagan Helm eks-charts dan perbarui repositori Helm lokal Anda untuk memastikan bahwa Anda memiliki bagan terbaru.

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

   ```
   helm repo update eks
   ```

1. Instal AWS Load Balancer Controller. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), VPC ID (`VPC_ID`), dan Load AWS Balancer Controller Helm chart version `AWS_LBC_HELM_VERSION` () dengan pengaturan Anda dan jalankan perintah berikut. Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, Anda dapat menjalankan AWS Load Balancer Controller pada node cloud mengikuti instruksi di. [AWS Pengontrol Load Balancer](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc)
   + Anda dapat menemukan bagan Helm versi terbaru dengan menjalankan`helm search repo eks/aws-load-balancer-controller --versions`.

     ```
     helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
       -n kube-system \
       --version AWS_LBC_HELM_VERSION \
       --set clusterName=CLUSTER_NAME \
       --set region=AWS_REGION \
       --set vpcId=VPC_ID \
       --set serviceAccount.create=false \
       --set serviceAccount.name=aws-load-balancer-controller
     ```

1. Verifikasi bahwa AWS Load Balancer Controller berhasil diinstal.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Buat file bernama `my-ingress-alb.yaml` dengan isi berikut ini.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       alb.ingress.kubernetes.io/load-balancer-name: "my-ingress-alb"
       alb.ingress.kubernetes.io/target-type: "ip"
       alb.ingress.kubernetes.io/scheme: "internet-facing"
       alb.ingress.kubernetes.io/healthcheck-path: "/details/1"
   spec:
     ingressClassName: alb
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Terapkan konfigurasi Ingress ke cluster Anda.

   ```
   kubectl apply -f my-ingress-alb.yaml
   ```

1. Penyediaan ALB untuk sumber daya Ingress Anda mungkin memakan waktu beberapa menit. Setelah ALB disediakan, sumber daya Ingress Anda akan memiliki alamat yang ditetapkan untuk itu yang sesuai dengan nama DNS dari penerapan ALB. Alamat akan memiliki format`<alb-name>-<random-string>.<region>.elb.amazonaws.com`.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS   HOSTS   ADDRESS                                                     PORTS   AGE
   my-ingress   alb     *       my-ingress-alb-<random-string>.<region>.elb.amazonaws.com   80      23m
   ```

1. Akses Layanan menggunakan alamat ALB.

   ```
   curl -s http//my-ingress-alb-<random-string>.<region>.elb.amazonaws.com:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
     "details": "This is the details page"
   }
   ```

## Ikhtisar Cilium Ingress dan Cilium Gateway
<a name="hybrid-nodes-ingress-cilium"></a>

Kemampuan Ingress Cilium dibangun ke dalam arsitektur Cilium dan dapat dikelola dengan Kubernetes Ingress API atau Gateway API. Jika Anda tidak memiliki sumber daya Ingress yang ada, AWS rekomendasikan untuk memulai dengan Gateway API, karena ini adalah cara yang lebih ekspresif dan fleksibel untuk mendefinisikan dan mengelola sumber daya jaringan Kubernetes. [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/) bertujuan untuk menstandarisasi bagaimana sumber daya jaringan untuk Ingress, Load Balancing, dan Service Mesh didefinisikan dan dikelola dalam klaster Kubernetes.

Saat Anda mengaktifkan fitur Ingress atau Gateway Cilium, operator Cilium merekonsiliasi objek Ingress/Gateway di cluster dan proxy Envoy pada setiap node memproses lalu lintas jaringan Layer 7 (L7). Cilium tidak secara langsung menyediakan infrastruktur Ingress /Gateway seperti load balancer. Jika Anda berencana untuk menggunakan Cilium Ingress /Gateway dengan penyeimbang beban, Anda harus menggunakan perkakas penyeimbang beban, biasanya pengontrol Ingress atau Gateway, untuk menyebarkan dan mengelola infrastruktur penyeimbang beban.

Untuk lalu lintas Ingress /Gateway, Cilium menangani lalu lintas jaringan inti dan penegakan kebijakan L3/L4, dan proxy Utusan terintegrasi memproses lalu lintas jaringan L7. Dengan Cilium Ingress /Gateway, Envoy bertanggung jawab untuk menerapkan aturan routing L7, kebijakan, dan manipulasi permintaan, manajemen lalu lintas tingkat lanjut seperti pemisahan lalu lintas dan pencerminan, dan penghentian dan originasi TLS. Proksi Utusan Cilium digunakan sebagai DaemonSet (`cilium-envoy`) terpisah secara default, yang memungkinkan Utusan dan agen Cilium diperbarui, diskalakan, dan dikelola secara terpisah.

[Untuk informasi lebih lanjut tentang cara kerja Cilium Ingress dan Cilium Gateway, lihat halaman Cilium [Ingress dan Cilium](https://docs.cilium.io/en/stable/network/servicemesh/ingress/) Gateway di dokumentasi Cilium.](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/)

## Perbandingan Cilium Ingress dan Gateway
<a name="hybrid-nodes-ingress-cilium-comparison"></a>

**Tabel di bawah ini merangkum fitur Cilium Ingress dan Cilium Gateway pada versi Cilium 1.17.x.**


| Fitur | Ingress | Gateway | 
| --- | --- | --- | 
|  Jenis layanan LoadBalancer  |  Ya  |  Ya  | 
|  Jenis layanan NodePort  |  Ya  |  Tidak1   | 
|  Jaringan host  |  Ya  |  Ya  | 
|  Penyeimbang beban bersama  |  Ya  |  Ya  | 
|  Penyeimbang beban khusus  |  Ya  |  Tidak 2   | 
|  Kebijakan jaringan  |  Ya  |  Ya  | 
|  Protokol  |  Lapisan 7 (HTTP (S), gRPC)  |  Lapisan 7 (HTTP (S), gRPC) 3   | 
|  Passthrough TLS  |  Ya  |  Ya  | 
|  Manajemen Lalu Lintas  |  Perutean jalur dan Host  |  Perutean jalur dan Host, pengalihan URL dan penulisan ulang, pemisahan lalu lintas, modifikasi header  | 

 1 [Dukungan Cilium Gateway untuk NodePort layanan direncanakan untuk Cilium versi 1.18.x (\$127273)](https://github.com/cilium/cilium/pull/27273)

 2 [Dukungan Cilium Gateway untuk penyeimbang beban khusus (\$125567)](https://github.com/cilium/cilium/issues/25567)

 3 [Dukungan Cilium Gateway untuk TCP/UDP (\$121929)](https://github.com/cilium/cilium/issues/21929)

## Instal Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-install"></a>

### Pertimbangan
<a name="_considerations_2"></a>
+ Cilium harus dikonfigurasi dengan `nodePort.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini. Jika Anda menggunakan fitur pengganti kube-proxy Cilium, Anda tidak perlu menyetel ke. `nodePort.enabled` `true`
+ Cilium harus dikonfigurasi dengan `envoy.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini.
+ Cilium Gateway dapat digunakan dalam load balancer (default) atau mode jaringan host.
+ Saat menggunakan Cilium Gateway dalam mode penyeimbang beban, `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi harus disetel pada resource Gateway untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk Layanan jenis LoadBalancer yang dibuat Cilium untuk sumber daya Gateway.
+ Saat menggunakan Cilium Gateway dalam mode jaringan host, mode Service of type LoadBalancer dinonaktifkan. Mode jaringan host berguna untuk lingkungan yang tidak memiliki infrastruktur penyeimbang beban, lihat [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) untuk informasi lebih lanjut.

### Prasyarat
<a name="_prerequisites_2"></a>

1. Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

1. Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

### Prosedur
<a name="_procedure_2"></a>

1. Instal Kubernetes Gateway API Custom Resource Definitions (). CRDs

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.2.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml
   ```

1. Buat file bernama `cilium-gateway-values.yaml` dengan konten berikut. Contoh di bawah ini mengonfigurasi Cilium Gateway untuk menggunakan mode load balancer default dan menggunakan proxy Envoy terpisah `cilium-envoy` DaemonSet yang dikonfigurasi agar berjalan hanya pada node hybrid.

   ```
   gatewayAPI:
     enabled: true
     # uncomment to use host network mode
     # hostNetwork:
     #   enabled: true
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Terapkan file nilai Helm ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-gateway-values.yaml
   ```

1. Konfirmasikan operator Cilium, agen, dan pod Envoy sedang berjalan.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Konfigurasikan Cilium Gateway
<a name="hybrid-nodes-ingress-cilium-gateway-configure"></a>

Cilium Gateway diaktifkan pada objek Gateway dengan menyetel ke. `gatewayClassName` `cilium` Layanan yang dibuat Cilium untuk sumber daya Gateway dapat dikonfigurasi dengan bidang pada objek Gateway. Anotasi umum yang digunakan oleh pengontrol Gateway untuk mengonfigurasi infrastruktur penyeimbang beban dapat dikonfigurasi dengan bidang objek Gateway. `infrastructure` Saat menggunakan LoadBalancer IPAM Cilium (lihat contoh di[Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer)), alamat IP yang akan digunakan untuk Layanan tipe LoadBalancer dapat dikonfigurasi pada bidang objek Gateway. `addresses` Untuk informasi selengkapnya tentang konfigurasi Gateway, lihat spesifikasi [Kubernetes Gateway API.](https://gateway-api.sigs.k8s.io/reference/spec/#gateway)

```
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: my-gateway
spec:
  gatewayClassName: cilium
  infrastructure:
    annotations:
      service.beta.kubernetes.io/...
      service.kuberentes.io/...
  addresses:
  - type: IPAddress
    value: <LoadBalancer IP address>
  listeners:
  ...
```

Spesifikasi Cilium dan Kubernetes Gateway mendukung, Gateway GatewayClass,,, dan sumber daya. HTTPRoute GRPCRoute ReferenceGrant 
+ Lihat [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/HTTPRoute)dan [GRPCRoute](https://gateway-api.sigs.k8s.io/api-types/grpcroute/GRPCRoute)spesifikasi untuk daftar bidang yang tersedia.
+ Lihat contoh di [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy) bagian di bawah ini dan contoh dalam [dokumentasi Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#examples) untuk cara menggunakan dan mengonfigurasi sumber daya ini.

## Menyebarkan Gerbang Cilium
<a name="hybrid-nodes-ingress-cilium-gateway-deploy"></a>

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Konfirmasikan aplikasi berjalan dengan sukses.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Buat file bernama `my-gateway.yaml` dengan isi berikut ini. Contoh di bawah ini menggunakan `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk LoadBalancer jenis Layanan yang dibuat Cilium untuk resource Gateway.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     infrastructure:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
     listeners:
     - protocol: HTTP
       port: 80
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

1. Terapkan sumber daya Gateway ke cluster Anda.

   ```
   kubectl apply -f my-gateway.yaml
   ```

1. Konfirmasikan sumber daya Gateway dan Layanan terkait telah dibuat. Pada tahap ini, diharapkan bahwa `ADDRESS` bidang sumber daya Gateway tidak diisi dengan alamat IP atau nama host, dan bahwa Layanan tipe LoadBalancer untuk sumber daya Gateway juga tidak memiliki alamat IP atau nama host yang ditetapkan.

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS   PROGRAMMED   AGE
   my-gateway   cilium             True         10s
   ```

   ```
   kubectl get svc cilium-gateway-my-gateway
   ```

   ```
   NAME                        TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
   cilium-gateway-my-gateway   LoadBalancer   172.16.227.247   <pending>     80:30912/TCP   24s
   ```

1. Lanjutkan [Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) untuk mengonfigurasi sumber daya Gateway untuk menggunakan alamat IP yang dialokasikan oleh Cilium Load Balancer IPAM, dan [Jenis layanan NodePort](#hybrid-nodes-ingress-cilium-nodeport) atau [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) untuk mengonfigurasi sumber daya Gateway untuk menggunakan atau meng-host alamat jaringan. NodePort 

## Instal Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-install"></a>

### Pertimbangan
<a name="_considerations_3"></a>
+ Cilium harus dikonfigurasi dengan `nodePort.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini. Jika Anda menggunakan fitur pengganti kube-proxy Cilium, Anda tidak perlu menyetel ke. `nodePort.enabled` `true`
+ Cilium harus dikonfigurasi dengan `envoy.enabled` set ke `true` seperti yang ditunjukkan pada contoh di bawah ini.
+ Dengan `ingressController.loadbalancerMode` disetel ke`dedicated`, Cilium membuat Layanan khusus untuk setiap sumber daya Ingress. Dengan `ingressController.loadbalancerMode` disetel ke`shared`, Cilium membuat tipe Layanan bersama LoadBalancer untuk semua sumber daya Ingress di cluster. Saat menggunakan mode penyeimbang `shared` beban, pengaturan untuk Layanan bersama seperti`labels`,, `annotations``type`, dan `loadBalancerIP` dikonfigurasi di `ingressController.service` bagian nilai Helm. Lihat [referensi nilai Cilium Helm](https://github.com/cilium/cilium/blob/v1.17.6/install/kubernetes/cilium/values.yaml#L887) untuk informasi lebih lanjut.
+ Dengan `ingressController.default` disetel ke`true`, Cilium dikonfigurasi sebagai pengontrol Ingress default untuk cluster dan akan membuat entri Ingress bahkan ketika tidak `ingressClassName` ditentukan pada sumber daya Ingress.
+ Cilium Ingress dapat digunakan dalam load balancer (default), port node, atau mode jaringan host. Ketika Cilium diinstal dalam mode jaringan host, Layanan tipe LoadBalancer dan Layanan NodePort mode tipe dinonaktifkan. Untuk informasi selengkapnya, lihat [Jaringan host](#hybrid-nodes-ingress-cilium-host-network).
+ [Selalu atur `ingressController.service.annotations` ke `service.beta.kubernetes.io/aws-load-balancer-type: "external"` dalam nilai Helm untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk Layanan `cilium-ingress` default yang dibuat oleh bagan Cilium Helm.](https://github.com/cilium/cilium/blob/main/install/kubernetes/cilium/templates/cilium-ingress-service.yaml)

### Prasyarat
<a name="_prerequisites_3"></a>

1. Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

1. Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

### Prosedur
<a name="_procedure_3"></a>

1. Buat file bernama `cilium-ingress-values.yaml` dengan konten berikut. Contoh di bawah ini mengonfigurasi Cilium Ingress untuk menggunakan `dedicated` mode load balancer default dan menggunakan proxy Envoy terpisah `cilium-envoy` DaemonSet yang dikonfigurasi agar berjalan hanya pada node hybrid.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: dedicated
     service:
       annotations:
         service.beta.kubernetes.io/aws-load-balancer-type: "external"
   nodePort:
     enabled: true
   envoy:
     enabled: true
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
   ```

1. Terapkan file nilai Helm ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     --values cilium-ingress-values.yaml
   ```

1. Konfirmasikan operator Cilium, agen, dan pod Envoy sedang berjalan.

   ```
   kubectl -n kube-system get pods --selector=app.kubernetes.io/part-of=cilium
   ```

   ```
   NAME                               READY   STATUS    RESTARTS   AGE
   cilium-envoy-5pgnd                 1/1     Running   0          6m31s
   cilium-envoy-6fhg4                 1/1     Running   0          6m30s
   cilium-envoy-jskrk                 1/1     Running   0          6m30s
   cilium-envoy-k2xtb                 1/1     Running   0          6m31s
   cilium-envoy-w5s9j                 1/1     Running   0          6m31s
   cilium-grwlc                       1/1     Running   0          4m12s
   cilium-operator-68f7766967-5nnbl   1/1     Running   0          4m20s
   cilium-operator-68f7766967-7spfz   1/1     Running   0          4m20s
   cilium-pnxcv                       1/1     Running   0          6m29s
   cilium-r7qkj                       1/1     Running   0          4m12s
   cilium-wxhfn                       1/1     Running   0          4m1s
   cilium-z7hlb                       1/1     Running   0          6m30s
   ```

## Konfigurasikan Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-configure"></a>

Cilium Ingress diaktifkan pada objek Ingress dengan menyetel ke. `ingressClassName` `cilium` Layanan yang dibuat Cilium untuk sumber daya Ingress dapat dikonfigurasi dengan anotasi pada objek Ingress saat menggunakan mode penyeimbang `dedicated` beban dan dalam konfigurasi Cilium/Helm saat menggunakan mode penyeimbang beban. `shared` Anotasi ini biasanya digunakan oleh pengontrol Ingress untuk mengonfigurasi infrastruktur penyeimbang beban, atau atribut lain dari Layanan seperti jenis layanan, mode penyeimbang beban, port, dan passthrough TLS. Anotasi kunci dijelaskan di bawah ini. Untuk daftar lengkap anotasi yang didukung, lihat anotasi [Cilium Ingress](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#supported-ingress-annotations) di dokumentasi Cilium.


| Anotasi | Deskripsi | 
| --- | --- | 
|   `ingress.cilium.io/loadbalancer-mode`   |   `dedicated`: Jenis Layanan Khusus LoadBalancer untuk setiap sumber daya Ingress (default).  `shared`: Jenis Layanan Tunggal LoadBalancer untuk semua sumber daya Ingress.  | 
|   `ingress.cilium.io/service-type`   |   `LoadBalancer`: Layanan akan bertipe LoadBalancer (default)  `NodePort`: Layanan akan bertipe NodePort.  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |   `"external"`: Mencegah penyedia AWS cloud lama dari penyediaan Classic Load Balancer untuk Layanan jenis. LoadBalancer  | 
|   `lbipam.cilium.io/ips`   |  Daftar alamat IP yang akan dialokasikan dari LoadBalancer Cilium IPAM  | 

Spesifikasi Cilium dan Kubernetes Ingress mendukung aturan pencocokan Exact, Prefix, dan spesifik implementasi untuk jalur Ingress. Cilium mendukung regex sebagai aturan pencocokan khusus implementasinya. Untuk informasi selengkapnya, lihat [Ingress path types and precedence](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#ingress-path-types-and-precedence) and [Path types example](https://docs.cilium.io/en/stable/network/servicemesh/path-types/) in the Cilium documentation, dan contoh di bagian halaman ini[Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy).

Contoh objek Cilium Ingress ditunjukkan di bawah ini.

```
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    service.beta.kuberentes.io/...
    service.kuberentes.io/...
spec:
  ingressClassName: cilium
  rules:
  ...
```

## Menyebarkan Cilium Ingress
<a name="hybrid-nodes-ingress-cilium-ingress-deploy"></a>

1. Buat contoh aplikasi. Contoh di bawah ini menggunakan contoh aplikasi [microservices Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

   ```
   kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
   ```

1. Konfirmasikan aplikasi berjalan dengan sukses.

   ```
   kubectl get pods
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   details-v1-766844796b-9965p       1/1     Running   0          81s
   productpage-v1-54bb874995-jmc8j   1/1     Running   0          80s
   ratings-v1-5dc79b6bcd-smzxz       1/1     Running   0          80s
   reviews-v1-598b896c9d-vj7gb       1/1     Running   0          80s
   reviews-v2-556d6457d-xbt8v        1/1     Running   0          80s
   reviews-v3-564544b4d6-cpmvq       1/1     Running   0          80s
   ```

1. Buat file bernama `my-ingress.yaml` dengan isi berikut ini. Contoh di bawah ini menggunakan `service.beta.kubernetes.io/aws-load-balancer-type: "external"` anotasi untuk mencegah penyedia AWS cloud lama membuat Classic Load Balancer untuk LoadBalancer jenis Layanan yang dibuat Cilium untuk resource Ingress.

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Terapkan sumber daya Ingress ke cluster Anda.

   ```
   kubectl apply -f my-ingress.yaml
   ```

1. Konfirmasikan sumber daya Ingress dan Layanan terkait telah dibuat. Pada tahap ini, diharapkan bahwa `ADDRESS` bidang sumber daya Ingress tidak diisi dengan alamat IP atau nama host, dan bahwa Layanan tipe bersama atau khusus LoadBalancer untuk sumber daya Ingress juga tidak memiliki alamat IP atau nama host yang ditetapkan.

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS   PORTS   AGE
   my-ingress   cilium   *                 80      8s
   ```

   Untuk mode penyeimbang beban `shared` 

   ```
   kubectl -n kube-system get svc cilium-ingress
   ```

   ```
   NAME             TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress   LoadBalancer   172.16.217.48   <pending>     80:32359/TCP,443:31090/TCP   10m
   ```

   Untuk mode penyeimbang beban `dedicated` 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   LoadBalancer   172.16.193.15   <pending>     80:32088/TCP,443:30332/TCP   25s
   ```

1. Lanjutkan [Jenis layanan LoadBalancer](#hybrid-nodes-ingress-cilium-loadbalancer) untuk mengonfigurasi sumber daya Ingress untuk menggunakan alamat IP yang dialokasikan oleh Cilium Load Balancer IPAM, [Jenis layanan NodePort](#hybrid-nodes-ingress-cilium-nodeport) dan [Jaringan host](#hybrid-nodes-ingress-cilium-host-network) atau untuk mengonfigurasi sumber daya Ingress untuk menggunakan atau meng-host alamat jaringan. NodePort 

## Jenis layanan LoadBalancer
<a name="hybrid-nodes-ingress-cilium-loadbalancer"></a>

### Infrastruktur penyeimbang beban yang ada
<a name="_existing_load_balancer_infrastructure"></a>

Secara default, untuk Cilium Ingress dan Cilium Gateway, Cilium membuat tipe Layanan Kubernetes untuk resource Ingress/Gateway. LoadBalancer Atribut Layanan yang dibuat Cilium dapat dikonfigurasi melalui sumber daya Ingress dan Gateway. Saat Anda membuat sumber daya Ingress atau Gateway, alamat IP atau nama host yang terbuka secara eksternal untuk Ingress atau Gateway dialokasikan dari infrastruktur penyeimbang beban, yang biasanya disediakan oleh pengontrol Ingress atau Gateway.

Banyak pengontrol Ingress dan Gateway menggunakan anotasi untuk mendeteksi dan mengkonfigurasi infrastruktur penyeimbang beban. Anotasi untuk pengontrol Ingress dan Gateway ini dikonfigurasi pada sumber daya Ingress atau Gateway seperti yang ditunjukkan pada contoh sebelumnya di atas. Referensikan dokumentasi Ingress atau Gateway controller Anda untuk anotasi yang didukungnya dan lihat dokumentasi [Kubernetes Ingress dan dokumentasi Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/) Gateway untuk [daftar kontroler populer.](https://gateway-api.sigs.k8s.io/implementations/)

**penting**  
Cilium Ingress dan Gateway tidak dapat digunakan dengan Load Balancer Controller dan AWS Network AWS Load Balancers () dengan EKS Hybrid Nodes. NLBs Mencoba untuk menggunakan ini bersama-sama menghasilkan target yang tidak terdaftar, karena NLB mencoba untuk langsung terhubung ke Pod IPs yang mendukung Service tipe LoadBalancer ketika NLB diatur ke `ip` (persyaratan untuk menggunakan NLB dengan beban `target-type` kerja yang berjalan pada EKS Hybrid Nodes).

### Tidak ada infrastruktur penyeimbang beban
<a name="_no_load_balancer_infrastructure"></a>

Jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress/Gateway yang sesuai di lingkungan Anda, sumber daya Ingress /Gateway dan jenis Layanan yang sesuai LoadBalancer dapat dikonfigurasi untuk menggunakan alamat IP yang dialokasikan oleh manajemen alamat IP [Load Balancer Cilium (LB IPAM](https://docs.cilium.io/en/stable/network/lb-ipam/)). Cilium LB IPAM dapat dikonfigurasi dengan rentang alamat IP yang diketahui dari lingkungan lokal Anda, dan dapat menggunakan dukungan Border Gateway Protocol (BGP) bawaan Cilium atau pengumuman L2 untuk mengiklankan alamat IP ke jaringan lokal Anda. LoadBalancer 

Contoh di bawah ini menunjukkan cara mengonfigurasi LB IPAM Cilium dengan alamat IP yang akan digunakan untuk sumber daya Ingress/Gateway Anda, dan cara mengonfigurasi Cilium BGP Control Plane untuk mengiklankan alamat IP dengan jaringan lokal. LoadBalancer Fitur LB IPAM Cilium diaktifkan secara default, tetapi tidak diaktifkan sampai sumber daya dibuat. `CiliumLoadBalancerIPPool`

#### Prasyarat
<a name="_prerequisites_4"></a>
+ Cilium Ingress atau Gateway diinstal mengikuti petunjuk di atau. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) [Instal Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install)
+ Sumber daya Cilium Ingress atau Gateway dengan contoh aplikasi yang digunakan mengikuti instruksi di atau. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy) [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy)
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda dapat melewati prasyarat ini, tetapi Anda tidak akan dapat mengakses sumber daya Ingress atau Gateway hingga alamat LoadBalancer IP yang dialokasikan oleh Cilium LB IPAM dapat dirutekan di jaringan lokal Anda.

#### Prosedur
<a name="_procedure_4"></a>

1. Secara opsional menambal sumber daya Ingress atau Gateway untuk meminta alamat IP tertentu yang akan digunakan untuk jenis Layanan. LoadBalancer Jika Anda tidak meminta alamat IP tertentu, Cilium akan mengalokasikan alamat IP dari rentang alamat IP yang dikonfigurasi dalam `CiliumLoadBalancerIPPool` sumber daya pada langkah berikutnya. Pada perintah di bawah ini, ganti `LB_IP_ADDRESS` dengan alamat IP untuk meminta Layanan tipe LoadBalancer.

    **Gerbang** 

   ```
   kubectl patch gateway -n default my-gateway --type=merge -p '{
     "spec": {
       "addresses": [{"type": "IPAddress", "value": "LB_IP_ADDRESS"}]
     }
   }'
   ```

    **Masuknya** 

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
     "metadata": {"annotations": {"lbipam.cilium.io/ips": "LB_IP_ADDRESS"}}
   }'
   ```

1. Buat file bernama `cilium-lbip-pool-ingress.yaml` dengan `CiliumLoadBalancerIPPool` sumber daya untuk mengonfigurasi rentang alamat IP Load Balancer untuk sumber daya Ingress /Gateway Anda.
   + Jika Anda menggunakan Cilium Ingress, Cilium secara otomatis menerapkan `cilium.io/ingress: "true"` label ke Layanan yang dibuatnya untuk sumber daya Ingress. Anda dapat menggunakan label ini di `serviceSelector` bidang definisi `CiliumLoadBalancerIPPool` sumber daya untuk memilih Layanan yang memenuhi syarat untuk LB IPAM.
   + Jika Anda menggunakan Cilium Gateway, Anda dapat menggunakan `gateway.networking.k8s.io/gateway-name` label di `serviceSelector` bidang definisi `CiliumLoadBalancerIPPool` sumber daya untuk memilih sumber daya Gateway yang memenuhi syarat untuk LB IPAM.
   + Ganti `LB_IP_CIDR` dengan rentang alamat IP yang akan digunakan untuk alamat IP Load Balancer. Untuk memilih satu alamat IP, gunakan `/32` CIDR. Untuk informasi selengkapnya, lihat [Manajemen Alamat LoadBalancer IP](https://docs.cilium.io/en/stable/network/lb-ipam/) di dokumentasi Cilium.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: bookinfo-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         # if using Cilium Gateway
         matchExpressions:
           - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
         # if using Cilium Ingress
         matchLabels:
           cilium.io/ingress: "true"
     ```

1. Terapkan `CiliumLoadBalancerIPPool` sumber daya ke cluster Anda.

   ```
   kubectl apply -f cilium-lbip-pool-ingress.yaml
   ```

1. Konfirmasikan alamat IP dialokasikan dari Cilium LB IPAM untuk sumber daya Ingress /Gateway.

    **Gerbang** 

   ```
   kubectl get gateway my-gateway
   ```

   ```
   NAME         CLASS    ADDRESS        PROGRAMMED   AGE
   my-gateway   cilium   LB_IP_ADDRESS    True         6m41s
   ```

    **Masuknya** 

   ```
   kubectl get ingress my-ingress
   ```

   ```
   NAME         CLASS    HOSTS   ADDRESS        PORTS   AGE
   my-ingress   cilium   *       LB_IP_ADDRESS   80      10m
   ```

1. Buat file bernama `cilium-bgp-advertisement-ingress.yaml` dengan `CiliumBGPAdvertisement` sumber daya untuk mengiklankan alamat LoadBalancer IP untuk sumber daya Ingress /Gateway. Jika Anda tidak menggunakan Cilium BGP, Anda dapat melewati langkah ini. Alamat LoadBalancer IP yang digunakan untuk sumber daya Ingress /Gateway Anda harus dapat dirutekan di jaringan lokal agar Anda dapat melakukan kueri layanan pada langkah berikutnya.

   ```
   apiVersion: cilium.io/v2alpha1
   kind: CiliumBGPAdvertisement
   metadata:
     name: bgp-advertisement-lb-ip
     labels:
       advertise: bgp
   spec:
     advertisements:
       - advertisementType: "Service"
         service:
           addresses:
             - LoadBalancerIP
         selector:
           # if using Cilium Gateway
           matchExpressions:
             - { key: gateway.networking.k8s.io/gateway-name, operator: In, values: [ my-gateway ] }
           # if using Cilium Ingress
           matchLabels:
             cilium.io/ingress: "true"
   ```

1. Terapkan `CiliumBGPAdvertisement` sumber daya ke cluster Anda.

   ```
   kubectl apply -f cilium-bgp-advertisement-ingress.yaml
   ```

1. Akses layanan menggunakan alamat IP yang dialokasikan dari Cilium LB IPAM.

   ```
   curl -s http://LB_IP_ADDRESS:80/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Jenis layanan NodePort
<a name="hybrid-nodes-ingress-cilium-nodeport"></a>

Jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress yang sesuai di lingkungan Anda, atau jika Anda mengelola sendiri infrastruktur penyeimbang beban atau menggunakan penyeimbang beban berbasis DNS, Anda dapat mengonfigurasi Cilium Ingress untuk membuat Layanan tipe untuk sumber daya Ingress. NodePort Saat menggunakan NodePort dengan Cilium Ingress, Layanan tipe NodePort diekspos pada port pada setiap node dalam rentang port 30000-32767. Dalam mode ini, ketika lalu lintas mencapai node mana pun di cluster NodePort, lalu diteruskan ke pod yang mendukung layanan, yang mungkin berada di node yang sama atau node yang berbeda.

**catatan**  
[Dukungan Cilium Gateway untuk NodePort layanan direncanakan untuk Cilium versi 1.18.x (\$127273)](https://github.com/cilium/cilium/pull/27273)

### Prasyarat
<a name="_prerequisites_5"></a>
+ Cilium Ingress dipasang mengikuti petunjuk di. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install)
+ Sumber daya Cilium Ingress dengan aplikasi sampel yang digunakan mengikuti instruksi di. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

### Prosedur
<a name="_procedure_5"></a>

1. Menambal sumber daya Ingress yang ada `my-ingress` untuk mengubahnya dari tipe Layanan LoadBalancer menjadi NodePort.

   ```
   kubectl patch ingress my-ingress --type=merge -p '{
       "metadata": {"annotations": {"ingress.cilium.io/service-type": "NodePort"}}
   }'
   ```

   Jika Anda belum membuat sumber daya Ingress, Anda dapat membuatnya dengan menerapkan definisi Ingress berikut ke cluster Anda. Catatan, definisi Ingress di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: "external"
       "ingress.cilium.io/service-type": "NodePort"
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

1. Konfirmasikan Layanan untuk sumber daya Ingress telah diperbarui untuk menggunakan jenis NodePort Layanan. Perhatikan Port untuk protokol HTTP di output. Dalam contoh di bawah ini port HTTP ini`32353`, yang akan digunakan dalam langkah berikutnya untuk query Layanan. Manfaat menggunakan Cilium Ingress with Service of type NodePort adalah Anda dapat menerapkan routing berbasis jalur dan host, serta kebijakan jaringan untuk lalu lintas Ingress, yang tidak dapat Anda lakukan untuk jenis Layanan standar tanpa Ingress. NodePort 

   ```
   kubectl -n default get svc cilium-ingress-my-ingress
   ```

   ```
   NAME                        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
   cilium-ingress-my-ingress   NodePort   172.16.47.153   <none>        80:32353/TCP,443:30253/TCP   27m
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan jenis NodePort menggunakan alamat IP node Anda dan yang NodePort ditangkap di atas. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan NodePort is`32353`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:32353/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

## Jaringan host
<a name="hybrid-nodes-ingress-cilium-host-network"></a>

Mirip dengan jenis Layanan NodePort, jika Anda tidak memiliki infrastruktur penyeimbang beban dan pengontrol Ingress atau Gateway, atau jika Anda mengelola sendiri penyeimbang beban Anda dengan penyeimbang beban eksternal, Anda dapat mengonfigurasi Cilium Ingress dan Cilium Gateway untuk mengekspos sumber daya Ingress dan Gateway langsung di jaringan host. Ketika mode jaringan host diaktifkan untuk sumber daya Ingress atau Gateway, Layanan jenis LoadBalancer dan NodePort mode dinonaktifkan secara otomatis, mode jaringan host saling eksklusif dengan mode alternatif ini untuk setiap sumber daya Ingress atau Gateway. Dibandingkan dengan mode Service of type, NodePort mode jaringan host menawarkan fleksibilitas tambahan untuk rentang port yang dapat digunakan (tidak terbatas pada NodePort rentang 30000-32767) dan Anda dapat mengonfigurasi subset node tempat proxy Envoy berjalan di jaringan host.

### Prasyarat
<a name="_prerequisites_6"></a>
+ Cilium Ingress atau Gateway diinstal mengikuti petunjuk di atau. [Instal Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-install) [Instal Cilium Gateway](#hybrid-nodes-ingress-cilium-gateway-install)

### Prosedur
<a name="_procedure_6"></a>

#### Gateway
<a name="_gateway"></a>

1. Buat file dengan nama `cilium-gateway-host-network.yaml` dengan konten berikut ini.

   ```
   gatewayAPI:
     enabled: true
     hostNetwork:
       enabled: true
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: gateway
   ```

1. Terapkan konfigurasi Cilium Gateway jaringan host ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-gateway-host-network.yaml
   ```

   Jika Anda belum membuat sumber daya Gateway, Anda dapat membuatnya dengan menerapkan definisi Gateway berikut ke klaster Anda. Definisi Gateway di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Gerbang Cilium](#hybrid-nodes-ingress-cilium-gateway-deploy) Pada contoh di bawah ini, resource Gateway dikonfigurasi untuk menggunakan `8111` port untuk pendengar HTTP, yang merupakan port pendengar bersama untuk proxy Envoy yang berjalan di jaringan host. Jika Anda menggunakan port istimewa (lebih rendah dari 1023) untuk sumber daya Gateway, rujuk dokumentasi [Cilium](https://docs.cilium.io/en/stable/network/servicemesh/gateway-api/gateway-api/#bind-to-privileged-port) untuk instruksi.

   ```
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: Gateway
   metadata:
     name: my-gateway
   spec:
     gatewayClassName: cilium
     listeners:
     - protocol: HTTP
       port: 8111
       name: web-gw
       allowedRoutes:
         namespaces:
           from: Same
   ---
   apiVersion: gateway.networking.k8s.io/v1
   kind: HTTPRoute
   metadata:
     name: http-app-1
   spec:
     parentRefs:
     - name: my-gateway
       namespace: default
     rules:
     - matches:
       - path:
           type: PathPrefix
           value: /details
       backendRefs:
       - name: details
         port: 9080
   ```

   Anda dapat mengamati Konfigurasi Utusan Cilium yang diterapkan dengan perintah berikut.

   ```
   kubectl get cec cilium-gateway-my-gateway -o yaml
   ```

   Anda bisa mendapatkan port pendengar Utusan untuk `cilium-gateway-my-gateway` Layanan dengan perintah berikut. Dalam contoh ini, port pendengar bersama adalah`8111`.

   ```
   kubectl get cec cilium-gateway-my-gateway -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan menggunakan alamat IP node Anda dan port listener untuk `cilium-gateway-my-gateway` sumber daya. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan port listener adalah`8111`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

#### Ingress
<a name="_ingress"></a>

Karena masalah Cilium hulu ([\$134028](https://github.com/cilium/cilium/issues/34028)), Cilium Ingress dalam mode jaringan host memerlukan penggunaan`loadbalancerMode: shared`, yang membuat satu Layanan tipe ClusterIP untuk semua sumber daya Ingress di cluster. Jika Anda menggunakan port istimewa (lebih rendah dari 1023) untuk sumber daya Ingress, rujuk dokumentasi [Cilium](https://docs.cilium.io/en/stable/network/servicemesh/ingress/#bind-to-privileged-port) untuk instruksi.

1. Buat file dengan nama `cilium-ingress-host-network.yaml` dengan konten berikut ini.

   ```
   ingressController:
     enabled: true
     loadbalancerMode: shared
     # This is a workaround for the upstream Cilium issue
     service:
       externalTrafficPolicy: null
       type: ClusterIP
     hostNetwork:
       enabled: true
       # ensure the port does not conflict with other services on the node
       sharedListenerPort: 8111
       # uncomment to restrict nodes where Envoy proxies run on the host network
       # nodes:
       #   matchLabels:
       #     role: ingress
   ```

1. Terapkan konfigurasi Cilium Ingress jaringan host ke cluster Anda.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium \
     --namespace kube-system \
     --reuse-values \
     --set operator.rollOutPods=true \
     -f cilium-ingress-host-network.yaml
   ```

   Jika Anda belum membuat sumber daya Ingress, Anda dapat membuatnya dengan menerapkan definisi Ingress berikut ke cluster Anda. Definisi Ingress di bawah ini menggunakan contoh aplikasi Istio Bookinfo yang dijelaskan dalam. [Menyebarkan Cilium Ingress](#hybrid-nodes-ingress-cilium-ingress-deploy)

   ```
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: my-ingress
     namespace: default
   spec:
     ingressClassName: cilium
     rules:
     - http:
         paths:
         - backend:
             service:
               name: details
               port:
                 number: 9080
           path: /details
           pathType: Prefix
   ```

   Anda dapat mengamati Konfigurasi Utusan Cilium yang diterapkan dengan perintah berikut.

   ```
   kubectl get cec -n kube-system cilium-ingress -o yaml
   ```

   Anda bisa mendapatkan port pendengar Utusan untuk `cilium-ingress` Layanan dengan perintah berikut. Dalam contoh ini, port pendengar bersama adalah`8111`.

   ```
   kubectl get cec -n kube-system cilium-ingress -o jsonpath={.spec.services[0].ports[0]}
   ```

1. Dapatkan alamat IP node Anda di cluster Anda.

   ```
   kubectl get nodes -o wide
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION               INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
   mi-026d6a261e355fba7   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.150   <none>        Ubuntu 22.04.5 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-082f73826a163626e   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.32    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-09183e8a3d755abf6   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.33    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0d78d815980ed202d   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.97    <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   mi-0daa253999fe92daa   Ready    <none>   23h   v1.32.3-eks-473151a   10.80.146.100   <none>        Ubuntu 22.04.4 LTS   5.15.0-142-generic   containerd://1.7.27
   ```

1. Akses Layanan menggunakan alamat IP node Anda dan `sharedListenerPort` untuk `cilium-ingress` sumber daya. Pada contoh di bawah ini alamat IP node yang digunakan adalah `10.80.146.32` dan port listener adalah`8111`. Ganti ini dengan nilai-nilai untuk lingkungan Anda.

   ```
   curl -s http://10.80.146.32:8111/details/1 | jq
   ```

   ```
   {
     "id": 1,
     "author": "William Shakespeare",
     "year": 1595,
     "type": "paperback",
     "pages": 200,
     "publisher": "PublisherA",
     "language": "English",
     "ISBN-10": "1234567890",
     "ISBN-13": "123-1234567890"
   }
   ```

# Konfigurasikan Layanan tipe LoadBalancer untuk node hibrida
<a name="hybrid-nodes-load-balancing"></a>

Topik ini menjelaskan cara mengonfigurasi load balancing Layer 4 (L4) untuk aplikasi yang berjalan di Amazon EKS Hybrid Nodes. Jenis layanan Kubernetes LoadBalancer digunakan untuk mengekspos aplikasi Kubernetes di luar klaster. Layanan jenis LoadBalancer biasanya digunakan dengan infrastruktur penyeimbang beban fisik di cloud atau lingkungan lokal untuk melayani lalu lintas beban kerja. Infrastruktur penyeimbang beban ini biasanya disediakan dengan pengontrol khusus lingkungan.

 AWS mendukung AWS Network Load Balancer (NLB) dan Cilium untuk jenis LoadBalancer Layanan yang berjalan pada EKS Hybrid Nodes. Keputusan untuk menggunakan NLB atau Cilium didasarkan pada sumber lalu lintas aplikasi. Jika lalu lintas aplikasi berasal dari AWS Region, AWS rekomendasikan untuk menggunakan AWS NLB dan Load Balancer AWS Controller. Jika lalu lintas aplikasi berasal dari lingkungan lokal atau edge lokal, AWS rekomendasikan untuk menggunakan kemampuan load balancing bawaan Cilium, yang dapat digunakan dengan atau tanpa infrastruktur penyeimbang beban di lingkungan Anda.

Untuk penyeimbangan beban lalu lintas aplikasi Layer 7 (L7), lihat. [Konfigurasikan Ingress Kubernetes untuk node hybrid](hybrid-nodes-ingress.md) Untuk informasi umum tentang Load Balancing dengan EKS, lihat [Praktik Terbaik untuk Load Balancing](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html).

## AWS Network Load Balancer
<a name="hybrid-nodes-service-lb-nlb"></a>

Anda dapat menggunakan [AWS Load Balancer Controller](aws-load-balancer-controller.md) dan NLB dengan tipe target `ip` untuk beban kerja yang berjalan pada node hybrid. Saat menggunakan tipe target`ip`, NLB meneruskan lalu lintas langsung ke pod, melewati jalur jaringan Layer Service. Agar NLB dapat mencapai target IP pod pada node hibrid, pod lokal Anda CIDRs harus dapat dirutekan di jaringan lokal Anda. Selain itu, AWS Load Balancer Controller menggunakan webhook dan memerlukan komunikasi langsung dari bidang kontrol EKS. Untuk informasi selengkapnya, lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md).
+ Lihat [Rute lalu lintas TCP dan UDP dengan Network Load Balancers](network-load-balancing.md) persyaratan konfigurasi subnet, [Instal AWS Load Balancer Controller dengan Helm](lbc-helm.md) dan [Praktik Terbaik untuk Load Balancing untuk informasi tambahan tentang AWS Network Load Balancer](https://docs.aws.amazon.com/eks/latest/best-practices/load-balancing.html) dan Load Balancer Controller AWS .
+ Lihat konfigurasi [AWS Load Balancer Controller NLB untuk konfigurasi yang](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/nlb/) dapat diterapkan ke Layanan bertipe dengan Network Load Balancer. `LoadBalancer` AWS 

### Prasyarat
<a name="_prerequisites"></a>
+ Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda harus menggunakan metode alternatif untuk membuat pod lokal CIDRs dapat dirutekan di jaringan lokal, lihat untuk informasi selengkapnya. [Pod jarak jauh yang dapat dirutekan CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)
+ Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.
+ [eksctl diinstal di lingkungan baris perintah Anda, lihat Menyiapkan instruksi eksctl.](install-kubectl.md#eksctl-install-update)

### Prosedur
<a name="_procedure"></a>

1. Unduh kebijakan IAM untuk AWS Load Balancer Controller yang memungkinkannya melakukan panggilan atas nama AWS APIs Anda.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/refs/heads/main/docs/install/iam_policy.json
   ```

1. Buat kebijakan IAM menggunakan kebijakan yang diunduh di langkah sebelumnya.

   ```
   aws iam create-policy \
       --policy-name AWSLoadBalancerControllerIAMPolicy \
       --policy-document file://iam_policy.json
   ```

1. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), dan ID AWS akun (`AWS_ACCOUNT_ID`) dengan pengaturan Anda dan jalankan perintah berikut.

   ```
   eksctl create iamserviceaccount \
       --cluster=CLUSTER_NAME \
       --namespace=kube-system \
       --name=aws-load-balancer-controller \
       --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \
       --override-existing-serviceaccounts \
       --region AWS_REGION \
       --approve
   ```

1. Tambahkan repositori bagan Helm eks-charts. AWS mempertahankan repositori ini aktif. GitHub

   ```
   helm repo add eks https://aws.github.io/eks-charts
   ```

1. Perbarui repositori Helm lokal Anda untuk memastikan bahwa Anda memiliki bagan terbaru.

   ```
   helm repo update eks
   ```

1. Instal AWS Load Balancer Controller. Ganti nilai untuk nama cluster (`CLUSTER_NAME`), AWS Region (`AWS_REGION`), VPC ID (`VPC_ID`), dan Load AWS Balancer Controller Helm chart version `AWS_LBC_HELM_VERSION` () dengan pengaturan Anda. Anda dapat menemukan bagan Helm versi terbaru dengan menjalankan`helm search repo eks/aws-load-balancer-controller --versions`. Jika Anda menjalankan cluster mode campuran dengan node hybrid dan node di AWS Cloud, Anda dapat menjalankan AWS Load Balancer Controller pada node cloud mengikuti instruksi di. [AWS Pengontrol Load Balancer](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-lbc)

   ```
   helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
     -n kube-system \
     --version AWS_LBC_HELM_VERSION \
     --set clusterName=CLUSTER_NAME \
     --set region=AWS_REGION \
     --set vpcId=VPC_ID \
     --set serviceAccount.create=false \
     --set serviceAccount.name=aws-load-balancer-controller
   ```

1. Verifikasi bahwa AWS Load Balancer Controller berhasil diinstal.

   ```
   kubectl get -n kube-system deployment aws-load-balancer-controller
   ```

   ```
   NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
   aws-load-balancer-controller   2/2     2            2           84s
   ```

1. Tentukan contoh aplikasi dalam file bernama`tcp-sample-app.yaml`. Contoh di bawah ini menggunakan penyebaran NGINX sederhana dengan port TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Terapkan penerapan ke cluster Anda.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Tentukan jenis Layanan LoadBalancer untuk penyebaran dalam file bernama`tcp-sample-service.yaml`.

   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: tcp-sample-service
     namespace: default
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-type: external
       service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
       service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
   spec:
     ports:
       - port: 80
         targetPort: 80
         protocol: TCP
     type: LoadBalancer
     selector:
       app: nginx
   ```

1. Terapkan konfigurasi Layanan ke klaster Anda.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Penyediaan NLB untuk Layanan dapat memakan waktu beberapa menit. Setelah NLB disediakan, Layanan akan memiliki alamat yang ditetapkan untuk itu yang sesuai dengan nama DNS dari penyebaran NLB.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.115.212   k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com   80:30396/TCP   8s
   ```

1. Akses Layanan menggunakan alamat NLB.

   ```
   curl k8s-default-tcpsampl-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.<region>.amazonaws.com
   ```

   Contoh output di bawah ini.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Bersihkan sumber daya yang Anda buat.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   ```

## Penyeimbangan beban dalam cluster silia
<a name="hybrid-nodes-service-lb-cilium"></a>

Cilium dapat digunakan sebagai penyeimbang beban in-cluster untuk beban kerja yang berjalan di EKS Hybrid Nodes, yang dapat berguna untuk lingkungan yang tidak memiliki infrastruktur penyeimbang beban. Kemampuan load balancing Cilium dibangun di atas kombinasi fitur Cilium termasuk penggantian kube-proxy, Load Balancer IP Address Management (IPAM), dan BGP Control Plane. Tanggung jawab fitur-fitur ini dirinci di bawah ini:
+  **Cilium kube-proxy replacement**: Menangani routing lalu lintas Service ke pod backend.
+  **Cilium Load Balancer** IPAM: Mengelola alamat IP yang dapat ditetapkan ke Layanan jenis. `LoadBalancer`
+  **Cilium BGP Control Plane**: Mengiklankan alamat IP yang dialokasikan oleh Load Balancer IPAM ke jaringan lokal.

Jika Anda tidak menggunakan pengganti kube-proxy Cilium, Anda masih dapat menggunakan Cilium Load Balancer IPAM dan BGP Control Plane untuk mengalokasikan dan menetapkan alamat IP untuk jenis Layanan. LoadBalancer Jika Anda tidak menggunakan pengganti kube-proxy Cilium, load balancing untuk Services ke pod backend ditangani oleh kube-proxy dan aturan iptables secara default di EKS.

### Prasyarat
<a name="_prerequisites_2"></a>
+ Cilium diinstal mengikuti instruksi [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md) dengan atau tanpa penggantian kube-proxy diaktifkan. Penggantian kube-proxy Cilium memerlukan menjalankan sistem operasi dengan kernel Linux setidaknya terbaru seperti v4.19.57, v5.1.16, atau v5.2.0. Semua versi terbaru dari sistem operasi yang didukung untuk digunakan dengan node hybrid memenuhi kriteria ini, dengan pengecualian Red Hat Enterprise Linux (RHEL) 8.x.
+ Cilium BGP Control Plane diaktifkan mengikuti instruksi di. [Konfigurasikan Cilium BGP untuk node hybrid](hybrid-nodes-cilium-bgp.md) Jika Anda tidak ingin menggunakan BGP, Anda harus menggunakan metode alternatif untuk membuat pod lokal CIDRs dapat dirutekan di jaringan lokal, lihat untuk informasi selengkapnya. [Pod jarak jauh yang dapat dirutekan CIDRs](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-pod-cidrs)
+ Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

### Prosedur
<a name="_procedure_2"></a>

1. Buat file bernama `cilium-lbip-pool-loadbalancer.yaml` dengan `CiliumLoadBalancerIPPool` sumber daya untuk mengonfigurasi rentang alamat IP Load Balancer untuk jenis Layanan Anda. LoadBalancer
   + Ganti `LB_IP_CIDR` dengan rentang alamat IP yang akan digunakan untuk alamat IP Load Balancer. Untuk memilih satu alamat IP, gunakan `/32` CIDR. Untuk informasi selengkapnya, lihat [Manajemen Alamat LoadBalancer IP](https://docs.cilium.io/en/stable/network/lb-ipam/) di dokumentasi Cilium.
   + `serviceSelector`Bidang dikonfigurasi agar sesuai dengan nama Layanan yang akan Anda buat pada langkah berikutnya. Dengan konfigurasi ini, IPs dari pool ini hanya akan dialokasikan ke Layanan dengan nama`tcp-sample-service`.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumLoadBalancerIPPool
     metadata:
       name: tcp-service-pool
     spec:
       blocks:
       - cidr: "LB_IP_CIDR"
       serviceSelector:
         matchLabels:
           io.kubernetes.service.name: tcp-sample-service
     ```

1. Terapkan `CiliumLoadBalancerIPPool` sumber daya ke cluster Anda.

   ```
   kubectl apply -f cilium-lbip-pool-loadbalancer.yaml
   ```

1. Konfirmasikan setidaknya ada satu alamat IP yang tersedia di kolam renang.

   ```
   kubectl get ciliumloadbalancerippools.cilium.io
   ```

   ```
   NAME               DISABLED   CONFLICTING   IPS AVAILABLE   AGE
   tcp-service-pool   false      False         1               24m
   ```

1. Buat file bernama `cilium-bgp-advertisement-loadbalancer.yaml` dengan `CiliumBGPAdvertisement` sumber daya untuk mengiklankan alamat IP penyeimbang beban untuk Layanan yang akan Anda buat di langkah berikutnya. Jika Anda tidak menggunakan Cilium BGP, Anda dapat melewati langkah ini. Alamat IP penyeimbang beban yang digunakan untuk Layanan Anda harus dapat dirutekan di jaringan lokal agar Anda dapat menanyakan layanan pada langkah terakhir.
   + `advertisementType`Bidang disetel ke `Service` dan `service.addresses` disetel `LoadBalancerIP` untuk hanya mengiklankan jenis `LoadBalancer` Layanan. `LoadBalancerIP`
   + `selector`Bidang dikonfigurasi agar sesuai dengan nama Layanan yang akan Anda buat pada langkah berikutnya. Dengan konfigurasi ini, hanya `LoadBalancerIP` untuk Layanan dengan nama yang `tcp-sample-service` akan diiklankan.

     ```
     apiVersion: cilium.io/v2alpha1
     kind: CiliumBGPAdvertisement
     metadata:
       name: bgp-advertisement-tcp-service
       labels:
         advertise: bgp
     spec:
       advertisements:
         - advertisementType: "Service"
           service:
             addresses:
               - LoadBalancerIP
           selector:
             matchLabels:
               io.kubernetes.service.name: tcp-sample-service
     ```

1. Terapkan `CiliumBGPAdvertisement` sumber daya ke cluster Anda. Jika Anda tidak menggunakan Cilium BGP, Anda dapat melewati langkah ini.

   ```
   kubectl apply -f cilium-bgp-advertisement-loadbalancer.yaml
   ```

1. Tentukan contoh aplikasi dalam file bernama`tcp-sample-app.yaml`. Contoh di bawah ini menggunakan penyebaran NGINX sederhana dengan port TCP.

   ```
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: tcp-sample-app
     namespace: default
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
           - name: nginx
             image: public.ecr.aws/nginx/nginx:1.23
             ports:
               - name: tcp
                 containerPort: 80
   ```

1. Terapkan penerapan ke cluster Anda.

   ```
   kubectl apply -f tcp-sample-app.yaml
   ```

1. Tentukan jenis Layanan LoadBalancer untuk penyebaran dalam file bernama`tcp-sample-service.yaml`.
   + Anda dapat meminta alamat IP tertentu dari kumpulan IP penyeimbang beban dengan `lbipam.cilium.io/ips` anotasi pada objek Service. Anda dapat menghapus anotasi ini jika Anda tidak ingin meminta alamat IP tertentu untuk Layanan.
   + Kolom `loadBalancerClass` spesifikasi diperlukan untuk mencegah Penyedia AWS Cloud lama membuat Classic Load Balancer untuk Layanan. Dalam contoh di bawah ini dikonfigurasi `io.cilium/bgp-control-plane` untuk menggunakan BGP Control Plane Cilium sebagai kelas penyeimbang beban. Bidang ini dapat dikonfigurasi `io.cilium/l2-announcer` untuk menggunakan [fitur Pengumuman L2](https://docs.cilium.io/en/latest/network/l2-announcements/) Cilium (saat ini dalam versi beta dan tidak didukung secara resmi oleh). AWS

     ```
     apiVersion: v1
     kind: Service
     metadata:
       name: tcp-sample-service
       namespace: default
       annotations:
         lbipam.cilium.io/ips: "LB_IP_ADDRESS"
     spec:
       loadBalancerClass: io.cilium/bgp-control-plane
       ports:
         - port: 80
           targetPort: 80
           protocol: TCP
       type: LoadBalancer
       selector:
         app: nginx
     ```

1. Terapkan Layanan ke cluster Anda. Layanan akan dibuat dengan alamat IP eksternal yang dapat Anda gunakan untuk mengakses aplikasi.

   ```
   kubectl apply -f tcp-sample-service.yaml
   ```

1. Verifikasi bahwa Layanan berhasil dibuat dan memiliki IP yang ditetapkan untuk itu dari yang `CiliumLoadBalancerIPPool` dibuat pada langkah sebelumnya.

   ```
   kubectl get svc tcp-sample-service
   ```

   ```
   NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
   tcp-sample-service   LoadBalancer   172.16.117.76   LB_IP_ADDRESS   80:31129/TCP   14m
   ```

1. Jika Anda menggunakan Cilium dalam mode penggantian kube-proxy, Anda dapat mengonfirmasi Cilium menangani load balancing untuk Service dengan menjalankan perintah berikut. Pada output di bawah ini, `10.86.2.x` alamatnya adalah alamat IP pod dari pod backend untuk Service.

   ```
   kubectl -n kube-system exec ds/cilium -- cilium-dbg service list
   ```

   ```
   ID   Frontend               Service Type   Backend
   ...
   41   LB_IP_ADDRESS:80/TCP   LoadBalancer   1 => 10.86.2.76:80/TCP (active)
                                              2 => 10.86.2.130:80/TCP (active)
                                              3 => 10.86.2.141:80/TCP (active)
   ```

1. Konfirmasikan Cilium mengiklankan alamat IP ke jaringan lokal melalui BGP. Dalam contoh di bawah ini, ada lima node hibrida, masing-masing `LB_IP_ADDRESS` mengiklankan `tcp-sample-service` Layanan ke jaringan lokal.

   ```
   Node                   VRouter      Prefix             NextHop   Age     Attrs
   mi-026d6a261e355fba7   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-082f73826a163626e   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-09183e8a3d755abf6   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0d78d815980ed202d   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   mi-0daa253999fe92daa   NODES_ASN
                     LB_IP_ADDRESS/32   0.0.0.0   12m3s   [{Origin: i} {Nexthop: 0.0.0.0}]
   ```

1. Akses Layanan menggunakan alamat load balanceRip yang ditetapkan.

   ```
   curl LB_IP_ADDRESS
   ```

   Contoh output di bawah ini.

   ```
   <!DOCTYPE html>
   <html>
   <head>
   <title>Welcome to nginx!</title>
   [...]
   ```

1. Bersihkan sumber daya yang Anda buat.

   ```
   kubectl delete -f tcp-sample-service.yaml
   kubectl delete -f tcp-sample-app.yaml
   kubectl delete -f cilium-lb-ip-pool.yaml
   kubectl delete -f cilium-bgp-advertisement.yaml
   ```

# Konfigurasikan Kebijakan Jaringan Kubernetes untuk node hybrid
<a name="hybrid-nodes-network-policies"></a>

 AWS mendukung Kebijakan Jaringan Kubernetes (Layer 3/Layer 4) untuk lalu lintas masuk dan keluar pod saat menggunakan Cilium sebagai CNI dengan EKS Hybrid Nodes. Jika Anda menjalankan kluster EKS dengan node di AWS Cloud, AWS mendukung [Amazon VPC CNI untuk](cni-network-policy.md) Kebijakan Jaringan Kubernetes.

Topik ini membahas cara mengkonfigurasi Kebijakan Jaringan Cilium dan Kubernetes dengan EKS Hybrid Nodes. Untuk informasi rinci tentang Kebijakan Jaringan Kubernetes, lihat Kebijakan Jaringan Kubernetes di [dokumentasi Kubernetes.](https://kubernetes.io/docs/concepts/services-networking/network-policies/)

## Konfigurasikan kebijakan jaringan
<a name="hybrid-nodes-configure-network-policies"></a>

### Pertimbangan
<a name="_considerations"></a>
+  AWS mendukung Kebijakan Jaringan Kubernetes hulu dan spesifikasi untuk pod ingress dan egress. AWS saat ini tidak mendukung `CiliumNetworkPolicy` atau`CiliumClusterwideNetworkPolicy`.
+ Nilai `policyEnforcementMode` Helm dapat digunakan untuk mengontrol perilaku penegakan kebijakan Cilium default. Perilaku default memungkinkan semua lalu lintas keluar dan masuk. Ketika titik akhir dipilih oleh kebijakan jaringan, ia akan beralih ke status default-deny, di mana hanya lalu lintas yang diizinkan secara eksplisit yang diizinkan. Lihat dokumentasi Cilium untuk informasi selengkapnya tentang [mode kebijakan default dan mode](https://docs.cilium.io/en/stable/security/policy/intro/#policy-mode-default) [penegakan kebijakan](https://docs.cilium.io/en/stable/security/policy/intro/#policy-enforcement-modes).
+ Jika Anda mengubah `policyEnforcementMode` instalasi Cilium yang ada, Anda harus memulai ulang agen Cilium DaemonSet untuk menerapkan mode penegakan kebijakan baru.
+ Gunakan `namespaceSelector` dan `podSelector` untuk mengizinkan atau menolak to/from ruang nama lalu lintas dan pod dengan label yang cocok. The `namespaceSelector` dan `podSelector` dapat digunakan dengan `matchLabels` atau `matchExpressions` untuk memilih namespace dan pod berdasarkan label mereka.
+ Gunakan `ingress.ports` dan `egress.ports` untuk mengizinkan atau menolak to/from pelabuhan lalu lintas dan protokol.
+ `ipBlock`Bidang tidak dapat digunakan untuk secara selektif mengizinkan atau menolak alamat IP to/from pod lalu lintas ([\$19209](https://github.com/cilium/cilium/issues/9209)). Menggunakan `ipBlock` penyeleksi untuk node IPs adalah fitur beta di Cilium dan tidak didukung oleh. AWS
+ Lihat [NetworkPolicy sumber daya](https://kubernetes.io/docs/concepts/services-networking/network-policies/#networkpolicy-resource) dalam dokumentasi Kubernetes untuk informasi tentang bidang yang tersedia untuk Kebijakan Jaringan Kubernetes.

### Prasyarat
<a name="_prerequisites"></a>
+ Cilium dipasang mengikuti instruksi di. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)
+ Helm diinstal di lingkungan baris perintah Anda, lihat instruksi [Setup](helm.md) Helm.

### Prosedur
<a name="_procedure"></a>

Prosedur berikut mengatur kebijakan jaringan untuk aplikasi layanan mikro sampel sehingga komponen hanya dapat berbicara dengan komponen lain yang diperlukan agar aplikasi berfungsi. Prosedur ini menggunakan aplikasi layanan mikro sampel [Istio Bookinfo](https://istio.io/latest/docs/examples/bookinfo/).

Aplikasi Bookinfo terdiri dari empat layanan mikro terpisah dengan hubungan berikut:
+  **halaman produk**. Layanan mikro halaman produk memanggil detail dan ulasan layanan mikro untuk mengisi halaman.
+  **rincian**. Detailnya microservice berisi informasi buku.
+  **ulasan**. Ulasan microservice berisi ulasan buku. Ini juga menyebut peringkat microservice.
+  **peringkat**. Layanan mikro peringkat berisi informasi peringkat buku yang menyertai ulasan buku.

  1. Buat aplikasi sampel.

     ```
     kubectl apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     ```

  1. Konfirmasikan aplikasi berjalan dengan sukses dan catat alamat IP pod untuk microservice productpage. Anda akan menggunakan alamat IP pod ini untuk menanyakan setiap layanan mikro pada langkah selanjutnya.

     ```
     kubectl get pods -o wide
     ```

     ```
     NAME                              READY   STATUS    RESTARTS   AGE   IP            NODE
     details-v1-766844796b-9wff2       1/1     Running   0          7s    10.86.3.7     mi-0daa253999fe92daa
     productpage-v1-54bb874995-lwfgg   1/1     Running   0          7s    10.86.2.193   mi-082f73826a163626e
     ratings-v1-5dc79b6bcd-59njm       1/1     Running   0          7s    10.86.2.232   mi-082f73826a163626e
     reviews-v1-598b896c9d-p2289       1/1     Running   0          7s    10.86.2.47    mi-026d6a261e355fba7
     reviews-v2-556d6457d-djktc        1/1     Running   0          7s    10.86.3.58    mi-0daa253999fe92daa
     reviews-v3-564544b4d6-g8hh4       1/1     Running   0          7s    10.86.2.69    mi-09183e8a3d755abf6
     ```

  1. Buat pod yang akan digunakan secara keseluruhan untuk menguji kebijakan jaringan. Perhatikan bahwa pod dibuat di `default` namespace dengan label. `access: true`

     ```
     kubectl run curl-pod --image=curlimages/curl -i --tty --labels=access=true --namespace=default --overrides='{"spec": { "nodeSelector": {"eks.amazonaws.com/compute-type": "hybrid"}}}' -- /bin/sh
     ```

  1. Uji akses ke microservice productpage. Pada contoh di bawah ini, kita menggunakan alamat IP pod dari productpage pod (`10.86.2.193`) untuk query microservice. Ganti ini dengan alamat IP pod dari pod productpage di lingkungan Anda.

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     ```

     ```
     <title>Simple Bookstore App</title>
     ```

  1. Anda dapat keluar dari test curl pod dengan mengetik `exit` dan dapat menyambung kembali ke pod dengan menjalankan perintah berikut.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

  1. Untuk mendemonstrasikan efek kebijakan jaringan dalam langkah-langkah berikut, pertama-tama kami membuat kebijakan jaringan yang menolak semua lalu lintas untuk layanan BookInfo mikro. Buat file bernama `network-policy-deny-bookinfo.yaml` yang mendefinisikan kebijakan jaringan penolakan.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: deny-bookinfo
       namespace: default
     spec:
       podSelector:
         matchExpressions:
         - key: app
           operator: In
           values: ["productpage", "details", "reviews", "ratings"]
       policyTypes:
       - Ingress
       - Egress
     ```

  1. Terapkan kebijakan jaringan tolak ke klaster Anda.

     ```
     kubectl apply -f network-policy-default-deny-bookinfo.yaml
     ```

  1. Uji akses ke BookInfo aplikasi. Pada contoh di bawah ini, kita menggunakan alamat IP pod dari productpage pod (`10.86.2.193`) untuk query microservice. Ganti ini dengan alamat IP pod dari pod productpage di lingkungan Anda.

     ```
     curl http://10.86.2.193:9080/productpage --max-time 10
     ```

     ```
     curl: (28) Connection timed out after 10001 milliseconds
     ```

  1. Buat file bernama `network-policy-productpage.yaml` yang mendefinisikan kebijakan jaringan productpage. Kebijakan ini memiliki aturan berikut:
     + memungkinkan lalu lintas masuk dari pod dengan label `access: true` (pod curl yang dibuat pada langkah sebelumnya)
     + memungkinkan lalu lintas TCP keluar di port `9080` untuk detail, ulasan, dan peringkat layanan mikro
     + memungkinkan TCP/UDP lalu lintas keluar pada port untuk `53` CoreDNS yang berjalan di namespace `kube-system`

       ```
       apiVersion: networking.k8s.io/v1
       kind: NetworkPolicy
       metadata:
         name: productpage-policy
         namespace: default
       spec:
         podSelector:
           matchLabels:
             app: productpage
         policyTypes:
         - Ingress
         - Egress
         ingress:
         - from:
           - podSelector:
               matchLabels:
                 access: "true"
         egress:
         - to:
           - podSelector:
               matchExpressions:
               - key: app
                 operator: In
                 values: ["details", "reviews", "ratings"]
           ports:
           - port: 9080
             protocol: TCP
         - to:
           - namespaceSelector:
               matchLabels:
                 kubernetes.io/metadata.name: kube-system
             podSelector:
               matchLabels:
                 k8s-app: kube-dns
           ports:
           - port: 53
             protocol: UDP
           - port: 53
             protocol: TCP
       ```

  1. Terapkan kebijakan jaringan productpage ke klaster Anda.

     ```
     kubectl apply -f network-policy-productpage.yaml
     ```

  1. Connect ke curl pod dan uji akses ke aplikasi Bookinfo. Akses ke layanan mikro halaman produk sekarang diizinkan, tetapi layanan mikro lainnya masih ditolak karena masih tunduk pada kebijakan jaringan penolakan. Dalam contoh di bawah ini, kita menggunakan alamat IP pod dari productpage pod (`10.86.2.193`) untuk query microservice. Ganti ini dengan alamat IP pod dari pod productpage di lingkungan Anda.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     ```
     curl -s http://10.86.2.193:9080/productpage | grep -o "<title>.*</title>"
     <title>Simple Bookstore App</title>
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     {"error": "Sorry, product details are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     {"error": "Sorry, product reviews are currently unavailable for this book."}
     ```

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     {"error": "Sorry, product ratings are currently unavailable for this book."}
     ```

  1. Buat file bernama `network-policy-details.yaml` yang mendefinisikan kebijakan jaringan detail. Kebijakan ini hanya mengizinkan lalu lintas masuk dari layanan mikro halaman produk.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: details-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: details
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
     ```

  1. Buat file bernama `network-policy-reviews.yaml` yang mendefinisikan kebijakan jaringan ulasan. Kebijakan ini hanya mengizinkan lalu lintas masuk dari layanan mikro halaman produk dan hanya mengalihkan lalu lintas ke layanan mikro peringkat dan CoreDNS.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: reviews-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: reviews
       policyTypes:
       - Ingress
       - Egress
       ingress:
       - from:
         - podSelector:
             matchLabels:
               app: productpage
       egress:
       - to:
         - podSelector:
             matchLabels:
               app: ratings
       - to:
         - namespaceSelector:
             matchLabels:
               kubernetes.io/metadata.name: kube-system
           podSelector:
             matchLabels:
               k8s-app: kube-dns
         ports:
         - port: 53
           protocol: UDP
         - port: 53
           protocol: TCP
     ```

  1. Buat file bernama `network-policy-ratings.yaml` yang mendefinisikan kebijakan jaringan peringkat. Kebijakan ini hanya mengizinkan lalu lintas masuk dari halaman produk dan meninjau layanan mikro.

     ```
     apiVersion: networking.k8s.io/v1
     kind: NetworkPolicy
     metadata:
       name: ratings-policy
       namespace: default
     spec:
       podSelector:
         matchLabels:
           app: ratings
       policyTypes:
       - Ingress
       ingress:
       - from:
         - podSelector:
             matchExpressions:
             - key: app
               operator: In
               values: ["productpage", "reviews"]
     ```

  1. Terapkan kebijakan jaringan detail, ulasan, dan peringkat ke klaster Anda.

     ```
     kubectl apply -f network-policy-details.yaml
     kubectl apply -f network-policy-reviews.yaml
     kubectl apply -f network-policy-ratings.yaml
     ```

  1. Connect ke curl pod dan uji akses ke aplikasi Bookinfo. Dalam contoh di bawah ini, kita menggunakan alamat IP pod dari productpage pod (`10.86.2.193`) untuk query microservice. Ganti ini dengan alamat IP pod dari pod productpage di lingkungan Anda.

     ```
     kubectl attach curl-pod -c curl-pod -i -t
     ```

     Uji detailnya microservice.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1
     ```

     ```
     {"id": 1, "author": "William Shakespeare", "year": 1595, "type": "paperback", "pages": 200, "publisher": "PublisherA", "language": "English", "ISBN-10": "1234567890", "ISBN-13": "123-1234567890"}
     ```

     Uji ulasan microservice.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/reviews
     ```

     ```
     {"id": "1", "podname": "reviews-v1-598b896c9d-p2289", "clustername": "null", "reviews": [{"reviewer": "Reviewer1", "text": "An extremely entertaining play by Shakespeare. The slapstick humour is refreshing!"}, {"reviewer": "Reviewer2", "text": "Absolutely fun and entertaining. The play lacks thematic depth when compared to other plays by Shakespeare."}]}
     ```

     Uji peringkat microservice.

     ```
     curl -s http://10.86.2.193:9080/api/v1/products/1/ratings
     ```

     ```
     {"id": 1, "ratings": {"Reviewer1": 5, "Reviewer2": 4}}
     ```

  1. Bersihkan sumber daya yang Anda buat dalam prosedur ini.

     ```
     kubectl delete -f network-policy-deny-bookinfo.yaml
     kubectl delete -f network-policy-productpage.yaml
     kubectl delete -f network-policy-details.yaml
     kubectl delete -f network-policy-reviews.yaml
     kubectl delete -f network-policy-ratings.yaml
     kubectl delete -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
     kubectl delete pod curl-pod
     ```

# Konsep untuk node hibrida
<a name="hybrid-nodes-concepts"></a>

Dengan *Amazon EKS Hybrid Nodes*, Anda menggabungkan mesin fisik atau virtual yang berjalan di lingkungan lokal atau edge ke kluster Amazon EKS yang berjalan di AWS Cloud. Pendekatan ini membawa banyak manfaat, tetapi juga memperkenalkan konsep dan arsitektur jaringan baru bagi mereka yang akrab dengan menjalankan klaster Kubernetes dalam satu lingkungan jaringan.

Bagian berikut menyelam jauh ke dalam Kubernetes dan konsep jaringan untuk EKS Hybrid Nodes dan merinci bagaimana lalu lintas mengalir melalui arsitektur hybrid. Bagian ini mengharuskan Anda memahami pengetahuan dasar jaringan Kubernetes, seperti konsep pod, node, layanan, bidang kontrol Kubernetes, kubelet, dan kube-proxy.

Kami merekomendasikan membaca halaman-halaman ini secara berurutan[Konsep jaringan untuk node hibrida](hybrid-nodes-concepts-networking.md), dimulai dengan[Konsep Kubernetes untuk node hibrida](hybrid-nodes-concepts-kubernetes.md), lalu, dan akhirnya[Arus lalu lintas jaringan untuk node hibrida](hybrid-nodes-concepts-traffic-flows.md).

**Topics**
+ [Konsep jaringan untuk node hibrida](hybrid-nodes-concepts-networking.md)
+ [Konsep Kubernetes untuk node hibrida](hybrid-nodes-concepts-kubernetes.md)
+ [Arus lalu lintas jaringan untuk node hibrida](hybrid-nodes-concepts-traffic-flows.md)

# Konsep jaringan untuk node hibrida
<a name="hybrid-nodes-concepts-networking"></a>

Bagian ini merinci konsep jaringan inti dan kendala yang harus Anda pertimbangkan saat merancang topologi jaringan Anda untuk EKS Hybrid Nodes.

## Konsep jaringan untuk EKS Hybrid Nodes
<a name="_networking_concepts_for_eks_hybrid_nodes"></a>

![\[Diagram jaringan node hibrida tingkat tinggi\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-highlevel-network.png)


 **VPC sebagai hub jaringan** 

Semua lalu lintas yang melintasi rute batas cloud melalui VPC Anda. Ini termasuk lalu lintas antara bidang kontrol EKS atau pod yang berjalan AWS ke node hibrida atau pod yang berjalan di atasnya. Anda dapat menganggap VPC cluster Anda sebagai hub jaringan antara node hybrid Anda dan cluster lainnya. Arsitektur ini memberi Anda kontrol penuh atas lalu lintas dan peruteannya tetapi juga menjadikannya tanggung jawab Anda untuk mengonfigurasi rute, grup keamanan, dan firewall dengan benar untuk VPC.

 **Pesawat kontrol EKS ke VPC** 

Bidang kontrol EKS memasang **Elastic Network Interfaces (ENIs)** ke VPC Anda. Ini ENIs menangani lalu lintas ke dan dari server API EKS. Anda mengontrol penempatan bidang kontrol EKS ENIs saat mengonfigurasi klaster, saat EKS ENIs menempel pada subnet yang Anda lewati selama pembuatan klaster.

EKS mengaitkan Grup Keamanan dengan EKS ENIs yang melekat pada subnet Anda. Kelompok keamanan ini memungkinkan lalu lintas ke dan dari pesawat kontrol EKS melalui ENIs. Ini penting untuk EKS Hybrid Nodes karena Anda harus mengizinkan lalu lintas dari node hybrid dan pod yang berjalan di atasnya ke bidang kontrol EKS ENIs.

 **Jaringan Node Jarak Jauh** 

Jaringan node jarak jauh, khususnya node jarak jauh CIDRs, adalah rentang yang IPs ditugaskan ke mesin yang Anda gunakan sebagai node hibrida. Saat Anda menyediakan node hibrid, node tersebut berada di pusat data lokal atau lokasi edge Anda, yang merupakan domain jaringan yang berbeda dari bidang kontrol EKS dan VPC. Setiap node hybrid memiliki alamat IP, atau alamat, dari node jarak jauh CIDR yang berbeda dari subnet di VPC Anda.

Anda mengonfigurasi cluster EKS dengan node jarak jauh ini CIDRs sehingga EKS tahu untuk merutekan semua lalu lintas yang ditujukan untuk node hybrid IPs melalui VPC cluster Anda, seperti permintaan ke kubelet API. Koneksi ke `kubelet` API digunakan dalam`kubectl attach`,,`kubectl cp`, `kubectl exec``kubectl logs`, dan `kubectl port-forward` perintah.

 **Jaringan Pod Jarak Jauh** 

Jaringan pod jarak jauh adalah rentang yang IPs ditetapkan ke pod yang berjalan pada node hybrid. Umumnya, Anda mengonfigurasi CNI Anda dengan rentang ini dan fungsionalitas IP Address Management (IPAM) dari CNI menangani penetapan sepotong rentang ini ke setiap node hybrid. Saat Anda membuat pod, CNI memberikan IP ke pod dari irisan yang dialokasikan ke node tempat pod telah dijadwalkan.

Anda mengonfigurasi cluster EKS dengan pod jarak jauh ini CIDRs sehingga control plane EKS tahu untuk merutekan semua lalu lintas yang ditujukan untuk pod yang berjalan pada node hybrid melalui VPC klaster Anda, seperti komunikasi dengan webhook.

![\[Jaringan Pod Jarak Jauh\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-remote-pod-cidrs.png)


 **Lokal ke VPC** 

Jaringan lokal yang Anda gunakan untuk node hibrid harus merutekan ke VPC yang Anda gunakan untuk kluster EKS Anda. Ada beberapa [opsi konektivitas Network-to-Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) yang tersedia untuk menghubungkan jaringan lokal Anda ke VPC. Anda juga dapat menggunakan solusi VPN Anda sendiri.

Penting bagi Anda untuk mengonfigurasi perutean dengan benar di sisi AWS Cloud di VPC dan di jaringan lokal Anda, sehingga kedua jaringan merutekan lalu lintas yang tepat melalui koneksi untuk kedua jaringan tersebut.

Di VPC, semua lalu lintas yang menuju ke node jarak jauh dan jaringan pod jarak jauh harus merutekan melalui koneksi ke jaringan lokal Anda (disebut sebagai “gateway”). Jika beberapa subnet Anda memiliki tabel rute yang berbeda, Anda harus mengonfigurasi setiap tabel rute dengan rute untuk node hibrida dan pod yang berjalan di atasnya. Hal ini berlaku untuk subnet di mana bidang kontrol EKS ENIs dilampirkan, dan subnet yang berisi EC2 node atau pod yang harus berkomunikasi dengan node hibrida.

Di jaringan lokal, Anda harus mengonfigurasi jaringan untuk mengizinkan lalu lintas ke dan dari VPC kluster EKS Anda dan layanan AWS lain yang diperlukan untuk node hibrid. Lalu lintas untuk cluster EKS melintasi gateway di kedua arah.

## Kendala jaringan
<a name="_networking_constraints"></a>

 **Jaringan yang sepenuhnya dirutekan** 

Kendala utama adalah bahwa bidang kontrol EKS dan semua node, cloud atau node hybrid, perlu membentuk jaringan yang **sepenuhnya dirutekan**. Ini berarti bahwa semua node harus dapat menjangkau satu sama lain pada lapisan tiga, dengan alamat IP.

Bidang kontrol EKS dan node awan sudah dapat dijangkau satu sama lain karena mereka berada dalam jaringan datar (VPC). Node hybrid, bagaimanapun, berada dalam domain jaringan yang berbeda. Inilah sebabnya mengapa Anda perlu mengonfigurasi perutean tambahan di VPC dan di jaringan lokal Anda untuk merutekan lalu lintas antara node hibrida dan cluster lainnya. Jika node hybrid dapat dijangkau satu sama lain dan dari VPC, node hybrid Anda dapat berada dalam satu jaringan datar tunggal atau di beberapa jaringan tersegmentasi.

 **Pod jarak jauh yang dapat dirutekan CIDRs** 

Agar control plane EKS dapat berkomunikasi dengan pod yang berjalan pada node hybrid (misalnya, webhook atau Metrics Server) atau untuk pod yang berjalan di cloud node untuk berkomunikasi dengan pod yang berjalan pada node hybrid (beban kerja komunikasi timur-barat), pod jarak jauh CIDR Anda harus dapat dirutekan dari VPC. Ini berarti bahwa VPC harus dapat merutekan lalu lintas ke pod CIDRs melalui gateway ke jaringan lokal Anda dan bahwa jaringan lokal Anda harus dapat merutekan lalu lintas pod ke node yang tepat.

Penting untuk dicatat perbedaan antara persyaratan perutean pod di VPC dan lokal. VPC hanya perlu tahu bahwa setiap lalu lintas yang menuju pod jarak jauh harus melalui gateway. Jika Anda hanya memiliki satu pod jarak jauh CIDR, Anda hanya perlu satu rute.

Persyaratan ini berlaku untuk semua hop di jaringan lokal Anda hingga router lokal di subnet yang sama dengan node hybrid Anda. Ini adalah satu-satunya router yang perlu mengetahui potongan CIDR pod yang ditetapkan untuk setiap node, memastikan bahwa lalu lintas untuk pod tertentu dikirim ke node tempat pod telah dijadwalkan.

Anda dapat memilih untuk menyebarkan rute ini untuk pod lokal CIDRs dari router lokal lokal Anda ke tabel rute VPC, tetapi tidak perlu. Jika pod lokal Anda sering CIDRs berubah dan tabel rute VPC Anda perlu diperbarui untuk mencerminkan pod yang berubah, sebaiknya Anda menyebarkan CIDRs pod lokal CIDRs ke tabel rute VPC, tetapi hal ini jarang terjadi.

Perhatikan, kendala untuk membuat pod lokal Anda dapat CIDRs dirutekan adalah opsional. Jika Anda tidak perlu menjalankan webhook pada node hybrid atau pod di cloud node berbicara dengan pod pada node hybrid, Anda tidak perlu mengonfigurasi routing untuk pod CIDRs di jaringan lokal Anda.

 *Mengapa pod lokal CIDRs harus dapat dirutekan dengan node hybrid?* 

Saat menggunakan EKS dengan VPC CNI untuk node cloud Anda, VPC CNI menugaskan langsung IPs dari VPC ke pod. Ini berarti tidak diperlukan perutean khusus, karena kedua pod cloud dan bidang kontrol EKS dapat mencapai Pod secara IPs langsung.

Saat menjalankan on-premise (dan dengan yang lain CNIs di cloud), pod biasanya berjalan di jaringan overlay yang terisolasi dan CNI menangani pengiriman lalu lintas antar pod. Ini biasanya dilakukan melalui enkapsulasi: CNI mengubah pod-to-pod lalu lintas menjadi lalu node-to-node lintas, mengurus enkapsulasi dan de-enkapsulasi di kedua ujungnya. Dengan cara ini, tidak perlu konfigurasi tambahan pada node dan pada router.

Jaringan dengan node hibrida unik karena menyajikan kombinasi kedua topologi - bidang kontrol EKS dan node cloud (dengan VPC CNI) mengharapkan jaringan datar termasuk node dan pod, sedangkan pod yang berjalan pada node hibrida berada dalam jaringan overlay dengan menggunakan VXLAN untuk enkapsulasi (secara default di Cilium). Pod yang berjalan pada node hybrid dapat mencapai control plane EKS dan pod yang berjalan di cloud node dengan asumsi jaringan lokal dapat merutekan ke VPC. Namun, tanpa merutekan pod CIDRs di jaringan lokal, lalu lintas apa pun yang kembali ke IP pod lokal akan dihapus pada akhirnya jika jaringan tidak tahu cara menjangkau jaringan overlay dan merutekan ke node yang benar.

# Konsep Kubernetes untuk node hibrida
<a name="hybrid-nodes-concepts-kubernetes"></a>

Halaman ini merinci konsep-konsep utama Kubernetes yang mendukung arsitektur sistem EKS Hybrid Nodes.

## Pesawat kontrol EKS di VPC
<a name="hybrid-nodes-concepts-k8s-api"></a>

 IPs Bidang kontrol EKS ENIs disimpan dalam `kubernetes` `Endpoints` objek di `default` namespace. Ketika EKS membuat yang baru ENIs atau menghapus yang lebih lama, EKS memperbarui objek ini sehingga daftar IPs selalu up-to-date.

Anda dapat menggunakan titik akhir ini melalui `kubernetes` Layanan, juga di `default` namespace. Layanan ini, dari `ClusterIP` jenis, selalu diberi IP pertama dari CIDR layanan cluster. Misalnya, untuk layanan CIDR`172.16.0.0/16`, IP layanan akan`172.16.0.1`.

Secara umum, ini adalah bagaimana Pod (terlepas dari apakah berjalan di cloud atau node hybrid) mengakses server API EKS Kubernetes. Pod menggunakan IP layanan sebagai IP tujuan, yang diterjemahkan ke IPs salah satu bidang kontrol EKS yang sebenarnya ENIs. Pengecualian utama adalah`kube-proxy`, karena mengatur terjemahan.

## Titik akhir server API EKS
<a name="hybrid-nodes-concepts-k8s-eks-api"></a>

IP `kubernetes` layanan bukan satu-satunya cara untuk mengakses server EKS API. EKS juga membuat nama DNS Route53 saat Anda membuat cluster Anda. Ini adalah `endpoint` bidang cluster EKS Anda saat memanggil aksi EKS `DescribeCluster` API.

```
{
    "cluster": {
        "endpoint": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com",
        "name": "my-cluster",
        "status": "ACTIVE"
    }
}
```

Dalam akses endpoint publik atau kluster akses endpoint publik dan pribadi, node hybrid Anda akan menyelesaikan nama DNS ini ke IP publik secara default, yang dapat dirutekan melalui internet. Dalam kluster akses titik akhir pribadi, nama DNS diselesaikan menjadi pribadi IPs dari bidang kontrol EKS. ENIs

Ini adalah bagaimana `kubelet` dan `kube-proxy` mengakses server API Kubernetes. Jika Anda ingin semua lalu lintas klaster Kubernetes mengalir melalui VPC, Anda perlu mengonfigurasi klaster Anda dalam mode akses pribadi atau memodifikasi server DNS lokal Anda untuk menyelesaikan titik akhir kluster EKS ke privat bidang kontrol EKS. IPs ENIs

## Titik akhir `kubelet`
<a name="hybrid-nodes-concepts-k8s-kubelet-api"></a>

Ini `kubelet` mengekspos beberapa titik akhir REST, memungkinkan bagian lain dari sistem untuk berinteraksi dengan dan mengumpulkan informasi dari setiap node. Di sebagian besar cluster, sebagian besar lalu lintas ke `kubelet` server berasal dari bidang kontrol, tetapi agen pemantauan tertentu mungkin juga berinteraksi dengannya.

Melalui antarmuka ini, `kubelet` menangani berbagai permintaan: mengambil log (`kubectl logs`), mengeksekusi perintah di dalam container (), dan port-forwarding traffic (`kubectl exec`). `kubectl port-forward` Setiap permintaan ini berinteraksi dengan runtime kontainer yang mendasarinya melalui`kubelet`, tampak mulus bagi administrator dan pengembang klaster.

Konsumen yang paling umum dari API ini adalah Kubernetes API server. Saat Anda menggunakan salah satu `kubectl` perintah yang disebutkan sebelumnya, `kubectl` buat permintaan API ke server API, yang kemudian memanggil `kubelet` API node tempat pod berjalan. Ini adalah alasan utama mengapa IP node harus dapat dijangkau dari bidang kontrol EKS dan mengapa, bahkan jika pod Anda berjalan, Anda tidak akan dapat mengakses log mereka atau `exec` jika rute node salah dikonfigurasi.

 **Node IPs** 

Ketika bidang kontrol EKS berkomunikasi dengan node, ia menggunakan salah satu alamat yang dilaporkan dalam status `Node` objek (`status.addresses`).

Dengan node cloud EKS, kubelet biasanya melaporkan IP pribadi EC2 instance sebagai an `InternalIP` selama pendaftaran node. IP ini kemudian divalidasi oleh Cloud Controller Manager (CCM) memastikan itu milik instance. EC2 Selain itu, CCM biasanya menambahkan nama publik IPs (as`ExternalIP`) dan DNS (`InternalDNS`dan`ExternalDNS`) instance ke status node.

Namun, tidak ada CCM untuk node hybrid. Ketika Anda mendaftarkan node hybrid dengan EKS Hybrid Nodes CLI (`nodeadm`), ia mengkonfigurasi kubelet untuk melaporkan IP mesin Anda secara langsung dalam status node, tanpa CCM.

```
apiVersion: v1
kind: Node
metadata:
  name: my-node-1
spec:
  providerID: eks-hybrid:///us-west-2/my-cluster/my-node-1
status:
  addresses:
  - address: 10.1.1.236
    type: InternalIP
  - address: my-node-1
    type: Hostname
```

Jika mesin Anda memiliki beberapa IPs, kubelet akan memilih salah satu dari mereka mengikuti logikanya sendiri. Anda dapat mengontrol IP yang dipilih dengan `--node-ip` bendera, yang dapat Anda berikan dalam `nodeadm` `spec.kubelet.flags` konfigurasi. Hanya IP yang dilaporkan dalam `Node` objek yang membutuhkan rute dari VPC. Mesin Anda dapat memiliki IPs yang lain yang tidak dapat dijangkau dari cloud.

## `kube-proxy`
<a name="hybrid-nodes-concepts-k8s-kube-proxy"></a>

 `kube-proxy`bertanggung jawab untuk mengimplementasikan abstraksi Layanan pada lapisan jaringan setiap node. Ini bertindak sebagai proxy jaringan dan penyeimbang beban untuk lalu lintas yang ditujukan ke Layanan Kubernetes. Dengan terus memantau server API Kubernetes untuk perubahan yang terkait dengan Layanan dan Titik Akhir, memperbarui aturan jaringan host yang mendasarinya `kube-proxy` secara dinamis untuk memastikan lalu lintas diarahkan dengan benar.

Dalam `iptables` mode, `kube-proxy` program beberapa `netfilter` rantai untuk menangani lalu lintas layanan. Aturan membentuk hierarki berikut:

1.  **Rantai KUBE-SERVICES**: Titik masuk untuk semua lalu lintas layanan. Ini memiliki aturan yang cocok dengan setiap layanan `ClusterIP` dan port.

1.  **KUBE-SVC-XXX rantai: Rantai** khusus layanan memiliki aturan penyeimbangan beban untuk setiap layanan.

1.  **KUBE-SEP-XXX rantai: Rantai** khusus titik akhir memiliki aturan yang sebenarnya. `DNAT`

Mari kita periksa apa yang terjadi untuk sebuah layanan `test-server` di `default` namespace: \$1 Service ClusterIP: \$1 Service port: `172.16.31.14` \$1 Backing pods:`80`,, dan `10.2.0.110` `10.2.1.39` `10.2.2.254` 

Saat kami memeriksa `iptables` aturan (menggunakan`iptables-save 0 grep -A10 KUBE-SERVICES`):

1. Dalam rantai **KUBE-SERVICES**, kami menemukan aturan yang cocok dengan layanan:

   ```
   -A KUBE-SERVICES -d 172.16.31.14/32 -p tcp -m comment --comment "default/test-server cluster IP" -m tcp --dport 80 -j KUBE-SVC-XYZABC123456
   ```
   + Aturan ini cocok dengan paket yang ditujukan untuk 172.16.31. 14:80
   + Komentar menunjukkan untuk apa aturan ini: `default/test-server cluster IP` 
   + Paket yang cocok melompat ke rantai `KUBE-SVC-XYZABC123456`

1. XYZABC123456Rantai **KUBE-SVC memiliki aturan load balancing** berbasis probabilitas:

   ```
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-POD1XYZABC
   -A KUBE-SVC-XYZABC123456 -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-POD2XYZABC
   -A KUBE-SVC-XYZABC123456 -j KUBE-SEP-POD3XYZABC
   ```
   + Aturan pertama: 33,3% peluang untuk melompat `KUBE-SEP-POD1XYZABC` 
   + Aturan kedua: 50% kemungkinan lalu lintas yang tersisa (33,3% dari total) untuk melompat `KUBE-SEP-POD2XYZABC` 
   + Aturan terakhir: Semua lalu lintas yang tersisa (33,3% dari total) melompat ke `KUBE-SEP-POD3XYZABC` 

1. Rantai **KUBE-SEP-XXX** individu melakukan DNAT (Destination NAT):

   ```
   -A KUBE-SEP-POD1XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.0.110:80
   -A KUBE-SEP-POD2XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.1.39:80
   -A KUBE-SEP-POD3XYZABC -p tcp -m tcp -j DNAT --to-destination 10.2.2.254:80
   ```
   + Aturan DNAT ini menulis ulang IP tujuan dan port untuk mengarahkan lalu lintas ke pod tertentu.
   + Setiap aturan menangani sekitar 33,3% dari lalu lintas, memberikan keseimbangan beban yang merata antara`10.2.0.110`, dan. `10.2.1.39` `10.2.2.254`

Struktur rantai multi-level ini memungkinkan `kube-proxy` untuk secara efisien menerapkan penyeimbangan beban layanan dan pengalihan melalui manipulasi paket tingkat kernel, tanpa memerlukan proses proxy di jalur data.

### Dampak pada operasi Kubernetes
<a name="hybrid-nodes-concepts-k8s-operations"></a>

Kerusakan `kube-proxy` pada node mencegah node tersebut merutekan lalu lintas Layanan dengan benar, menyebabkan batas waktu atau koneksi gagal untuk pod yang mengandalkan Layanan cluster. Ini bisa sangat mengganggu ketika node pertama kali terdaftar. CNI perlu berbicara dengan server API Kubernetes untuk mendapatkan informasi, seperti pod CIDR node, sebelum dapat mengkonfigurasi jaringan pod apa pun. Untuk melakukan itu, ia menggunakan IP `kubernetes` Layanan. Namun, jika `kube-proxy` belum dapat memulai atau gagal menetapkan `iptables` aturan yang tepat, permintaan yang masuk ke IP `kubernetes` layanan tidak diterjemahkan ke bidang kontrol EKS yang sebenarnya IPs ENIs. Akibatnya, CNI akan memasuki crash loop dan tidak ada pod yang dapat berjalan dengan baik.

Kita tahu pod menggunakan IP `kubernetes` layanan untuk berkomunikasi dengan server API Kubernetes, tetapi `kube-proxy` perlu terlebih dahulu menetapkan `iptables` aturan untuk membuatnya berfungsi.

Bagaimana cara `kube-proxy` berkomunikasi dengan server API?

`kube-proxy`Harus dikonfigurasi untuk menggunakan server API Kubernetes yang sebenarnya IP/s atau nama DNS yang menyelesaikannya. Dalam kasus EKS, EKS mengonfigurasi default `kube-proxy` untuk menunjuk ke nama DNS Route53 yang dibuat EKS saat Anda membuat cluster. Anda dapat melihat nilai ini di `kube-proxy` ConfigMap dalam `kube-system` namespace. Isi dari ini ConfigMap adalah a `kubeconfig` yang disuntikkan ke dalam `kube-proxy` pod, jadi cari `clusters0.cluster.server` bidangnya. Nilai ini akan cocok dengan `endpoint` bidang kluster EKS Anda (saat memanggil EKS `DescribeCluster` API).

```
apiVersion: v1
data:
  kubeconfig: |-
    kind: Config
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        server: https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com
      name: default
    contexts:
    - context:
        cluster: default
        namespace: default
        user: default
      name: default
    current-context: default
    users:
    - name: default
      user:
        tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
kind: ConfigMap
metadata:
  name: kube-proxy
  namespace: kube-system
```

## Pod jarak jauh yang dapat dirutekan CIDRs
<a name="hybrid-nodes-concepts-k8s-pod-cidrs"></a>

[Konsep jaringan untuk node hibrida](hybrid-nodes-concepts-networking.md)Halaman ini merinci persyaratan untuk menjalankan webhook pada node hybrid atau agar pod berjalan di cloud node berkomunikasi dengan pod yang berjalan pada node hybrid. Persyaratan utamanya adalah router lokal perlu mengetahui node mana yang bertanggung jawab atas IP pod tertentu. Ada beberapa cara untuk mencapai hal ini, termasuk Border Gateway Protocol (BGP), rute statis, dan proxy Address Resolution Protocol (ARP). Ini tercakup dalam bagian berikut.

 **Protokol Gerbang Perbatasan (BGP)** 

Jika CNI Anda mendukungnya (seperti Cilium dan Calico), Anda dapat menggunakan mode BGP CNI Anda untuk menyebarkan rute ke pod CIDRs per node Anda dari node Anda ke router lokal Anda. Saat menggunakan mode BGP CNI, CNI Anda bertindak sebagai router virtual, sehingga router lokal Anda berpikir pod CIDR milik subnet yang berbeda dan node Anda adalah gateway ke subnet itu.

![\[Perutean BGP node hibrid\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-bgp.png)


 **Rute statis** 

Atau, Anda dapat mengonfigurasi rute statis di router lokal Anda. Ini adalah cara paling sederhana untuk merutekan pod CIDR lokal ke VPC Anda, tetapi ini juga yang paling rawan kesalahan dan sulit dipertahankan. Anda perlu memastikan bahwa rute selalu up-to-date dengan node yang ada dan pod yang ditetapkan CIDRs. Jika jumlah node Anda kecil dan infrastruktur statis, ini adalah opsi yang layak dan menghilangkan kebutuhan akan dukungan BGP di router Anda. Jika Anda memilih ini, kami sarankan untuk mengonfigurasi CNI Anda dengan irisan pod CIDR yang ingin Anda tetapkan ke setiap node alih-alih membiarkan IPAM-nya memutuskan.

![\[Perutean statis node hibrid\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-static-routes.png)


 **Proksi Protokol Resolusi Alamat (ARP)** 

Proxy ARP adalah pendekatan lain untuk membuat pod lokal IPs dapat dirutekan, sangat berguna ketika node hybrid Anda berada di jaringan Layer 2 yang sama dengan router lokal Anda. Dengan proksi ARP diaktifkan, sebuah node merespons permintaan ARP untuk pod yang dihost-nya, meskipun IPs itu IPs milik subnet yang berbeda.

Ketika perangkat di jaringan lokal Anda mencoba untuk mencapai IP pod, pertama-tama ia mengirimkan permintaan ARP yang menanyakan “Siapa yang memiliki IP ini?”. Node hybrid hosting pod itu akan merespons dengan alamat MAC-nya sendiri, mengatakan “Saya dapat menangani lalu lintas untuk IP itu.” Ini menciptakan jalur langsung antara perangkat di jaringan lokal Anda dan pod tanpa memerlukan konfigurasi router.

Agar ini berfungsi, CNI Anda harus mendukung fungsionalitas ARP proxy. Cilium memiliki dukungan bawaan untuk ARP proxy yang dapat Anda aktifkan melalui konfigurasi. Pertimbangan utamanya adalah bahwa pod CIDR tidak boleh tumpang tindih dengan jaringan lain di lingkungan Anda, karena ini dapat menyebabkan konflik perutean.

Pendekatan ini memiliki beberapa keunggulan: \$1 Tidak perlu mengkonfigurasi router Anda dengan BGP atau mempertahankan rute statis \$1 Bekerja dengan baik di lingkungan di mana Anda tidak memiliki kendali atas konfigurasi router Anda

![\[Proksi ARP node hibrida\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-arp-proxy.png)


## Pod-to-Pod enkapsulasi
<a name="hybrid-nodes-concepts-k8s-pod-encapsulation"></a>

Di lingkungan lokal, CNIs biasanya menggunakan protokol enkapsulasi untuk membuat jaringan overlay yang dapat beroperasi di atas jaringan fisik tanpa perlu mengkonfigurasi ulang. Bagian ini menjelaskan cara kerja enkapsulasi ini. Perhatikan bahwa beberapa detail mungkin berbeda tergantung pada CNI yang Anda gunakan.

Enkapsulasi membungkus paket jaringan pod asli di dalam paket jaringan lain yang dapat dirutekan melalui jaringan fisik yang mendasarinya. Hal ini memungkinkan pod untuk berkomunikasi di seluruh node yang menjalankan CNI yang sama tanpa memerlukan jaringan fisik untuk mengetahui cara merutekan pod CIDRs tersebut.

Protokol enkapsulasi yang paling umum digunakan dengan Kubernetes adalah Virtual Extensible LAN (VXLAN), meskipun yang lain (seperti`Geneve`) juga tersedia tergantung pada CNI Anda.

### Enkapsulasi VXLAN
<a name="_vxlan_encapsulation"></a>

VXLAN merangkum frame Ethernet Layer 2 dalam paket UDP. Ketika sebuah pod mengirimkan lalu lintas ke pod lain pada node yang berbeda, CNI melakukan hal berikut:

1. CNI mencegat paket dari Pod A

1. CNI membungkus paket asli dalam header VXLAN

1. Paket yang dibungkus ini kemudian dikirim melalui tumpukan jaringan reguler node ke node tujuan

1. CNI pada node tujuan membuka bungkus paket dan mengirimkannya ke Pod B

Inilah yang terjadi pada struktur paket selama enkapsulasi VXLAN:

 Pod-to-PodPaket Asli:

```
+-----------------+---------------+-------------+-----------------+
| Ethernet Header | IP Header     | TCP/UDP     | Payload         |
| Src: Pod A MAC  | Src: Pod A IP | Src Port    |                 |
| Dst: Pod B MAC  | Dst: Pod B IP | Dst Port    |                 |
+-----------------+---------------+-------------+-----------------+
```

Setelah Enkapsulasi VXLAN:

```
+-----------------+-------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP    | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node A MAC | Src: Node A | Src: Random  | VNI: xx    | Packet (unchanged         |
| Dst: Node B MAC | Dst: Node B | Dst: 4789    |            | from above)               |
+-----------------+-------------+--------------+------------+---------------------------+
```

VXLAN Network Identifier (VNI) membedakan antara jaringan overlay yang berbeda.

### Skenario komunikasi pod
<a name="_pod_communication_scenarios"></a>

 **Pod pada node hybrid yang sama** 

Ketika pod pada node hibrida yang sama berkomunikasi, biasanya tidak diperlukan enkapsulasi. CNI mengatur rute lokal yang mengarahkan lalu lintas antar pod melalui antarmuka virtual internal node:

```
Pod A -> veth0 -> node's bridge/routing table -> veth1 -> Pod B
```

Paket tidak pernah meninggalkan node dan tidak memerlukan enkapsulasi.

 **Pod pada node hibrida yang berbeda** 

Komunikasi antar pod pada node hybrid yang berbeda membutuhkan enkapsulasi:

```
Pod A -> CNI -> [VXLAN encapsulation] -> Node A network -> router or gateway -> Node B network -> [VXLAN decapsulation] -> CNI -> Pod B
```

Hal ini memungkinkan lalu lintas pod untuk melintasi infrastruktur jaringan fisik tanpa memerlukan jaringan fisik untuk memahami routing IP pod.

# Arus lalu lintas jaringan untuk node hibrida
<a name="hybrid-nodes-concepts-traffic-flows"></a>

Halaman ini merinci arus lalu lintas jaringan untuk EKS Hybrid Nodes dengan diagram yang menunjukkan jalur end-to-end jaringan untuk jenis lalu lintas yang berbeda.

Arus lalu lintas berikut tercakup:
+  [Node hibrida `kubelet` ke bidang kontrol EKS](#hybrid-nodes-concepts-traffic-flows-kubelet-to-cp) 
+  [Pesawat kontrol EKS ke node hybrid (`kubelet`server)](#hybrid-nodes-concepts-traffic-flows-cp-to-kubelet) 
+  [Pod berjalan pada node hibrid ke bidang kontrol EKS](#hybrid-nodes-concepts-traffic-flows-pods-to-cp) 
+  [Pesawat kontrol EKS ke pod yang berjalan pada node hybrid (webhooks)](#hybrid-nodes-concepts-traffic-flows-cp-to-pod) 
+  [Pod-to-Pod berjalan pada node hybrid](#hybrid-nodes-concepts-traffic-flows-pod-to-pod) 
+  [Pod pada node cloud ke pod pada node hibrid (lalu lintas timur-barat)](#hybrid-nodes-concepts-traffic-flows-east-west) 

## Node hibrida `kubelet` ke bidang kontrol EKS
<a name="hybrid-nodes-concepts-traffic-flows-kubelet-to-cp"></a>

![\[Kubelet simpul hibrida ke bidang kontrol EKS\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-kubelet-to-cp-public.png)


### Permintaan
<a name="_request"></a>

 **1. `kubelet` Memulai Permintaan** 

Ketika `kubelet` pada node hybrid perlu berkomunikasi dengan bidang kontrol EKS (misalnya, untuk melaporkan status node atau mendapatkan spesifikasi pod), ia menggunakan `kubeconfig` file yang disediakan selama pendaftaran node. Ini `kubeconfig` memiliki URL titik akhir server API (nama DNS Route53) daripada alamat IP langsung.

`kubelet`Melakukan pencarian DNS untuk titik akhir (misalnya,). `https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.gr7.us-west-2.eks.amazonaws.com` Dalam kluster akses publik, ini menyelesaikan ke alamat IP publik (katakanlah`54.239.118.52`) milik layanan EKS yang berjalan di. AWS`kubelet`Kemudian membuat permintaan HTTPS aman ke titik akhir ini. Paket awal terlihat seperti ini:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 10.80.0.2     | Src: 52390 (random) |                 |
| Dst: 54.239.118.52 | Dst: 443            |                 |
+--------------------+---------------------+-----------------+
```

 **2. Perutean Router Lokal** 

Karena IP tujuan adalah alamat IP publik dan bukan bagian dari jaringan lokal, paket ini akan `kubelet` dikirim ke gateway defaultnya (router lokal lokal). Router memeriksa IP tujuan dan menentukan itu adalah alamat IP publik.

Untuk lalu lintas publik, router biasanya meneruskan paket ke gateway internet atau router perbatasan yang menangani lalu lintas keluar ke internet. Ini dihilangkan dalam diagram dan akan tergantung pada bagaimana jaringan lokal Anda diatur. Paket ini melintasi infrastruktur jaringan lokal Anda dan akhirnya mencapai jaringan penyedia layanan internet Anda.

 **3. Pengiriman ke pesawat kontrol EKS** 

Paket ini berjalan melintasi internet publik dan jaringan transit sampai mencapai AWS jaringan. AWS jaringan merutekan paket ke titik akhir layanan EKS di wilayah yang sesuai. Ketika paket mencapai layanan EKS, itu diteruskan ke bidang kontrol EKS yang sebenarnya untuk cluster Anda.

Routing ini melalui internet publik berbeda dari jalur privat VPC yang akan kita lihat di arus lalu lintas lainnya. Perbedaan utamanya adalah ketika menggunakan mode akses publik, lalu lintas dari lokal `kubelet` (meskipun bukan dari pod) ke bidang kontrol EKS tidak melalui VPC Anda - ia menggunakan infrastruktur internet global sebagai gantinya.

### Respons
<a name="_response"></a>

Setelah bidang kontrol EKS memproses `kubelet` permintaan, ia mengirimkan respons kembali:

 **3. Pesawat kontrol EKS mengirimkan respons** 

Bidang kontrol EKS menciptakan paket respons. Paket ini memiliki IP publik sebagai sumber dan IP node hybrid sebagai tujuan:

```
+--------------------+---------------------+-----------------+
| IP Header          | TCP Header          | Payload         |
| Src: 54.239.118.52 | Src: 443            |                 |
| Dst: 10.80.0.2     | Dst: 52390          |                 |
+--------------------+---------------------+-----------------+
```

 **2. Perutean Internet** 

Paket respons berjalan kembali melalui internet, mengikuti jalur perutean yang ditentukan oleh penyedia layanan internet, hingga mencapai router tepi jaringan lokal Anda.

 **1. Pengiriman Lokal** 

Router lokal Anda menerima paket dan mengenali IP tujuan (`10.80.0.2`) sebagai milik jaringan lokal Anda. Ini meneruskan paket melalui infrastruktur jaringan lokal Anda sampai mencapai target node hybrid, di mana `kubelet` menerima dan memproses respons.

## Node hibrida `kube-proxy` ke bidang kontrol EKS
<a name="_hybrid_node_kube_proxy_to_eks_control_plane"></a>

Jika Anda mengaktifkan akses endpoint publik untuk cluster, lalu lintas kembali menggunakan internet publik. Lalu lintas ini berasal dari node hibrida ke bidang kontrol EKS dan mengikuti jalur yang sama dengan lalu lintas dari `kubelet` ke bidang kontrol EKS. `kube-proxy`

## Pesawat kontrol EKS ke node hybrid (`kubelet`server)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-kubelet"></a>

![\[Bidang kontrol EKS ke simpul hibrida\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-cp-to-kubelet.png)


### Permintaan
<a name="_request_2"></a>

 **1. Server API EKS Kubernetes memulai permintaan** 

Server API EKS Kubernetes mengambil alamat IP node (`10.80.0.2`) dari status objek node. Kemudian merutekan permintaan ini melalui ENI-nya di VPC, karena IP tujuan milik node jarak jauh yang dikonfigurasi CIDR (). `10.80.0.0/16` Paket awal terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 67493 (random) |                 |
| Dst: 10.80.0.2  | Dst: 10250          |                 |
+-----------------+---------------------+-----------------+
```

 **2. Pemrosesan jaringan VPC** 

Paket meninggalkan ENI dan memasuki lapisan jaringan VPC, di mana ia diarahkan ke gateway subnet untuk perutean lebih lanjut.

 **3. Pencarian tabel rute VPC** 

Tabel rute VPC untuk subnet yang berisi bidang kontrol EKS ENI memiliki rute tertentu (yang kedua dalam diagram) untuk simpul jarak jauh CIDR. Berdasarkan aturan routing ini, paket diarahkan ke gateway. VPC-to-onprem

 **4. Transit lintas batas** 

Gateway mentransfer paket melintasi batas cloud melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) ke jaringan lokal Anda.

 **5. Penerimaan jaringan lokal** 

Paket tiba di router lokal lokal Anda yang menangani lalu lintas untuk subnet tempat node hybrid Anda berada.

 **6. Pengiriman akhir** 

Router lokal mengidentifikasi bahwa alamat IP (`10.80.0.2`) tujuan milik jaringan yang terhubung langsung dan meneruskan paket langsung ke node hibrida target, di mana `kubelet` menerima dan memproses permintaan.

### Respons
<a name="_response_2"></a>

Setelah node hybrid `kubelet` memproses permintaan, ia mengirimkan kembali respons mengikuti jalur yang sama secara terbalik:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 10250          |                 |
| Dst: 10.0.0.132 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **6. `kubelet` Mengirim Respon** 

`kubelet`Pada node hybrid (`10.80.0.2`) membuat paket respons dengan IP sumber asli sebagai tujuan. Tujuan bukan milik jaringan lokal sehingga dikirim ke gateway default host, yang merupakan router lokal.

 **5. Perutean Router Lokal** 

Router menentukan bahwa tujuan IP (`10.0.0.132`) milik`10.0.0.0/16`, yang memiliki rute yang menunjuk ke gateway yang terhubung ke AWS.

 **4. Pengembalian Lintas Batas** 

Paket berjalan kembali melalui koneksi lokal ke VPC yang sama (seperti Direct Connect atau VPN), melintasi batas cloud dalam arah sebaliknya.

 **3. Perutean VPC** 

Ketika paket tiba di VPC, tabel rute mengidentifikasi bahwa IP tujuan milik CIDR VPC. Rute paket dalam VPC.

 **2. Pengiriman Jaringan VPC** 

Lapisan jaringan VPC meneruskan paket ke subnet dengan bidang kontrol EKS ENI (). `10.0.0.132`

 **1. Penerimaan ENI** 

Paket mencapai pesawat kontrol EKS ENI yang terpasang ke server API Kubernetes, menyelesaikan perjalanan pulang pergi.

## Pod berjalan pada node hibrid ke bidang kontrol EKS
<a name="hybrid-nodes-concepts-traffic-flows-pods-to-cp"></a>

![\[Pod berjalan pada node hibrid ke bidang kontrol EKS\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-pod-to-cp.png)


### Tanpa CNI NAT
<a name="_without_cni_nat"></a>

### Permintaan
<a name="_request_3"></a>

Pod umumnya berbicara dengan server API Kubernetes melalui layanan. `kubernetes` IP layanan adalah IP pertama dari CIDR layanan cluster. Konvensi ini memungkinkan pod yang perlu dijalankan sebelum CoreDNS tersedia untuk mencapai server API, misalnya, CNI. Permintaan meninggalkan pod dengan IP layanan sebagai tujuan. Misalnya, jika layanan CIDR adalah`172.16.0.0/16`, IP layanan akan`172.16.0.1`.

 **1. Pod Memulai Permintaan** 

Pod mengirimkan permintaan ke `kubernetes` layanan IP (`172.16.0.1`) pada port server API (443) dari port sumber acak. Paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Pengolahan CNI** 

CNI mendeteksi bahwa IP tujuan bukan milik pod CIDR mana pun yang dikelolanya. Karena **NAT keluar dinonaktifkan**, CNI meneruskan paket ke tumpukan jaringan host tanpa memodifikasinya.

 **3. Pemrosesan Jaringan Node** 

Paket memasuki tumpukan jaringan node di mana `netfilter` hook memicu `iptables` aturan yang ditetapkan oleh kube-proxy. Beberapa aturan berlaku dalam urutan sebagai berikut:

1. Paket pertama mengenai `KUBE-SERVICES` rantai, yang berisi aturan yang cocok dengan ClusterIP dan port setiap layanan.

1. Aturan pencocokan melompat ke `KUBE-SVC-XXX` rantai untuk `kubernetes` layanan (paket yang ditujukan untuk`172.16.0.1:443`), yang berisi aturan penyeimbangan beban.

1. Aturan penyeimbangan beban secara acak memilih salah satu `KUBE-SEP-XXX` rantai untuk bidang kontrol ENI IPs (`10.0.0.132`atau). `10.0.1.23`

1. `KUBE-SEP-XXX`Rantai yang dipilih memiliki aturan aktual yang mengubah IP tujuan dari IP layanan ke IP yang dipilih. Ini disebut Destination Network Address Translation (DNAT).

Setelah aturan ini diterapkan, dengan asumsi bahwa IP ENI bidang kontrol EKS yang dipilih adalah`10.0.0.132`, paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Node meneruskan paket ke gateway defaultnya karena IP tujuan tidak ada di jaringan lokal.

 **4. Perutean Router Lokal** 

Router lokal menentukan bahwa IP tujuan (`10.0.0.132`) milik VPC CIDR (`10.0.0.0/16`) dan meneruskannya ke gateway yang terhubung ke. AWS

 **5. Transit Lintas Batas** 

Paket berjalan melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) melintasi batas cloud ke VPC.

 **6. Pengiriman Jaringan VPC** 

Lapisan jaringan VPC merutekan paket ke subnet yang benar di mana bidang kontrol EKS ENI () `10.0.0.132` berada.

 **7. Penerimaan ENI** 

Paket mencapai bidang kontrol EKS ENI yang terpasang ke server API Kubernetes.

### Respons
<a name="_response_3"></a>

Setelah bidang kontrol EKS memproses permintaan, ia mengirimkan respons kembali ke pod:

 **7. Server API Mengirim Respons** 

Server API EKS Kubernetes membuat paket respons dengan IP sumber asli sebagai tujuan. Paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Karena IP tujuan milik pod jarak jauh yang dikonfigurasi CIDR (`10.85.0.0/16`), ia mengirimkannya melalui ENI di VPC dengan router subnet sebagai hop berikutnya.

 **6. Perutean VPC** 

Tabel rute VPC berisi entri untuk pod jarak jauh CIDR (`10.85.0.0/16`), mengarahkan lalu lintas ini ke gateway. VPC-to-onprem

 **5. Transit Lintas Batas** 

Gateway mentransfer paket melintasi batas cloud melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) ke jaringan lokal Anda.

 **4. Penerimaan Jaringan Lokal** 

Paket tiba di router lokal lokal Anda.

 **3. Pengiriman ke node** 

Tabel router memiliki entri untuk `10.85.1.0/24` dengan `10.80.0.2` sebagai hop berikutnya, mengirimkan paket ke node kami.

 **2. Pemrosesan Jaringan Node** 

Karena paket diproses oleh tumpukan jaringan node, `conntrack` (bagian dari`netfilter`) mencocokkan paket dengan koneksi yang awalnya dibuat oleh pod. Karena DNAT awalnya diterapkan, `conntrack` membalikkan DNAT dengan menulis ulang IP sumber dari IP ENI bidang kontrol EKS ke IP layanan: `kubernetes`

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Pengolahan CNI** 

CNI mengidentifikasi bahwa IP tujuan milik sebuah pod dalam jaringannya dan mengirimkan paket ke namespace jaringan pod yang benar.

Alur ini menunjukkan mengapa Remote Pod CIDRs harus dapat dirutekan dengan benar dari VPC sampai ke node tertentu yang menghosting setiap pod - seluruh jalur pengembalian bergantung pada perutean pod yang tepat di jaringan cloud dan IPs lokal.

### Dengan CNI NAT
<a name="_with_cni_nat"></a>

Aliran ini sangat mirip dengan yang *tanpa CNI NAT*, tetapi dengan satu perbedaan utama: CNI menerapkan sumber NAT (SNAT) ke paket sebelum mengirimnya ke tumpukan jaringan node. Ini mengubah IP sumber paket ke IP node, memungkinkan paket untuk dirutekan kembali ke node tanpa memerlukan konfigurasi routing tambahan.

### Permintaan
<a name="_request_4"></a>

 **1. Pod Memulai Permintaan** 

Pod mengirimkan permintaan ke IP `kubernetes` layanan (`172.16.0.1`) pada port server API EKS Kubernetes (443) dari port sumber acak. Paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

 **2. Pengolahan CNI** 

CNI mendeteksi bahwa IP tujuan bukan milik pod CIDR mana pun yang dikelolanya. Karena **NAT keluar diaktifkan**, CNI menerapkan SNAT ke paket, mengubah IP sumber ke IP node sebelum meneruskannya ke tumpukan jaringan node:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 172.16.0.1 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Catatan: CNI dan `iptables` ditampilkan dalam contoh sebagai blok terpisah untuk kejelasan, tetapi dalam praktiknya, ada kemungkinan beberapa CNIs penggunaan `iptables` untuk menerapkan NAT.

 **3. Pemrosesan Jaringan Node** 

Di sini `iptables` aturan yang ditetapkan oleh `kube-proxy` berperilaku sama seperti pada contoh sebelumnya, load balancing paket ke salah satu bidang kontrol EKS. ENIs Paket sekarang terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.80.0.2  | Src: 67493 (random) |                 |
| Dst: 10.0.0.132 | Dst: 443            |                 |
+-----------------+---------------------+-----------------+
```

Node meneruskan paket ke gateway defaultnya karena IP tujuan tidak ada di jaringan lokal.

 **4. Perutean Router Lokal** 

Router lokal menentukan bahwa IP tujuan (`10.0.0.132`) milik VPC CIDR (`10.0.0.0/16`) dan meneruskannya ke gateway yang terhubung ke. AWS

 **5. Transit Lintas Batas** 

Paket berjalan melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) melintasi batas cloud ke VPC.

 **6. Pengiriman Jaringan VPC** 

Lapisan jaringan VPC merutekan paket ke subnet yang benar di mana bidang kontrol EKS ENI () `10.0.0.132` berada.

 **7. Penerimaan ENI** 

Paket mencapai bidang kontrol EKS ENI yang terpasang ke server API Kubernetes.

### Respons
<a name="_response_4"></a>

Setelah bidang kontrol EKS memproses permintaan, ia mengirimkan respons kembali ke pod:

 **7. Server API Mengirim Respons** 

Server API EKS Kubernetes membuat paket respons dengan IP sumber asli sebagai tujuan. Paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

Karena IP tujuan milik node jarak jauh yang dikonfigurasi CIDR (`10.80.0.0/16`), ia mengirimkannya melalui ENI-nya di VPC dengan router subnet sebagai hop berikutnya.

 **6. Perutean VPC** 

Tabel rute VPC berisi entri untuk node jarak jauh CIDR (`10.80.0.0/16`), mengarahkan lalu lintas ini ke gateway. VPC-to-onprem

 **5. Transit Lintas Batas** 

Gateway mentransfer paket melintasi batas cloud melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) ke jaringan lokal Anda.

 **4. Penerimaan Jaringan Lokal** 

Paket tiba di router lokal lokal Anda.

 **3. Pengiriman ke node** 

Router lokal mengidentifikasi bahwa alamat IP (`10.80.0.2`) tujuan milik jaringan yang terhubung langsung dan meneruskan paket langsung ke node hibrida target.

 **2. Pemrosesan Jaringan Node** 

Karena paket diproses oleh tumpukan jaringan node, `conntrack` (bagian dari`netfilter`) mencocokkan paket dengan koneksi yang awalnya dibuat oleh pod dan karena DNAT awalnya diterapkan, itu membalikkan ini dengan menulis ulang IP sumber dari IP ENI bidang kontrol EKS ke IP layanan: `kubernetes`

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.80.0.2  | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

 **1. Pengolahan CNI** 

CNI mengidentifikasi paket ini milik koneksi di mana sebelumnya telah menerapkan SNAT. Ini membalikkan SNAT, mengubah IP tujuan kembali ke IP pod:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 172.16.0.1 | Src: 443            |                 |
| Dst: 10.85.1.56 | Dst: 67493          |                 |
+-----------------+---------------------+-----------------+
```

CNI mendeteksi IP tujuan milik sebuah pod dalam jaringannya dan mengirimkan paket ke namespace jaringan pod yang benar.

Alur ini menampilkan bagaimana CNI NAT-ing dapat menyederhanakan konfigurasi dengan memungkinkan paket dirutekan kembali ke node tanpa memerlukan perutean tambahan untuk pod. CIDRs

## Pesawat kontrol EKS ke pod yang berjalan pada node hybrid (webhooks)
<a name="hybrid-nodes-concepts-traffic-flows-cp-to-pod"></a>

![\[Pesawat kontrol EKS ke pod yang berjalan pada node hibrid\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-cp-to-pod.png)


Pola lalu lintas ini paling sering terlihat dengan webhooks, di mana bidang kontrol EKS perlu langsung memulai koneksi ke server webhook yang berjalan di pod pada node hybrid. Contohnya termasuk memvalidasi dan memutasi webhook masuk, yang dipanggil oleh server API selama validasi sumber daya atau proses mutasi.

### Permintaan
<a name="_request_5"></a>

 **1. Server API EKS Kubernetes memulai permintaan** 

Ketika webhook dikonfigurasi di cluster dan operasi API yang relevan memicunya, server API EKS Kubernetes perlu membuat koneksi langsung ke pod server webhook. Server API pertama-tama mencari alamat IP pod dari sumber daya Service atau Endpoint yang terkait dengan webhook.

Dengan asumsi pod webhook berjalan pada node hybrid dengan IP`10.85.1.23`, server API EKS Kubernetes membuat permintaan HTTPS ke endpoint webhook. Paket awal dikirim melalui bidang kontrol EKS ENI di VPC Anda karena `10.85.1.23` IP tujuan milik pod jarak jauh yang dikonfigurasi `10.85.0.0/16` CIDR (). Paketnya terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.132 | Src: 41892 (random) |                 |
| Dst: 10.85.1.23 | Dst: 8443           |                 |
+-----------------+---------------------+-----------------+
```

 **2. Pemrosesan Jaringan VPC** 

Paket meninggalkan bidang kontrol EKS ENI dan memasuki lapisan jaringan VPC dengan router subnet sebagai lompatan berikutnya.

 **3. Pencarian Tabel Rute VPC** 

Tabel rute VPC untuk subnet yang berisi bidang kontrol EKS ENI berisi rute khusus untuk pod jarak jauh CIDR (). `10.85.0.0/16` Aturan routing ini mengarahkan paket ke VPC-to-onprem gateway (misalnya, Virtual Private Gateway untuk Direct Connect atau koneksi VPN):

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

 **4. Transit Lintas Batas** 

Gateway mentransfer paket melintasi batas cloud melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) ke jaringan lokal Anda. Paket ini mempertahankan sumber asli dan alamat IP tujuan saat melintasi koneksi ini.

 **5. Penerimaan Jaringan Lokal** 

Paket tiba di router lokal lokal Anda. Router berkonsultasi dengan tabel peruteannya untuk menentukan cara mencapai alamat 10.85.1.23. Agar ini berfungsi, jaringan lokal Anda harus memiliki rute untuk pod CIDRs yang mengarahkan lalu lintas ke node hibrid yang sesuai.

Dalam hal ini, tabel rute router berisi entri yang menunjukkan bahwa `10.85.1.0/24` subnet dapat dijangkau melalui node hybrid dengan IP: `10.80.0.2`

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **6. Pengiriman ke node** 

Berdasarkan entri tabel routing, router meneruskan paket ke node hybrid (). `10.80.0.2` Ketika paket tiba di node, itu terlihat sama seperti ketika server EKS Kubernetes API mengirimnya, dengan IP tujuan masih menjadi IP pod.

 **7. Pengolahan CNI** 

Tumpukan jaringan node menerima paket dan, melihat bahwa IP tujuan bukan IP node itu sendiri, meneruskannya ke CNI untuk diproses. CNI mengidentifikasi bahwa IP tujuan milik pod yang berjalan secara lokal pada node ini dan meneruskan paket ke pod yang benar melalui antarmuka virtual yang sesuai:

```
Original packet -> node routing -> CNI -> Pod's network namespace
```

Server webhook di pod menerima permintaan dan memprosesnya.

### Respons
<a name="_response_5"></a>

Setelah pod webhook memproses permintaan, ia mengirimkan kembali respons mengikuti jalur yang sama secara terbalik:

 **7. Pod Mengirim Respons** 

Pod webhook membuat paket respons dengan IP sendiri sebagai sumber dan pemohon asli (ENI bidang kontrol EKS) sebagai tujuan:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.23 | Src: 8443           |                 |
| Dst: 10.0.0.132 | Dst: 41892          |                 |
+-----------------+---------------------+-----------------+
```

CNI mengidentifikasi bahwa paket ini masuk ke jaringan eksternal (bukan pod lokal) dan meneruskan paket ke tumpukan jaringan node dengan IP sumber asli yang dipertahankan.

 **6. Pemrosesan Jaringan Node** 

Node menentukan bahwa IP tujuan (`10.0.0.132`) tidak berada di jaringan lokal dan meneruskan paket ke gateway default (router lokal).

 **5. Perutean Router Lokal** 

Router lokal berkonsultasi dengan tabel routing dan menentukan bahwa IP tujuan (`10.0.0.132`) milik VPC CIDR (). `10.0.0.0/16` Ini meneruskan paket ke gateway yang terhubung ke. AWS

 **4. Transit Lintas Batas** 

Paket berjalan kembali melalui koneksi lokal ke VPC yang sama, melintasi batas cloud dalam arah sebaliknya.

 **3. Perutean VPC** 

Ketika paket tiba di VPC, tabel rute mengidentifikasi bahwa IP tujuan milik subnet dalam VPC. Paket dirutekan sesuai di dalam VPC.

 **2. dan 1. EKS pesawat kontrol ENI Penerimaan** 

Paket mencapai ENI yang terpasang ke server API EKS Kubernetes, menyelesaikan perjalanan pulang pergi. Server API menerima respons webhook dan terus memproses permintaan API asli berdasarkan respons ini.

Arus lalu lintas ini menunjukkan mengapa pod jarak jauh CIDRs harus dikonfigurasi dan dirutekan dengan benar:
+ VPC harus memiliki rute untuk pod jarak jauh yang CIDRs mengarah ke gateway lokal
+ Jaringan lokal Anda harus memiliki rute untuk pod CIDRs yang mengarahkan lalu lintas ke node tertentu yang menghosting pod tersebut
+ Tanpa konfigurasi routing ini, webhook dan layanan serupa lainnya yang berjalan di pod pada node hybrid tidak akan dapat dijangkau dari bidang kontrol EKS.

## Pod-to-Pod berjalan pada node hybrid
<a name="hybrid-nodes-concepts-traffic-flows-pod-to-pod"></a>

![\[Pod-to Pod berjalan pada node hybrid\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-pod-to-pod.png)


Bagian ini menjelaskan bagaimana pod yang berjalan pada node hybrid yang berbeda berkomunikasi satu sama lain. Contoh ini mengasumsikan CNI Anda menggunakan VXLAN untuk enkapsulasi, yang umum untuk seperti Cilium atau Calico. CNIs Proses keseluruhan serupa untuk protokol enkapsulasi lainnya seperti Geneve atau. IP-in-IP

### Permintaan
<a name="_request_6"></a>

 **1. Pod A Memulai Komunikasi** 

Pod A (`10.85.1.56`) pada Node 1 ingin mengirim lalu lintas ke Pod B (`10.85.2.67`) di Node 2. Paket awal terlihat seperti ini:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

 **2. CNI Mencegat dan Memproses Paket** 

Ketika paket Pod A meninggalkan namespace jaringannya, CNI mencegatnya. CNI berkonsultasi dengan tabel routing dan menentukan: - Destination IP (`10.85.2.67`) milik pod CIDR - IP ini bukan pada node lokal tetapi milik Node 2 (`10.80.0.3`) - Paket perlu dienkapsulasi dengan VXLAN.

Keputusan untuk merangkum sangat penting karena jaringan fisik yang mendasarinya tidak tahu cara merutekan pod CIDRs secara langsung - ia hanya tahu cara merutekan lalu lintas antar node. IPs

CNI merangkum seluruh paket asli di dalam bingkai VXLAN. Ini secara efektif menciptakan “paket dalam paket” dengan header baru:

```
+-----------------+----------------+--------------+------------+---------------------------+
| Outer Ethernet  | Outer IP       | Outer UDP    | VXLAN      | Original Pod-to-Pod       |
| Src: Node1 MAC  | Src: 10.80.0.2 | Src: Random  | VNI: 42    | Packet (unchanged         |
| Dst: Router MAC | Dst: 10.80.0.3 | Dst: 8472    |            | from above)               |
+-----------------+----------------+--------------+------------+---------------------------+
```

Poin-poin penting tentang enkapsulasi ini: - Paket luar dialamatkan dari Node 1 (`10.80.0.2`) ke Node 2 (`10.80.0.3`) - Port UDP `8472` adalah port VXLAN yang digunakan Cilium secara default - VXLAN Network Identifier (VNI) mengidentifikasi jaringan overlay mana yang dimiliki paket ini - Seluruh paket asli (dengan IP Pod A sebagai sumber dan IP Pod B sebagai tujuan) dipertahankan utuh di dalam

Paket enkapsulasi sekarang memasuki tumpukan jaringan reguler Node 1 dan diproses dengan cara yang sama seperti paket lainnya:

1.  **Pemrosesan Jaringan** Node: Tumpukan jaringan Node 1 merutekan paket berdasarkan tujuannya () `10.80.0.3`

1.  **Pengiriman Jaringan Lokal**:
   + Jika kedua node berada pada jaringan Layer 2 yang sama, paket dikirim langsung ke Node 2
   + Jika mereka berada di subnet yang berbeda, paket diteruskan ke router lokal terlebih dahulu

1.  **Penanganan Router**: Router meneruskan paket berdasarkan tabel routingnya, mengirimkannya ke Node 2

 **3. Menerima Pemrosesan Node** 

Ketika paket yang dienkapsulasi tiba di Node 2 (): `10.80.0.3`

1. Tumpukan jaringan node menerimanya dan mengidentifikasinya sebagai paket VXLAN (port UDP) `4789`

1. Paket diteruskan ke antarmuka VXLAN CNI untuk diproses

 **4. Dekapsulasi VXLAN** 

CNI pada Node 2 memproses paket VXLAN:

1. Ini menghapus header luar (Ethernet, IP, UDP, dan VXLAN)

1. Ini mengekstrak paket batin asli

1. Paket sekarang kembali ke bentuk aslinya:

```
+------------------+-----------------+-------------+-----------------+
| Ethernet Header  | IP Header       | TCP/UDP     | Payload         |
| Src: Pod A MAC   | Src: 10.85.1.56 | Src: 43721  |                 |
| Dst: Gateway MAC | Dst: 10.85.2.67 | Dst: 8080   |                 |
+------------------+-----------------+-------------+-----------------+
```

CNI pada Node 2 memeriksa IP tujuan (`10.85.2.67`) dan:

1. Mengidentifikasi bahwa IP ini milik pod lokal

1. Rutekan paket melalui antarmuka virtual yang sesuai

1. Mengirimkan paket ke namespace jaringan Pod B

### Respons
<a name="_response_6"></a>

Ketika Pod B merespons Pod A, seluruh proses terjadi secara terbalik:

1. Pod B mengirimkan paket ke Pod A () `10.85.1.56`

1. CNI Node 2 merangkum dengan VXLAN, mengatur tujuan ke Node 1 () `10.80.0.2`

1. Paket yang dienkapsulasi dikirim ke Node 1

1. CNI Node 1 mendekapsulasinya dan memberikan respons asli ke Pod A

## Pod pada node cloud ke pod pada node hibrid (lalu lintas timur-barat)
<a name="hybrid-nodes-concepts-traffic-flows-east-west"></a>

![\[Pod pada node cloud ke pod pada node hibrid\]](http://docs.aws.amazon.com/id_id/eks/latest/userguide/images/hybrid-nodes-east-west.png)


### Permintaan
<a name="_request_7"></a>

 **1. Pod A Memulai Komunikasi** 

Pod A (`10.0.0.56`) pada EC2 Node ingin mengirim lalu lintas ke Pod B (`10.85.1.56`) pada Node Hybrid. Paket awal terlihat seperti ini:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.0.0.56  | Src: 52390 (random) |                 |
| Dst: 10.85.1.56 | Dst: 8080           |                 |
+-----------------+---------------------+-----------------+
```

Dengan VPC CNI, Pod A memiliki IP dari VPC CIDR dan langsung dilampirkan ke ENI pada instance. EC2 Namespace jaringan pod terhubung ke jaringan VPC, sehingga paket masuk ke infrastruktur routing VPC secara langsung.

 **2. Perutean VPC** 

Tabel rute VPC berisi rute khusus untuk Remote Pod CIDR (`10.85.0.0/16`), mengarahkan lalu lintas ini ke gateway: VPC-to-onprem

```
Destination     Target
10.0.0.0/16     local
10.85.0.0/16    vgw-id (VPC-to-onprem gateway)
```

Berdasarkan aturan routing ini, paket diarahkan ke gateway yang terhubung ke jaringan lokal Anda.

 **3. Transit Lintas Batas** 

Gateway mentransfer paket melintasi batas cloud melalui koneksi yang Anda buat (seperti Direct Connect atau VPN) ke jaringan lokal Anda. Paket ini mempertahankan sumber asli dan alamat IP tujuan selama transit ini.

 **4. Penerimaan Jaringan Lokal** 

Paket tiba di router lokal lokal Anda. Router berkonsultasi dengan tabel peruteannya untuk menentukan lompatan berikutnya untuk mencapai alamat 10.85.1.56. Router lokal Anda harus memiliki rute untuk pod CIDRs yang mengarahkan lalu lintas ke node hybrid yang sesuai.

Tabel router memiliki entri yang menunjukkan bahwa `10.85.1.0/24` subnet dapat dijangkau melalui node hybrid dengan IP: `10.80.0.2`

```
Destination     Next Hop
10.85.1.0/24    10.80.0.2
```

 **5. Pemrosesan Jaringan Node** 

Router meneruskan paket ke node hybrid ()`10.80.0.2`. Ketika paket tiba di node, ia masih memiliki IP Pod A sebagai sumber dan IP Pod B sebagai tujuan.

 **6. Pengolahan CNI** 

Tumpukan jaringan node menerima paket dan, melihat bahwa IP tujuan bukan miliknya sendiri, meneruskannya ke CNI untuk diproses. CNI mengidentifikasi bahwa IP tujuan milik pod yang berjalan secara lokal pada node ini dan meneruskan paket ke pod yang benar melalui antarmuka virtual yang sesuai:

```
Original packet -> node routing -> CNI -> Pod B's network namespace
```

Pod B menerima paket dan memprosesnya sesuai kebutuhan.

### Respons
<a name="_response_7"></a>

 **6. Pod B Mengirimkan Respon** 

Pod B membuat paket respon dengan IP sendiri sebagai sumber dan IP Pod A sebagai tujuan:

```
+-----------------+---------------------+-----------------+
| IP Header       | TCP Header          | Payload         |
| Src: 10.85.1.56 | Src: 8080           |                 |
| Dst: 10.0.0.56  | Dst: 52390          |                 |
+-----------------+---------------------+-----------------+
```

CNI mengidentifikasi bahwa paket ini ditujukan untuk jaringan eksternal dan meneruskannya ke tumpukan jaringan node.

 **5. Pemrosesan Jaringan Node** 

Node menentukan bahwa IP tujuan (`10.0.0.56`) bukan milik jaringan lokal dan meneruskan paket ke gateway defaultnya (router lokal).

 **4. Perutean Router Lokal** 

Router lokal berkonsultasi dengan tabel routing dan menentukan bahwa IP tujuan (`10.0.0.56`) milik VPC CIDR (). `10.0.0.0/16` Ini meneruskan paket ke gateway yang terhubung ke. AWS

 **3. Transit Lintas Batas** 

Paket berjalan kembali melalui koneksi lokal ke VPC yang sama, melintasi batas cloud dalam arah sebaliknya.

 **2. Perutean VPC** 

Ketika paket tiba di VPC, sistem routing mengidentifikasi bahwa IP tujuan milik subnet dalam VPC. Paket dirutekan melalui jaringan VPC menuju instance hosting Pod A. EC2 

 **1. Pod A Menerima Tanggapan** 

Paket tiba di EC2 instance dan dikirim langsung ke Pod A melalui ENI yang terpasang. Karena VPC CNI tidak menggunakan jaringan overlay untuk pod di VPC, tidak diperlukan dekapsulasi tambahan - paket tiba dengan header aslinya utuh.

Arus lalu lintas timur-barat ini menunjukkan mengapa pod jarak jauh CIDRs harus dikonfigurasi dengan benar dan dapat dirutekan dari kedua arah:
+ VPC harus memiliki rute untuk pod jarak jauh yang CIDRs mengarah ke gateway lokal
+ Jaringan lokal Anda harus memiliki rute untuk pod CIDRs yang mengarahkan lalu lintas ke node tertentu yang menghosting pod tersebut.

# `nodeadm`Referensi node hibrida
<a name="hybrid-nodes-nodeadm"></a>

Amazon EKS Hybrid Nodes CLI (`nodeadm`) menyederhanakan instalasi, konfigurasi, pendaftaran, dan penghapusan instalasi komponen node hybrid. Anda dapat menyertakan `nodeadm` dalam gambar sistem operasi Anda untuk mengotomatiskan bootstrap node hybrid, lihat [Siapkan sistem operasi untuk node hybrid](hybrid-nodes-os.md) untuk informasi lebih lanjut.

`nodeadm`Versi untuk node hybrid berbeda dari `nodeadm` versi yang digunakan untuk bootstrap instance Amazon sebagai node di EC2 kluster Amazon EKS. Ikuti dokumentasi dan referensi untuk `nodeadm` versi yang sesuai. Halaman dokumentasi ini untuk `nodeadm` versi node hybrid.

Kode sumber untuk node hybrid diterbitkan di `nodeadm` repositori https://github.com/aws/ eks-hybridGitHub .

**penting**  
Anda harus menjalankan `nodeadm` dengan pengguna yang memiliki root/sudo hak istimewa.

## Unduh `nodeadm`
<a name="_download_nodeadm"></a>

Versi node hibrida di-host di Amazon S3 yang digawangi oleh Amazon. `nodeadm` CloudFront Untuk menginstal `nodeadm` di setiap host lokal, Anda dapat menjalankan perintah berikut dari host lokal Anda.

 **Untuk host x86\$164** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'
```

 **Untuk host ARM** 

```
curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'
```

Tambahkan izin file yang dapat dieksekusi ke biner yang diunduh di setiap host.

```
chmod +x nodeadm
```

## `nodeadm install`
<a name="_nodeadm_install"></a>

`nodeadm install`Perintah ini digunakan untuk menginstal artefak dan dependensi yang diperlukan untuk menjalankan dan menggabungkan node hybrid ke cluster Amazon EKS. `nodeadm install`Perintah dapat dijalankan secara individual pada setiap node hybrid atau dapat dijalankan selama pipeline build image untuk menginstal dependensi node hybrid di image sistem operasi.

 **Penggunaan** 

```
nodeadm install [KUBERNETES_VERSION] [flags]
```

 **Argumen Posisi** 

(Wajib) `KUBERNETES_VERSION` Versi mayor.minor dari EKS Kubernetes untuk diinstal, misalnya `1.32` 

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-p`,  `--credential-provider`   |  BETUL  |  Penyedia kredensyal untuk menginstal. Nilai yang didukung adalah `iam-ra` dan `ssm`. Untuk informasi selengkapnya, lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md).  | 
|   `-s`,  `--containerd-source`   |  SALAH  |  Sumber untuk`containerd`. `nodeadm`mendukung penginstalan `containerd` dari distro OS, paket Docker, dan melewatkan `containerd` instalasi.  **Nilai-nilai**   `distro`- Ini adalah nilai default. `nodeadm`akan menginstal `containerd` paket terbaru yang didistribusikan oleh OS node yang kompatibel dengan versi EKS Kubernetes. `distro`bukan nilai yang didukung untuk sistem operasi Red Hat Enterprise Linux (RHEL).  `docker`- `nodeadm` akan menginstal `containerd` paket terbaru yang dibangun dan didistribusikan oleh Docker yang kompatibel dengan versi EKS Kubernetes. `docker`bukan nilai yang didukung untuk Amazon Linux 2023.  `none`- tidak `nodeadm` akan menginstal `containerd` paket. Anda harus menginstal secara manual `containerd` sebelum menjalankan`nodeadm init`.  | 
|   `-r`,  `--region`   |  SALAH  |  Menentukan AWS Wilayah untuk men-download artefak seperti Agen SSM. Default ke `us-west-2`.  | 
|   `-t`,  `--timeout`   |  SALAH  |  Durasi perintah penginstalan maksimum. Input mengikuti format durasi. Sebagai contoh, `1h23m`. Batas waktu unduhan default untuk perintah instal diatur ke 20 menit.  | 
|   `-h`, `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 

 **Contoh** 

Instal versi Kubernetes dengan AWS Systems `1.32` Manager (SSM) sebagai penyedia kredensialnya

```
nodeadm install 1.32 --credential-provider ssm
```

Instal versi Kubernetes dengan AWS Systems `1.32` Manager (SSM) sebagai penyedia kredensialnya, Docker sebagai sumber containerd, dengan waktu tunggu unduhan 20 menit.

```
nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m
```

Instal versi Kubernetes `1.32` dengan AWS IAM Roles Anywhere sebagai penyedia kredensi

```
nodeadm install 1.32 --credential-provider iam-ra
```

## `nodeadm config check`
<a name="_nodeadm_config_check"></a>

`nodeadm config check`Perintah memeriksa konfigurasi node yang disediakan untuk kesalahan. Perintah ini dapat digunakan untuk memverifikasi dan memvalidasi kebenaran file konfigurasi node hybrid.

 **Penggunaan** 

```
nodeadm config check [flags]
```

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  BETUL  |  Sumber konfigurasi nodeadm. Untuk node hybrid input harus mengikuti URI dengan skema file.  | 
|   `-h`, `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 

 **Contoh** 

```
nodeadm config check -c file://nodeConfig.yaml
```

## `nodeadm init`
<a name="_nodeadm_init"></a>

`nodeadm init`Perintah memulai dan menghubungkan node hybrid dengan cluster Amazon EKS yang dikonfigurasi. Lihat [Node Config untuk aktivasi hybrid SSM](#hybrid-nodes-node-config-ssm) atau [Konfigurasi Node untuk Peran IAM Di Mana Saja](#hybrid-nodes-node-config-iamra) untuk detail tentang cara mengkonfigurasi `nodeConfig.yaml` file.

 **Penggunaan** 

```
nodeadm init [flags]
```

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  BETUL  |  Sumber `nodeadm` konfigurasi. Untuk node hybrid input harus mengikuti URI dengan skema file.  | 
|   `-s`,  `--skip`   |  SALAH  |  Fase yang `init` harus dilewati. Tidak disarankan untuk melewatkan salah satu fase kecuali itu membantu memperbaiki masalah.  **Nilai-nilai**   `install-validation`melewatkan memeriksa apakah perintah install sebelumnya berhasil berjalan.  `cni-validation`melewatkan memeriksa apakah port VXLAN Cilium atau Calico CNI dibuka jika firewall diaktifkan pada node  `node-ip-validation`melewatkan memeriksa apakah IP node termasuk dalam CIDR di jaringan node jarak jauh  | 
|   `-h`, `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 

 **Contoh** 

```
nodeadm init -c file://nodeConfig.yaml
```

## `nodeadm upgrade`
<a name="_nodeadm_upgrade"></a>

`nodeadm upgrade`Perintah memutakhirkan semua artefak yang diinstal ke versi terbaru dan bootstrap node untuk mengonfigurasi artefak yang ditingkatkan dan bergabung dengan cluster EKS. AWS Upgrade adalah perintah yang mengganggu untuk beban kerja yang berjalan pada node. Harap pindahkan beban kerja Anda ke node lain sebelum menjalankan upgrade.

 **Penggunaan** 

```
nodeadm upgrade [KUBERNETES_VERSION] [flags]
```

 **Argumen Posisi** 

(Wajib) `KUBERNETES_VERSION` Versi mayor.minor dari EKS Kubernetes untuk diinstal, misalnya `1.32` 

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-c`,  `--config-source`   |  BETUL  |  Sumber `nodeadm` konfigurasi. Untuk node hybrid input harus mengikuti URI dengan skema file.  | 
|   `-t`,  `--timeout`   |  SALAH  |  Batas waktu untuk mengunduh artefak. Input mengikuti format durasi. Misalnya 1h23m. Batas waktu unduhan default untuk perintah upgrade diatur ke 10 menit.  | 
|   `-s`,  `--skip`   |  SALAH  |  Fase upgrade yang akan dilewati. Tidak disarankan untuk melewati fase apa pun kecuali itu membantu memperbaiki masalah.  **Nilai-nilai**   `pod-validation`melewatkan pemeriksaan apakah semua pod no berjalan pada node, kecuali set daemon dan pod statis.  `node-validation`melewatkan memeriksa apakah simpul telah ditutup.  `init-validation`melewatkan memeriksa apakah node telah berhasil diinisialisasi sebelum menjalankan upgrade.  `containerd-major-version-upgrade`mencegah peningkatan versi utama containerd selama upgrade node.  | 
|   `-h`, `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 

 **Contoh** 

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml
```

```
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m
```

## `nodeadm uninstall`
<a name="_nodeadm_uninstall"></a>

`nodeadm uninstall`Perintah berhenti dan menghapus `nodeadm` instalasi artefak selama`nodeadm install`, termasuk kubelet dan containerd. Catatan, perintah uninstall tidak menguras atau menghapus node hybrid Anda dari cluster Anda. Anda harus menjalankan operasi drain dan menghapus secara terpisah, lihat [Hapus node hybrid](hybrid-nodes-remove.md) untuk informasi lebih lanjut. Secara default, tidak `nodeadm uninstall` akan melanjutkan jika ada pod yang tersisa di node. Demikian pula, `nodeadm uninstall` tidak menghapus dependensi atau dependensi CNI dari add-on Kubernetes lain yang Anda jalankan di klaster Anda. Untuk menghapus instalasi CNI sepenuhnya dari host Anda, lihat instruksi di[Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md). Jika Anda menggunakan aktivasi hibrida AWS SSM sebagai penyedia kredensi lokal, `nodeadm uninstall` perintah tersebut membatalkan pendaftaran host Anda sebagai instans yang dikelola SSM. AWS 

 **Penggunaan** 

```
nodeadm uninstall [flags]
```

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-s`,  `--skip`   |  SALAH  |  Fase uninstall yang akan dilewati. Tidak disarankan untuk melewatkan salah satu fase kecuali itu membantu memperbaiki masalah.  **Nilai-nilai**   `pod-validation`melewatkan pemeriksaan apakah semua pod no berjalan pada node, kecuali set daemon dan pod statis.  `node-validation`melewatkan memeriksa apakah simpul telah ditutup.  `init-validation`melewatkan memeriksa apakah node telah berhasil diinisialisasi sebelum menjalankan uninstall.  | 
|   `-h`,  `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 
|   `-f`,  `--force`   |  SALAH  |  Hapus paksa direktori tambahan yang mungkin berisi file yang tersisa dari komponen Kubernetes dan CNI.  **PERINGATAN**  Ini akan menghapus semua konten di direktori Kubernetes dan CNI default (`/var/lib/cni`,, dll). `/etc/cni/net.d` Jangan gunakan bendera ini jika Anda menyimpan data Anda sendiri di lokasi ini. Mulai dari nodeadm`v1.0.9`, `./nodeadm uninstall --skip node-validation,pod-validation --force` perintah tidak lagi menghapus direktori. `/var/lib/kubelet` Ini karena mungkin berisi volume Pod dan direktori volume-subpath yang terkadang menyertakan sistem file node yang dipasang.  **Kiat penanganan yang aman**  - Menghapus jalur yang dipasang dapat menyebabkan penghapusan tidak disengaja dari sistem file node yang dipasang yang sebenarnya. Sebelum menghapus `/var/lib/kubelet` direktori secara manual, periksa dengan cermat semua mount aktif dan lepaskan volume dengan aman untuk menghindari kehilangan data.  | 

 **Contoh** 

```
nodeadm uninstall
```

```
nodeadm uninstall --skip node-validation,pod-validation
```

## `nodeadm debug`
<a name="_nodeadm_debug"></a>

`nodeadm debug`Perintah ini dapat digunakan untuk memecahkan masalah node hybrid yang tidak sehat atau salah konfigurasi. Ini memvalidasi persyaratan berikut ada di tempat.
+ Node memiliki akses jaringan ke yang diperlukan AWS APIs untuk mendapatkan kredensil,
+ Node ini bisa mendapatkan AWS kredensil untuk peran IAM Hybrid Nodes yang dikonfigurasi,
+ Node memiliki akses jaringan ke titik akhir API EKS Kubernetes dan validitas sertifikat endpoint API EKS Kubernetes,
+ Node dapat mengautentikasi dengan cluster EKS, identitasnya di cluster valid, dan bahwa node memiliki akses ke cluster EKS melalui VPC yang dikonfigurasi untuk cluster EKS.

Jika kesalahan ditemukan, output perintah menyarankan langkah-langkah pemecahan masalah. Langkah-langkah validasi tertentu menunjukkan proses anak. Jika ini gagal, output ditampilkan di bagian stderr di bawah kesalahan validasi.

 **Penggunaan** 

```
nodeadm debug [flags]
```

 **Bendera** 


| Nama | Diperlukan | Deskripsi | 
| --- | --- | --- | 
|   `-c`, `--config-source`   |  BETUL  |  Sumber `nodeadm` konfigurasi. Untuk node hybrid input harus mengikuti URI dengan skema file.  | 
|   `--no-color`   |  SALAH  |  Menonaktifkan output warna. Berguna untuk otomatisasi.  | 
|   `-h`, `--help`   |  SALAH  |  Menampilkan pesan bantuan dengan parameter tanda, subperintah, dan nilai posisi yang tersedia.  | 

 **Contoh** 

```
nodeadm debug -c file://nodeConfig.yaml
```

## Lokasi file Nodeadm
<a name="_nodeadm_file_locations"></a>

### instal nodeadm
<a name="_nodeadm_install_2"></a>

Saat berjalan`nodeadm install`, file dan lokasi file berikut dikonfigurasi.


| Artifact | Jalan | 
| --- | --- | 
|  Peran IAM Di Mana Saja CLI  |  /usr/local/bin/aws\$1penandatangan\$1pembantu  | 
|  Biner Kubelet  |  /usr/bin/kubelet  | 
|  Biner Kubectl  |  usr/local/bin/kubectl  | 
|  Penyedia Kredensyal ECR  |  /etc/eks/image-credential-provider/ecr-kredensial-penyedia  | 
|   AWS Autentikator IAM  |  /usr/local/bin/aws-iam-autentikator  | 
|  CLI Pengaturan SSM  |  /opt/ssm/ssm-setup-cli  | 
|  SSM Agent  |  Di Ubuntu -/snap/amazon-ssm-agent/current/amazon-ssm-agent Pada RHEL & AL2 023 -/-ssm-agent usr/bin/amazon  | 
|  Kontainer  |  Di Ubuntu & AL2 023 -/usr/bin/containerd Pada RHEL - /bin/containerd  | 
|  Iptables  |  Di Ubuntu & AL2 023 -/usr/sbin/iptables Pada RHEL - /sbin/iptables  | 
|  Plugin CNI  |  /opt/cni/bin  | 
|  pelacak artefak terpasang  |  /opt/nodeadm/tracker  | 

### nodeadm init
<a name="_nodeadm_init_2"></a>

Saat berjalan`nodeadm init`, file dan lokasi file berikut dikonfigurasi.


| Nama | Jalan | 
| --- | --- | 
|  Kubelet kubeconfig  |  /var/lib/kubelet/kubeconfig  | 
|  Konfigurasi Kubelet  |  /etc/kubernetes/kubelet/config.json  | 
|  Satuan sistem Kubelet  |  /etc/systemd/system/kubelet.layanan  | 
|  Konfigurasi penyedia kredensyal gambar  |  /etc/eks/image-credential-provider/config.json  | 
|  Berkas env Kubelet  |  /etc/eks/kubelet/environment  | 
|  Sertifikat Kubelet  |  /etc/kubernetes/pki/ca.crt  | 
|  Konfigurasi kontainerd  |  /etc/containerd/config.toml  | 
|  Konfigurasi modul kernel containerd  |  /etc/modules-load.d/contianerd.conf  | 
|   AWS berkas konfigurasi  |  /etc/aws/hybrid/config  | 
|   AWS berkas kredensial (jika mengaktifkan file kredensial)  |  /eks-hybrid/.aws/credentials  | 
|   AWS penandatanganan unit sistem pembantu  |  /etc/systemd/system/aws\$1signing\$1helper\$1update.service  | 
|  File conf Sysctl  |  /etc/sysctl.d/99-nodeadm.conf  | 
|  Sertifikat CA  |  /etc/ssl/certs/ca-sertifikat.crt  | 
|  File kunci Gpg  |  /etc/apt/keyrings/docker.asc  | 
|  File sumber repo Docker  |  /etc/apt/sources.list.d/docker.daftar  | 

## Node Config untuk aktivasi hybrid SSM
<a name="hybrid-nodes-node-config-ssm"></a>

Berikut ini adalah contoh `nodeConfig.yaml` saat menggunakan aktivasi hibrida AWS SSM untuk kredensil node hybrid.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Konfigurasi Node untuk Peran IAM Di Mana Saja
<a name="hybrid-nodes-node-config-iamra"></a>

Berikut ini adalah contoh `nodeConfig.yaml` untuk AWS IAM Roles Anywhere untuk kredenal node hybrid.

Saat menggunakan AWS IAM Roles Anywhere sebagai penyedia kredensi lokal, yang `nodeName` Anda gunakan dalam `nodeadm` konfigurasi harus selaras dengan izin yang Anda cakup untuk peran IAM Hybrid Nodes Anda. Misalnya, jika izin Anda untuk peran IAM Hybrid Nodes hanya mengizinkan AWS IAM Roles Anywhere untuk mengambil peran ketika nama sesi peran sama dengan CN sertifikat host, maka `nodeName` dalam `nodeadm` konfigurasi Anda harus sama dengan CN sertifikat Anda. `nodeName`Yang Anda gunakan tidak boleh lebih dari 64 karakter. Untuk informasi selengkapnya, lihat [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md).

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:              # Name of the EKS cluster
    region:            # AWS Region where the EKS cluster resides
  hybrid:
    iamRolesAnywhere:
      nodeName:        # Name of the node
      trustAnchorArn:  # ARN of the IAM Roles Anywhere trust anchor
      profileArn:      # ARN of the IAM Roles Anywhere profile
      roleArn:         # ARN of the Hybrid Nodes IAM role
      certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor
      privateKeyPath:  # Path to the private key file for the certificate
```

## Node Config untuk menyesuaikan kubelet (Opsional)
<a name="hybrid-nodes-nodeadm-kubelet"></a>

Anda dapat meneruskan konfigurasi dan flag kubelet dalam konfigurasi Anda. `nodeadm` Lihat contoh di bawah ini untuk cara menambahkan label node tambahan `abc.amazonaws.com/test-label` dan konfigurasi untuk pengaturan `shutdownGracePeriod` ke 30 detik.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  kubelet:
    config:           # Map of kubelet config and values
       shutdownGracePeriod: 30s
    flags:            # List of kubelet flags
       - --node-labels=abc.company.com/test-label=true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

## Node Config untuk menyesuaikan containerd (Opsional)
<a name="_node_config_for_customizing_containerd_optional"></a>

Anda dapat meneruskan konfigurasi containerd kustom dalam konfigurasi Anda. `nodeadm` Konfigurasi containerd `nodeadm` untuk menerima TOMM in-line. Lihat contoh di bawah ini untuk cara mengonfigurasi containerd untuk menonaktifkan penghapusan layer gambar yang tidak dikemas di toko konten containerd.

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri".containerd]
       discard_unpacked_layers = false
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

**catatan**  
Containerd versi 1.x dan 2.x menggunakan format konfigurasi yang berbeda. Containerd 1.x menggunakan konfigurasi versi 2, sedangkan containerd 2.x menggunakan konfigurasi versi 3. Meskipun containerd 2.x tetap kompatibel dengan konfigurasi versi 2, konfigurasi versi 3 direkomendasikan untuk kinerja yang optimal. Periksa versi containerd Anda `containerd --version` dengan atau `nodeadm` tinjau log penginstalan. Untuk detail lebih lanjut tentang pembuatan versi konfigurasi, lihat https://containerd.io/releases/

Anda juga dapat menggunakan konfigurasi containerd untuk mengaktifkan dukungan. SELinux Dengan SELinux diaktifkan pada containerd, pastikan pod yang dijadwalkan pada node memiliki SecurityContext yang tepat dan diaktifkan. seLinuxOptions Informasi lebih lanjut tentang konfigurasi konteks keamanan dapat ditemukan di dokumentasi [Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/).

**catatan**  
Red Hat Enterprise Linux (RHEL) 8 dan RHEL 9 telah SELinux diaktifkan secara default dan diatur ke ketat pada host. Amazon Linux 2023 telah SELinux diaktifkan secara default dan disetel ke mode permisif. Kapan SELinux diatur ke mode permisif pada host, mengaktifkannya di containerd tidak akan memblokir permintaan tetapi akan mencatatnya sesuai dengan konfigurasi pada host. SELinux 

```
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name:             # Name of the EKS cluster
    region:           # AWS Region where the EKS cluster resides
  containerd:
    config: |         # Inline TOML containerd additional configuration
       [plugins."io.containerd.grpc.v1.cri"]
       enable_selinux = true
  hybrid:
    ssm:
      activationCode: # SSM hybrid activation code
      activationId:   # SSM hybrid activation id
```

# Memecahkan masalah node hybrid
<a name="hybrid-nodes-troubleshooting"></a>

Topik ini mencakup beberapa kesalahan umum yang mungkin Anda lihat saat menggunakan Amazon EKS Hybrid Nodes dan cara memperbaikinya. *Untuk informasi pemecahan masalah lainnya, lihat [Memecahkan masalah dengan kluster dan node Amazon EKS](troubleshooting.md) dan [tag Pusat Pengetahuan untuk Amazon EKS](https://repost.aws/tags/knowledge-center/TA4IvCeWI1TE66q4jEj4Z9zg/amazon-elastic-kubernetes-service) di AWS re:Post.* Jika Anda tidak dapat menyelesaikan masalah, hubungi AWS Support.

 **Pemecahan masalah node dengan `nodeadm debug`** Anda dapat menjalankan `nodeadm debug` perintah dari node hybrid Anda untuk memvalidasi jaringan dan persyaratan kredensi terpenuhi. Untuk informasi lebih lanjut tentang `nodeadm debug` perintah, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

 **Mendeteksi masalah dengan node hibrid Anda dengan wawasan klaster** Amazon EKS cluster insights mencakup *pemeriksaan wawasan* yang mendeteksi masalah umum dengan konfigurasi EKS Hybrid Nodes di klaster Anda. Anda dapat melihat hasil semua pemeriksaan wawasan dari Konsol Manajemen AWS, AWS CLI, dan. AWS SDKs Untuk informasi selengkapnya tentang wawasan cluster, lihat[Bersiaplah untuk upgrade versi Kubernetes dan pecahkan masalah kesalahan konfigurasi dengan wawasan klaster](cluster-insights.md).

## Menginstal pemecahan masalah node hybrid
<a name="hybrid-nodes-troubleshooting-install"></a>

Topik pemecahan masalah berikut terkait dengan menginstal dependensi node hybrid pada host dengan perintah. `nodeadm install`

 **`nodeadm`perintah gagal `must run as root`** 

`nodeadm install`Perintah harus dijalankan dengan pengguna yang memiliki root atau `sudo` hak istimewa pada host Anda. Jika Anda menjalankan `nodeadm install` dengan pengguna yang tidak memiliki root atau `sudo` hak istimewa, Anda akan melihat kesalahan berikut dalam `nodeadm` output.

```
"msg":"Command failed","error":"must run as root"
```

 **Tidak dapat terhubung ke dependensi** 

`nodeadm install`Perintah menginstal dependensi yang diperlukan untuk node hybrid. Dependensi node hybrid mencakup`containerd`,, `kubelet``kubectl`, dan komponen AWS SSM atau AWS IAM Roles Anywhere. Anda harus memiliki akses dari tempat Anda menjalankan `nodeadm install` untuk mengunduh dependensi ini. Untuk informasi lebih lanjut tentang daftar lokasi yang harus dapat Anda akses, lihat[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md). Jika Anda tidak memiliki akses, Anda akan melihat kesalahan yang mirip dengan yang berikut dalam `nodeadm install` output.

```
"msg":"Command failed","error":"failed reading file from url: ...: max retries achieved for http request"
```

 **Gagal memperbarui pengelola paket** 

`nodeadm install`Perintah berjalan `apt update` atau `yum update` atau `dnf update` sebelum menginstal dependensi node hybrid. Jika langkah ini tidak berhasil, Anda mungkin melihat kesalahan yang mirip dengan berikut ini. Untuk memulihkan, Anda dapat menjalankan `apt update` atau `yum update` atau `dnf update` sebelum berlari `nodeadm install` atau Anda dapat mencoba menjalankan kembali`nodeadm install`.

```
failed to run update using package manager
```

 **Batas waktu tunggu atau batas waktu konteks terlampaui** 

Saat menjalankan`nodeadm install`, jika Anda melihat masalah pada berbagai tahap proses penginstalan dengan kesalahan yang menunjukkan ada batas waktu atau batas waktu konteks terlampaui, Anda mungkin memiliki koneksi lambat yang mencegah penginstalan dependensi node hibrida sebelum batas waktu terpenuhi. Untuk mengatasi masalah ini, Anda dapat mencoba menggunakan `--timeout` tanda `nodeadm` untuk memperpanjang durasi batas waktu untuk mengunduh dependensi.

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER --timeout 20m0s
```

## Menghubungkan pemecahan masalah node hybrid
<a name="hybrid-nodes-troubleshooting-connect"></a>

Topik pemecahan masalah di bagian ini terkait dengan proses menghubungkan node hybrid ke cluster EKS dengan perintah. `nodeadm init`

 **Kesalahan operasi atau skema yang tidak didukung** 

Saat menjalankan`nodeadm init`, jika Anda melihat kesalahan yang terkait dengan `operation error` atau`unsupported scheme`, periksa kesalahan Anda `nodeConfig.yaml` untuk memastikannya diformat dengan benar dan diteruskan ke`nodeadm`. Untuk informasi selengkapnya tentang format dan opsi untuk`nodeConfig.yaml`, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

```
"msg":"Command failed","error":"operation error ec2imds: GetRegion, request canceled, context deadline exceeded"
```

 **Peran IAM Node Hybrid tidak memiliki izin untuk tindakan `eks:DescribeCluster`** 

Saat menjalankan`nodeadm init`, `nodeadm` cobalah mengumpulkan informasi tentang cluster EKS Anda dengan memanggil `DescribeCluster` tindakan EKS. Jika peran IAM Hybrid Nodes Anda tidak memiliki izin untuk `eks:DescribeCluster` tindakan tersebut, maka Anda harus meneruskan endpoint Kubernetes API, cluster CA bundle, dan service IPv4 CIDR dalam konfigurasi node yang Anda berikan saat Anda menjalankan. `nodeadm` `nodeadm init` Untuk informasi selengkapnya tentang izin yang diperlukan untuk peran IAM Hybrid Nodes, lihat. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

```
"msg":"Command failed","error":"operation error EKS: DescribeCluster, https response error StatusCode: 403 ... AccessDeniedException"
```

 **Peran IAM Node Hybrid tidak memiliki izin untuk tindakan `eks:ListAccessEntries`** 

Saat menjalankan`nodeadm init`, `nodeadm` mencoba untuk memvalidasi apakah klaster EKS Anda memiliki entri akses tipe yang `HYBRID_LINUX` terkait dengan peran IAM Hybrid Nodes dengan memanggil tindakan EKS`ListAccessEntries`. Jika peran IAM Hybrid Nodes Anda tidak memiliki izin untuk `eks:ListAccessEntries` tindakan tersebut, maka Anda harus meneruskan `--skip cluster-access-validation` flag saat menjalankan `nodeadm init` perintah. Untuk informasi selengkapnya tentang izin yang diperlukan untuk peran IAM Hybrid Nodes, lihat. [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md)

```
"msg":"Command failed","error":"operation error EKS: ListAccessEntries, https response error StatusCode: 403 ... AccessDeniedException"
```

 **IP node tidak dalam jaringan node jarak jauh CIDR** 

Saat menjalankan`nodeadm init`, Anda mungkin mengalami kesalahan jika alamat IP node tidak berada dalam jaringan node jarak jauh yang ditentukan CIDRs. Kesalahan akan terlihat mirip dengan contoh berikut:

```
node IP 10.18.0.1 is not in any of the remote network CIDR blocks [10.0.0.0/16 192.168.0.0/16]
```

Contoh ini menunjukkan node dengan IP 10.18.0.1 mencoba bergabung dengan cluster dengan jaringan jarak jauh 10.0.0.0/16 dan CIDRs 192.168.0.0/16. Kesalahan terjadi karena 10.18.0.1 tidak berada dalam salah satu rentang.

Konfirmasikan bahwa Anda telah mengonfigurasi dengan benar `RemoteNodeNetworks` untuk menyertakan semua alamat IP node. Untuk informasi selengkapnya tentang konfigurasi jaringan, lihat[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md).
+ Jalankan perintah berikut di wilayah klaster Anda berada untuk memeriksa `RemoteNodeNetwork` konfigurasi Anda. Verifikasi bahwa blok CIDR yang tercantum dalam output menyertakan rentang IP node Anda dan sama dengan blok CIDR yang tercantum dalam pesan kesalahan. Jika tidak cocok, konfirmasikan nama klaster dan wilayah yang `nodeConfig.yaml` sesuai dengan klaster yang Anda inginkan.

```
aws eks describe-cluster --name CLUSTER_NAME --region REGION_NAME --query cluster.remoteNetworkConfig.remoteNodeNetworks
```
+ Verifikasi bahwa Anda bekerja dengan node yang dimaksud:
  + Konfirmasikan bahwa Anda berada di node yang benar dengan memeriksa nama host dan alamat IPnya cocok dengan yang ingin Anda daftarkan ke cluster.
  + Konfirmasikan bahwa node ini berada di jaringan lokal yang benar (yang jangkauan CIDR-nya terdaftar `RemoteNodeNetwork` selama penyiapan cluster).

Jika IP node Anda masih tidak seperti yang Anda harapkan, periksa hal berikut:
+ Jika Anda menggunakan IAM Roles Anywhere, `kubelet` lakukan pencarian DNS pada IAM Roles Anywhere `nodeName` dan menggunakan IP yang terkait dengan nama node jika tersedia. Jika Anda mempertahankan entri DNS untuk node Anda, konfirmasikan bahwa entri ini mengarah ke IPs dalam jaringan node jarak jauh Anda. CIDRs
+ Jika node Anda memiliki beberapa antarmuka jaringan, `kubelet` mungkin pilih antarmuka dengan alamat IP di luar jaringan node jarak jauh Anda CIDRs sebagai default. Untuk menggunakan antarmuka yang berbeda, tentukan alamat IP-nya menggunakan `--node-ip` `kubelet` bendera di`nodeConfig.yaml`. Untuk informasi selengkapnya, lihat [`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md). Anda dapat melihat antarmuka jaringan node Anda dan alamat IP-nya dengan menjalankan perintah berikut pada node Anda:

```
ip addr show
```

 **Node hibrida tidak muncul di kluster EKS** 

Jika Anda menjalankan `nodeadm init` dan itu selesai tetapi node hibrida Anda tidak muncul di klaster Anda, mungkin ada masalah dengan koneksi jaringan antara node hybrid Anda dan bidang kontrol EKS, Anda mungkin tidak memiliki izin grup keamanan yang diperlukan yang dikonfigurasi, atau Anda mungkin tidak memiliki pemetaan yang diperlukan dari peran IAM Hybrid Nodes Anda ke Kubernetes Role-Based Access Control (RBAC). Anda dapat memulai proses debugging dengan memeriksa status `kubelet` dan `kubelet` log dengan perintah berikut. Jalankan perintah berikut dari node hybrid yang gagal bergabung dengan cluster Anda.

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Tidak dapat berkomunikasi dengan cluster** 

Jika node hybrid Anda tidak dapat berkomunikasi dengan bidang kontrol cluster, Anda mungkin melihat log yang mirip dengan berikut ini.

```
"Failed to ensure lease exists, will retry" err="Get ..."
```

```
"Unable to register node with API server" err="Post ..."
```

```
Failed to contact API server when waiting for CSINode publishing ... dial tcp <ip address>: i/o timeout
```

Jika Anda melihat pesan ini, periksa hal berikut untuk memastikannya memenuhi persyaratan node hibrida yang dirinci[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md).
+ Konfirmasikan bahwa VPC yang diteruskan ke kluster EKS memiliki rute ke Transit Gateway (TGW) atau Virtual Private Gateway (VGW) untuk node lokal dan pod opsional Anda. CIDRs
+ Konfirmasikan bahwa Anda memiliki grup keamanan tambahan untuk klaster EKS Anda yang memiliki aturan masuk untuk node lokal CIDRs dan pod opsional. CIDRs
+ Konfirmasikan router lokal Anda dikonfigurasi untuk mengizinkan lalu lintas ke dan dari bidang kontrol EKS.

 **Tidak sah** 

Jika node hibrida Anda dapat berkomunikasi dengan bidang kontrol EKS tetapi tidak dapat mendaftar, Anda mungkin melihat log yang mirip dengan berikut ini. Perhatikan perbedaan utama dalam pesan log di bawah ini adalah `Unauthorized` kesalahannya. Ini menandakan bahwa node tidak dapat melakukan tugasnya karena tidak memiliki izin yang diperlukan.

```
"Failed to ensure lease exists, will retry" err="Unauthorized"
```

```
"Unable to register node with API server" err="Unauthorized"
```

```
Failed to contact API server when waiting for CSINode publishing: Unauthorized
```

Jika Anda melihat pesan-pesan ini, periksa hal berikut untuk memastikannya memenuhi rincian persyaratan node hibrida di [Siapkan kredensil untuk node hybrid](hybrid-nodes-creds.md) dan[Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md).
+ Konfirmasikan identitas node hybrid sesuai dengan peran IAM Hybrid Nodes yang Anda harapkan. Ini dapat dilakukan dengan menjalankan `sudo aws sts get-caller-identity` dari node hybrid Anda.
+ Konfirmasikan peran IAM Hybrid Nodes Anda memiliki izin yang diperlukan.
+ Konfirmasikan bahwa di klaster Anda, Anda memiliki entri akses EKS untuk peran IAM Hybrid Nodes Anda atau konfirmasikan bahwa Anda `aws-auth` ConfigMap memiliki entri untuk peran IAM Hybrid Nodes Anda. Jika Anda menggunakan entri akses EKS, konfirmasikan entri akses Anda untuk peran IAM Node Hybrid Anda memiliki jenis `HYBRID_LINUX` akses. Jika Anda menggunakan `aws-auth` ConfigMap, konfirmasikan entri Anda untuk peran IAM Hybrid Nodes memenuhi persyaratan dan pemformatan yang dirinci. [Mempersiapkan akses cluster untuk node hybrid](hybrid-nodes-cluster-prep.md)

### Node hibrida terdaftar dengan kluster EKS tetapi menunjukkan status `Not Ready`
<a name="hybrid-nodes-troubleshooting-not-ready"></a>

Jika node hibrida Anda berhasil terdaftar dengan kluster EKS Anda, tetapi node hibrida menunjukkan status`Not Ready`, hal pertama yang harus diperiksa adalah status Container Networking Interface (CNI) Anda. Jika Anda belum menginstal CNI, maka diharapkan node hybrid Anda memiliki status`Not Ready`. Setelah CNI diinstal dan berjalan dengan sukses, node diperbarui ke status`Ready`. Jika Anda mencoba menginstal CNI tetapi tidak berhasil berjalan, lihat [Pemecahan masalah CNI node hibrida](#hybrid-nodes-troubleshooting-cni) di halaman ini.

 **Permintaan Penandatanganan Sertifikat (CSRs) macet Tertunda** 

Setelah menghubungkan node hybrid ke kluster EKS Anda, jika Anda melihat ada node hybrid yang CSRs tertunda, node hybrid Anda tidak memenuhi persyaratan untuk persetujuan otomatis. CSRs untuk node hybrid secara otomatis disetujui dan dikeluarkan jika node CSRs for hybrid dibuat oleh node dengan `eks.amazonaws.com/compute-type: hybrid` label, dan CSR memiliki Nama Alternatif Subjek berikut (SANs): setidaknya satu DNS SAN sama dengan nama node dan IP SANs milik jaringan node jarak jauh. CIDRs

 **Profil hybrid sudah ada** 

Jika Anda mengubah `nodeadm` konfigurasi dan mencoba mendaftarkan ulang node dengan konfigurasi baru, Anda mungkin melihat kesalahan yang menyatakan bahwa profil hibrida sudah ada tetapi isinya telah berubah. Alih-alih berjalan `nodeadm init` di antara perubahan konfigurasi, jalankan `nodeadm uninstall` diikuti oleh a `nodeadm install` dan`nodeadm init`. Ini memastikan pembersihan yang tepat dengan perubahan konfigurasi.

```
"msg":"Command failed","error":"hybrid profile already exists at /etc/aws/hybrid/config but its contents do not align with the expected configuration"
```

 **Node hibrida gagal menyelesaikan API Pribadi** 

Setelah berjalan`nodeadm init`, jika Anda melihat kesalahan pada `kubelet` log yang menunjukkan kegagalan untuk menghubungi server API EKS Kubernetes karena ada`no such host`, Anda mungkin harus mengubah entri DNS untuk titik akhir API EKS Kubernetes di jaringan lokal atau di tingkat host. *Lihat [Meneruskan kueri DNS masuk ke VPC Anda](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-forwarding-inbound-queries.html) di dokumentasi Route53. AWS *

```
Failed to contact API server when waiting for CSINode publishing: Get ... no such host
```

 **Tidak dapat melihat node hybrid di konsol EKS** 

Jika Anda telah mendaftarkan node hybrid tetapi tidak dapat melihatnya di konsol EKS, periksa izin utama IAM yang Anda gunakan untuk melihat konsol. Prinsipal IAM yang Anda gunakan harus memiliki izin IAM dan Kubernetes minimum tertentu untuk melihat sumber daya di konsol. Untuk informasi selengkapnya, lihat [Lihat sumber daya Kubernetes di Konsol Manajemen AWS](view-kubernetes-resources.md).

## Menjalankan pemecahan masalah node hybrid
<a name="_running_hybrid_nodes_troubleshooting"></a>

Jika node hibrida Anda terdaftar dengan kluster EKS Anda`Ready`, memiliki status, dan kemudian beralih ke status`Not Ready`, ada berbagai masalah yang mungkin berkontribusi pada status tidak sehat seperti node yang kekurangan sumber daya yang cukup untuk CPU, memori, atau ruang disk yang tersedia, atau node terputus dari bidang kontrol EKS. Anda dapat menggunakan langkah-langkah di bawah ini untuk memecahkan masalah node Anda, dan jika Anda tidak dapat menyelesaikan masalah, hubungi Support AWS .

Jalankan `nodeadm debug` dari node hybrid Anda untuk memvalidasi jaringan dan persyaratan kredensi terpenuhi. Untuk informasi lebih lanjut tentang `nodeadm debug` perintah, lihat[`nodeadm`Referensi node hibrida](hybrid-nodes-nodeadm.md).

 **Dapatkan status node** 

```
kubectl get nodes -o wide
```

 **Periksa kondisi dan peristiwa node** 

```
kubectl describe node NODE_NAME
```

 **Dapatkan status pod** 

```
kubectl get pods -A -o wide
```

 **Periksa kondisi dan acara pod** 

```
kubectl describe pod POD_NAME
```

 **Periksa log pod** 

```
kubectl logs POD_NAME
```

 **Periksa `kubectl` log** 

```
systemctl status kubelet
```

```
journalctl -u kubelet -f
```

 **Probe keaktifan pod gagal atau webhook tidak berfungsi** 

Jika aplikasi, add-on, atau webhook yang berjalan pada node hybrid Anda tidak dimulai dengan benar, Anda mungkin memiliki masalah jaringan yang memblokir komunikasi ke pod. Agar control plane EKS dapat menghubungi webhook yang berjalan pada node hybrid, Anda harus mengonfigurasi klaster EKS Anda dengan jaringan pod jarak jauh dan memiliki rute untuk pod CIDR lokal di tabel perutean VPC dengan target sebagai Transit Gateway (TGW), virtual private gateway (VPW), atau gateway lain yang Anda gunakan untuk menghubungkan VPC dengan jaringan lokal Anda. Untuk informasi lebih lanjut tentang persyaratan jaringan untuk node hybrid, lihat[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md). Anda juga harus mengizinkan lalu lintas ini di firewall lokal Anda dan memastikan router Anda dapat merutekan dengan benar ke pod Anda. Lihat [Konfigurasikan webhook untuk node hybrid](hybrid-nodes-webhooks.md) untuk informasi selengkapnya tentang persyaratan untuk menjalankan webhook pada node hybrid.

Pesan log pod umum untuk skenario ini ditampilkan di bawah ini dimana ip-address adalah IP Cluster untuk layanan Kubernetes.

```
dial tcp <ip-address>:443: connect: no route to host
```

 **`kubectl logs`atau `kubectl exec` perintah tidak berfungsi (perintah `kubelet` API)** 

Jika`kubectl attach`,`kubectl cp`,`kubectl exec`,`kubectl logs`, dan `kubectl port-forward` perintah habis sementara `kubectl` perintah lain berhasil, masalahnya kemungkinan terkait dengan konfigurasi jaringan jarak jauh. Perintah-perintah ini terhubung melalui cluster ke `kubelet` titik akhir pada node. Untuk mengetahui informasi selengkapnya, lihat [Titik akhir `kubelet`](hybrid-nodes-concepts-kubernetes.md#hybrid-nodes-concepts-k8s-kubelet-api).

Verifikasi bahwa node IPs dan pod Anda IPs termasuk dalam jaringan node jarak jauh dan jaringan pod jarak jauh yang CIDRs dikonfigurasi untuk klaster Anda. Gunakan perintah di bawah ini untuk memeriksa tugas IP.

```
kubectl get nodes -o wide
```

```
kubectl get pods -A -o wide
```

Bandingkan ini IPs dengan jaringan jarak jauh yang dikonfigurasi CIDRs untuk memastikan perutean yang tepat. Untuk persyaratan konfigurasi jaringan, lihat[Mempersiapkan jaringan untuk node hybrid](hybrid-nodes-networking.md).

## Pemecahan masalah CNI node hibrida
<a name="hybrid-nodes-troubleshooting-cni"></a>

Jika Anda mengalami masalah dengan awalnya memulai Cilium atau Calico dengan node hibrida, ini paling sering disebabkan oleh masalah jaringan antara node hibrida atau pod CNI yang berjalan pada node hibrida, dan bidang kontrol EKS. Pastikan lingkungan Anda memenuhi persyaratan dalam Mempersiapkan jaringan untuk node hybrid. Ini berguna untuk memecah masalah menjadi beberapa bagian.

Konfigurasi kluster EKS  
Apakah konfigurasi RemoteNodeNetwork dan RemotePodNetwork konfigurasi benar?

Konfigurasi VPC  
Apakah ada rute untuk RemoteNodeNetwork dan RemotePodNetwork di tabel perutean VPC dengan target Transit Gateway atau Virtual Private Gateway?

Konfigurasi grup keamanan  
Apakah ada aturan masuk dan keluar untuk dan? RemoteNodeNetwork RemotePodNetwork 

Jaringan lokal  
Apakah ada rute dan akses ke dan dari bidang kontrol EKS dan ke dan dari node hibrida dan pod yang berjalan pada node hybrid?

Konfigurasi CNI  
Jika menggunakan jaringan overlay, apakah konfigurasi kumpulan IP untuk CNI cocok dengan yang RemotePodNetwork dikonfigurasi untuk kluster EKS jika menggunakan webhook?

 **Hybrid node memiliki status `Ready` tanpa CNI diinstal** 

Jika node hybrid Anda menunjukkan status`Ready`, tetapi Anda belum menginstal CNI di cluster Anda, ada kemungkinan bahwa ada artefak CNI lama pada node hybrid Anda. Secara default, ketika Anda menghapus Cilium dan Calico dengan alat seperti Helm, sumber daya pada disk tidak dihapus dari mesin fisik atau virtual Anda. Selain itu, Definisi Sumber Daya Kustom (CRDs) untuk ini CNIs mungkin masih ada di cluster Anda dari instalasi lama. Untuk informasi selengkapnya, lihat bagian Hapus Cilium dan Hapus Calico dari. [Konfigurasikan CNI untuk node hybrid](hybrid-nodes-cni.md)

 **Pemecahan masalah Cilium** 

Jika Anda mengalami masalah saat menjalankan Cilium pada node hybrid, lihat [langkah pemecahan masalah](https://docs.cilium.io/en/stable/operations/troubleshooting/) dalam dokumentasi Cilium. Bagian di bawah ini mencakup masalah yang mungkin unik untuk menerapkan Cilium pada node hibrida.

 **Cilium tidak dimulai** 

Jika agen Cilium yang berjalan pada setiap node hibrida tidak dimulai, periksa log pod agen Cilium untuk mengetahui kesalahan. Agen Cilium memerlukan konektivitas ke titik akhir API EKS Kubernetes untuk memulai. Startup agen cilium akan gagal jika konektivitas ini tidak dikonfigurasi dengan benar. Dalam hal ini, Anda akan melihat pesan log yang mirip dengan yang berikut ini di log pod agen Cilium.

```
msg="Unable to contact k8s api-server"
level=fatal msg="failed to start: Get \"https://<k8s-cluster-ip>:443/api/v1/namespaces/kube-system\": dial tcp <k8s-cluster-ip>:443: i/o timeout"
```

Agen Cilium berjalan di jaringan host. Kluster EKS Anda harus dikonfigurasi `RemoteNodeNetwork` untuk konektivitas Cilium. Konfirmasikan bahwa Anda memiliki grup keamanan tambahan untuk kluster EKS Anda dengan aturan masuk untuk Anda`RemoteNodeNetwork`, bahwa Anda memiliki rute di VPC untuk `RemoteNodeNetwork` Anda, dan bahwa jaringan lokal Anda dikonfigurasi dengan benar untuk memungkinkan konektivitas ke bidang kontrol EKS.

Jika operator Cilium sedang berjalan dan beberapa agen Cilium Anda berjalan tetapi tidak semuanya, konfirmasikan bahwa Anda memiliki pod yang tersedia IPs untuk dialokasikan untuk semua node di klaster Anda. Anda mengonfigurasi ukuran Pod yang dapat dialokasikan CIDRs saat menggunakan kumpulan klaster IPAM dengan `clusterPoolIPv4PodCIDRList` konfigurasi Cilium Anda. Ukuran CIDR per-node dikonfigurasi dengan `clusterPoolIPv4MaskSize` pengaturan dalam konfigurasi Cilium Anda. Lihat [Memperluas kumpulan cluster](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) di dokumentasi Cilium untuk informasi selengkapnya.

 **Cilium BGP tidak berfungsi** 

Jika Anda menggunakan Cilium BGP Control Plane untuk mengiklankan pod atau alamat layanan Anda ke jaringan lokal, Anda dapat menggunakan perintah Cilium CLI berikut untuk memeriksa apakah BGP mengiklankan rute ke sumber daya Anda. Untuk langkah-langkah menginstal CLI Cilium, lihat Menginstal CLI Cilium [di dokumentasi Cilium](https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/#install-the-cilium-cli).

Jika BGP bekerja dengan benar, Anda harus node hybrid Anda dengan Session State `established` di output. Anda mungkin perlu bekerja dengan tim jaringan Anda untuk mengidentifikasi nilai yang benar untuk Local AS, Peer AS, dan Peer Address lingkungan Anda.

```
cilium bgp peers
```

```
cilium bgp routes
```

Jika Anda menggunakan Cilium BGP untuk mengiklankan Layanan dengan tipe`LoadBalancer`, Anda harus memiliki label yang sama pada Layanan Anda `CiliumLoadBalancerIPPool` dan Layanan, yang harus digunakan dalam pemilih Anda. IPs `CiliumBGPAdvertisement` Contoh ditunjukkan di bawah ini. Catatan, jika Anda menggunakan Cilium BGP untuk mengiklankan Layanan dengan tipe LoadBalancer, rute BGP mungkin terganggu selama agen Cilium memulai kembali. IPs Untuk informasi selengkapnya, lihat [Skenario Kegagalan](https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane-operation/#failure-scenarios) dalam dokumentasi Cilium.

 **Layanan** 

```
kind: Service
apiVersion: v1
metadata:
  name: guestbook
  labels:
    app: guestbook
spec:
  ports:
  - port: 3000
    targetPort: http-server
  selector:
    app: guestbook
  type: LoadBalancer
```

 **CiliumLoadBalancerIPPool** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
  name: guestbook-pool
  labels:
    app: guestbook
spec:
  blocks:
  - cidr: <CIDR to advertise>
  serviceSelector:
    matchExpressions:
      - { key: app, operator: In, values: [ guestbook ] }
```

 **silia BGPAdvertisement** 

```
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPAdvertisement
metadata:
  name: bgp-advertisements-guestbook
  labels:
    advertise: bgp
spec:
  advertisements:
    - advertisementType: "Service"
      service:
        addresses:
          - ExternalIP
          - LoadBalancerIP
      selector:
        matchExpressions:
          - { key: app, operator: In, values: [ guestbook ] }
```

 **Pemecahan masalah Calico** 

Jika Anda mengalami masalah saat menjalankan Calico pada node hybrid, lihat [langkah pemecahan masalah](https://docs.tigera.io/calico/latest/operations/troubleshoot/) dalam dokumentasi Calico. Bagian di bawah ini mencakup masalah yang mungkin unik untuk menerapkan Calico pada node hybrid.

Tabel di bawah ini merangkum komponen Calico dan apakah mereka berjalan pada node atau jaringan pod secara default. Jika Anda mengonfigurasi Calico untuk menggunakan NAT untuk lalu lintas pod keluar, jaringan lokal Anda harus dikonfigurasi untuk merutekan lalu lintas ke CIDR node lokal dan tabel perutean VPC Anda harus dikonfigurasi dengan rute untuk CIDR node lokal dengan gateway transit (TGW) atau virtual private gateway (VGW) sebagai target. Jika Anda tidak mengonfigurasi Calico untuk menggunakan NAT untuk lalu lintas pod keluar, jaringan lokal Anda harus dikonfigurasi untuk merutekan lalu lintas ke CIDR pod lokal dan tabel perutean VPC Anda harus dikonfigurasi dengan rute untuk CIDR pod lokal dengan gateway transit (TGW) atau virtual private gateway (VGW) sebagai target.


| Komponen | Jaringan | 
| --- | --- | 
|  Server API Calico  |  Simpul  | 
|  Pengontrol Calico untuk Kubernetes  |  Pod  | 
|  Agen simpul Calico  |  Simpul  | 
|  Calico `typha`   |  Simpul  | 
|  Driver simpul Calico CSI  |  Pod  | 
|  Operator Calico  |  Simpul  | 

 **Sumber daya Calico dijadwalkan atau berjalan pada node yang ditutup** 

Sumber daya Calico yang tidak berjalan sebagai a DaemonSet memiliki toleransi fleksibel secara default yang memungkinkannya dijadwalkan pada node yang dikepung yang tidak siap untuk penjadwalan atau menjalankan pod. Anda dapat memperketat toleransi untuk sumber daya DaemonSet non-Calico dengan mengubah instalasi operator Anda untuk menyertakan yang berikut ini.

```
installation:
  ...
  controlPlaneTolerations:
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  calicoKubeControllersDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
  typhaDeployment:
    spec:
      template:
        spec:
          tolerations:
          - effect: NoExecute
            key: node.kubernetes.io/unreachable
            operator: Exists
            tolerationSeconds: 300
          - effect: NoExecute
            key: node.kubernetes.io/not-ready
            operator: Exists
            tolerationSeconds: 300
```

## Pemecahan masalah kredensil
<a name="hybrid-nodes-troubleshooting-creds"></a>

Untuk aktivasi hybrid AWS SSM dan Peran AWS IAM Anywhere, Anda dapat memvalidasi bahwa kredensil untuk peran IAM Hybrid Nodes dikonfigurasi dengan benar pada node hybrid Anda dengan menjalankan perintah berikut dari node hybrid Anda. Konfirmasikan nama node dan nama Peran IAM Node Hybrid adalah apa yang Anda harapkan.

```
sudo aws sts get-caller-identity
```

```
{
    "UserId": "ABCDEFGHIJKLM12345678910:<node-name>",
    "Account": "<aws-account-id>",
    "Arn": "arn:aws: sts::<aws-account-id>:assumed-role/<hybrid-nodes-iam-role/<node-name>"
}
```

 ** AWS Pemecahan masalah Systems Manager (SSM)** 

Jika Anda menggunakan aktivasi hibrida AWS SSM untuk kredensil node hybrid Anda, perhatikan direktori dan artefak SSM berikut yang diinstal pada node hybrid Anda oleh. `nodeadm` Untuk informasi selengkapnya tentang agen SSM, lihat [Bekerja dengan agen SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) di *Panduan Pengguna AWS Systems Manager*.


| Deskripsi | Lokasi | 
| --- | --- | 
|  Agen SSM  |  Ubuntu - `/snap/amazon-ssm-agent/current/amazon-ssm-agent` RHEL & AL2 023 - `/usr/bin/amazon-ssm-agent`   | 
|  Log SSM Agent  |   `/var/log/amazon/ssm`   | 
|   AWS kredensialnya  |   `/root/.aws/credentials`   | 
|  CLI Pengaturan SSM  |   `/opt/ssm/ssm-setup-cli`   | 

 **Memulai ulang agen SSM** 

Beberapa masalah dapat diselesaikan dengan memulai kembali agen SSM. Anda dapat menggunakan perintah di bawah ini untuk memulai ulang.

 **AL2023 dan sistem operasi lainnya** 

```
systemctl restart amazon-ssm-agent
```

 **Ubuntu** 

```
systemctl restart snap.amazon-ssm-agent.amazon-ssm-agent
```

 **Periksa konektivitas ke titik akhir SSM** 

Konfirmasikan bahwa Anda dapat terhubung ke titik akhir SSM dari node hybrid Anda. Untuk daftar titik akhir SSM, lihat titik akhir dan kuota [AWS Systems Manager](https://docs.aws.amazon.com/general/latest/gr/ssm.html). Ganti perintah `us-west-2` di bawah ini dengan AWS Region untuk aktivasi hybrid AWS SSM Anda.

```
ping ssm.us-west-2.amazonaws.com
```

 **Lihat status koneksi instans SSM terdaftar** 

Anda dapat memeriksa status koneksi dari instance yang terdaftar dengan aktivasi hibrida SSM dengan perintah CLI AWS berikut. Ganti ID mesin dengan ID mesin instance Anda.

```
aws ssm get-connection-status --target mi-012345678abcdefgh
```

 **Ketidakcocokan checksum CLI Pengaturan SSM** 

Saat menjalankan `nodeadm install` jika Anda melihat masalah dengan ketidakcocokan `ssm-setup-cli` checksum, Anda harus mengonfirmasi bahwa tidak ada instalasi SSM yang lebih lama di host Anda. Jika ada instalasi SSM yang lebih lama di host Anda, hapus dan jalankan kembali `nodeadm install` untuk menyelesaikan masalah.

```
Failed to perform agent-installation/on-prem registration: error while verifying installed ssm-setup-cli checksum: checksum mismatch with latest ssm-setup-cli.
```

 **SSM `InvalidActivation`** 

Jika Anda melihat kesalahan saat mendaftarkan instans Anda dengan AWS SSM, konfirmasikan `region``activationCode`, dan `activationId` di dalamnya benar. `nodeConfig.yaml` AWS Wilayah untuk kluster EKS Anda harus sesuai dengan wilayah aktivasi hibrida SSM Anda. Jika nilai-nilai ini salah dikonfigurasi, Anda mungkin melihat kesalahan yang mirip dengan berikut ini.

```
ERROR Registration failed due to error registering the instance with AWS SSM. InvalidActivation
```

 **SSM`ExpiredTokenException`: Token keamanan yang termasuk dalam permintaan sudah kedaluwarsa** 

Jika agen SSM tidak dapat menyegarkan kredensil, Anda mungkin melihat file. `ExpiredTokenException` Dalam skenario ini, jika Anda dapat terhubung ke titik akhir SSM dari node hybrid Anda, Anda mungkin perlu me-restart agen SSM untuk memaksa penyegaran kredenal.

```
"msg":"Command failed","error":"operation error SSM: DescribeInstanceInformation, https response error StatusCode: 400, RequestID: eee03a9e-f7cc-470a-9647-73d47e4cf0be, api error ExpiredTokenException: The security token included in the request is expired"
```

 **Kesalahan SSM dalam menjalankan perintah mesin register** 

Jika Anda melihat kesalahan saat mendaftarkan mesin dengan SSM, Anda mungkin perlu menjalankan ulang `nodeadm install` untuk memastikan semua dependensi SSM diinstal dengan benar.

```
"error":"running register machine command: , error: fork/exec /opt/aws/ssm-setup-cli: no such file or directory"
```

 **SSM `ActivationExpired`** 

Saat menjalankan`nodeadm init`, jika Anda melihat kesalahan saat mendaftarkan instans dengan SSM karena aktivasi yang kedaluwarsa, Anda perlu membuat aktivasi hibrida SSM baru, memperbarui `nodeConfig.yaml` dengan `activationCode` dan `activationId` aktivasi hibrida SSM baru Anda, dan menjalankan kembali. `nodeadm init`

```
"msg":"Command failed","error":"SSM activation expired. Please use a valid activation"
```

```
ERROR Registration failed due to error registering the instance with AWS SSM. ActivationExpired
```

 **SSM gagal menyegarkan kredensil yang di-cache** 

Jika Anda melihat kegagalan untuk me-refresh kredenal cache, `/root/.aws/credentials` file tersebut mungkin telah dihapus di host Anda. Pertama periksa aktivasi hibrida SSM Anda dan pastikan aktif dan node hibrida Anda dikonfigurasi dengan benar untuk menggunakan aktivasi. Periksa log agen SSM di `/var/log/amazon/ssm` dan jalankan kembali `nodeadm init` perintah setelah Anda menyelesaikan masalah di sisi SSM.

```
"Command failed","error":"operation error SSM: DescribeInstanceInformation, get identity: get credentials: failed to refresh cached credentials"
```

 **Bersihkan SSM** 

Untuk menghapus agen SSM dari host Anda, Anda dapat menjalankan perintah berikut.

```
dnf remove -y amazon-ssm-agent
sudo apt remove --purge amazon-ssm-agent
snap remove amazon-ssm-agent
rm -rf /var/lib/amazon/ssm/Vault/Store/RegistrationKey
```

 ** AWS Peran IAM Di Mana Saja Pemecahan masalah** 

Jika Anda menggunakan AWS IAM Roles Anywhere untuk kredenal node hybrid Anda, perhatikan direktori dan artefak berikut yang diinstal pada node hybrid Anda oleh. `nodeadm` *Untuk informasi selengkapnya tentang pemecahan masalah Peran IAM Di Mana Saja, lihat [Memecahkan Masalah identitas dan akses Peran AWS IAM Di Mana Saja di mana saja di Panduan Pengguna IAM Roles AWS Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/security_iam_troubleshoot.html).*


| Deskripsi | Lokasi | 
| --- | --- | 
|  Peran IAM Di Mana Saja CLI  |   `/usr/local/bin/aws_signing_helper`   | 
|  Lokasi dan nama sertifikat default  |   `/etc/iam/pki/server.pem`   | 
|  Lokasi dan nama kunci default  |   `/etc/iam/pki/server.key`   | 

 **Peran IAM Di Mana Saja gagal menyegarkan kredensil yang di-cache** 

Jika Anda melihat kegagalan untuk me-refresh kredenal cache, tinjau konten `/etc/aws/hybrid/config` dan konfirmasikan bahwa IAM Roles Anywhere telah dikonfigurasi dengan benar dalam konfigurasi Anda. `nodeadm` Konfirmasikan bahwa `/etc/iam/pki` ada. Setiap node harus memiliki sertifikat dan kunci yang unik. Secara default, saat menggunakan IAM Roles Anywhere sebagai penyedia kredensi, `nodeadm` gunakan `/etc/iam/pki/server.pem` untuk lokasi dan nama sertifikat, dan `/etc/iam/pki/server.key` untuk kunci pribadi. Anda mungkin perlu membuat direktori sebelum menempatkan sertifikat dan kunci di direktori dengan. `sudo mkdir -p /etc/iam/pki` Anda dapat memverifikasi konten sertifikat Anda dengan perintah di bawah ini.

```
openssl x509 -text -noout -in server.pem
```

```
open /etc/iam/pki/server.pem: no such file or directory
could not parse PEM data
Command failed {"error": "... get identity: get credentials: failed to refresh cached credentials, process provider error: error in credential_process: exit status 1"}
```

 **Peran IAM Di Mana Saja tidak diizinkan untuk melakukan `sts:AssumeRole`** 

Di `kubelet` log, jika Anda melihat masalah akses ditolak untuk `sts:AssumeRole` operasi saat menggunakan Peran IAM Di Mana Saja, periksa kebijakan kepercayaan peran IAM Node Hybrid Anda untuk mengonfirmasi bahwa prinsip layanan IAM Roles Anywhere diizinkan untuk mengasumsikan Peran IAM Node Hybrid. Selain itu, konfirmasikan bahwa ARN jangkar kepercayaan dikonfigurasi dengan benar dalam kebijakan kepercayaan peran IAM Hybrid Nodes Anda dan bahwa peran IAM Hybrid Nodes Anda ditambahkan ke profil IAM Roles Anywhere Anda.

```
could not get token: AccessDenied: User: ... is not authorized to perform: sts:AssumeRole on resource: ...
```

 **Peran IAM Di Mana Saja tidak diizinkan untuk disetel `roleSessionName`** 

Di `kubelet` log, jika Anda melihat masalah akses ditolak untuk menyetel`roleSessionName`, konfirmasikan bahwa Anda telah menyetel `acceptRoleSessionName` ke true untuk profil IAM Roles Anywhere Anda.

```
AccessDeniedException: Not authorized to set roleSessionName
```

## Pemecahan masalah sistem operasi
<a name="hybrid-nodes-troubleshooting-os"></a>

### RHEL
<a name="_rhel"></a>

 **Kegagalan pendaftaran pengelola hak atau langganan** 

Jika Anda menjalankan `nodeadm install` dan mengalami kegagalan untuk menginstal dependensi node hibrida karena masalah pendaftaran hak, pastikan Anda telah mengatur nama pengguna dan kata sandi Red Hat dengan benar di host Anda.

```
This system is not registered with an entitlement server
```

### Ubuntu
<a name="_ubuntu"></a>

 **GLIBC tidak ditemukan** 

Jika Anda menggunakan Ubuntu untuk sistem operasi Anda dan IAM Roles Anywhere untuk penyedia kredensi Anda dengan node hybrid dan melihat masalah dengan GLIBC tidak ditemukan, Anda dapat menginstal ketergantungan itu secara manual untuk menyelesaikan masalah.

```
GLIBC_2.32 not found (required by /usr/local/bin/aws_signing_helper)
```

Jalankan perintah berikut untuk menginstal dependensi:

```
ldd --version
sudo apt update && apt install libc6
sudo apt install glibc-source
```

### Bottlerocket
<a name="_bottlerocket"></a>

Jika Anda mengaktifkan penampung admin Bottlerocket, Anda dapat mengaksesnya dengan SSH untuk debugging lanjutan dan pemecahan masalah dengan hak istimewa yang lebih tinggi. Bagian berikut berisi perintah yang perlu dijalankan pada konteks host Bottlerocket. Setelah Anda berada di wadah admin, Anda dapat menjalankan `sheltie` untuk mendapatkan shell root penuh di host Bottlerocket.

```
sheltie
```

Anda juga dapat menjalankan perintah di bagian berikut dari shell kontainer admin dengan awalan setiap perintah dengan`sudo chroot /.bottlerocket/rootfs`.

```
sudo chroot /.bottlerocket/rootfs <command>
```

 **Menggunakan logdog untuk pengumpulan log** 

Bottlerocket menyediakan `logdog` utilitas untuk mengumpulkan log dan informasi sistem secara efisien untuk tujuan pemecahan masalah.

```
logdog
```

`logdog`Utilitas mengumpulkan log dari berbagai lokasi pada host Bottlerocket dan menggabungkannya menjadi tarball. Secara default, tarball akan dibuat di`/var/log/support/bottlerocket-logs.tar.gz`, dan dapat diakses dari wadah host di`/.bottlerocket/support/bottlerocket-logs.tar.gz`.

 **Mengakses log sistem dengan journalctl** 

Anda dapat memeriksa status berbagai layanan sistem seperti`kubelet`,`containerd`, dll dan melihat log mereka dengan perintah berikut. `-f`Bendera akan mengikuti log secara real time.

Untuk memeriksa status `kubelet` layanan dan mengambil `kubelet` log, Anda dapat menjalankan:

```
systemctl status kubelet
journalctl -u kubelet -f
```

Untuk memeriksa status `containerd` layanan dan mengambil log untuk `containerd` instance yang diatur, Anda dapat menjalankan:

```
systemctl status containerd
journalctl -u containerd -f
```

Untuk memeriksa status `host-containerd` layanan dan mengambil log untuk `containerd` instance host, Anda dapat menjalankan:

```
systemctl status host-containerd
journalctl -u host-containerd -f
```

Untuk mengambil log untuk wadah bootstrap dan wadah host, Anda dapat menjalankan:

```
journalctl _COMM=host-ctr -f
```