

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

# 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).