

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

# Buat Kelas Node untuk Amazon EKS
<a name="create-node-class"></a>

Amazon EKS Node Classes adalah template yang menawarkan kontrol granular atas konfigurasi node terkelola Mode Otomatis EKS Anda. Kelas Node mendefinisikan pengaturan tingkat infrastruktur yang berlaku untuk grup node di kluster EKS Anda, termasuk konfigurasi jaringan, pengaturan penyimpanan, dan penandaan sumber daya. Topik ini menjelaskan cara membuat dan mengkonfigurasi Kelas Node untuk memenuhi persyaratan operasional spesifik Anda.

Saat Anda perlu menyesuaikan cara Mode Otomatis EKS menyediakan dan mengonfigurasi instans EC2 di luar pengaturan default, membuat Kelas Node memberi Anda kontrol yang tepat atas parameter infrastruktur penting. Misalnya, Anda dapat menentukan penempatan subnet pribadi untuk keamanan yang ditingkatkan, mengonfigurasi penyimpanan sementara instance untuk beban kerja yang sensitif terhadap kinerja, atau menerapkan penandaan khusus untuk alokasi biaya.

## Buat Kelas Node
<a name="_create_a_node_class"></a>

Untuk membuat`NodeClass`, ikuti langkah-langkah ini:

1. Buat file YAMM (misalnya,`nodeclass.yaml`) dengan konfigurasi Kelas Node Anda

1. Terapkan konfigurasi ke cluster Anda menggunakan `kubectl` 

1. Referensi Kelas Node dalam konfigurasi Node Pool Anda. Untuk informasi selengkapnya, lihat [Buat Node Pool untuk Mode Otomatis EKS](create-node-pool.md).

Anda perlu `kubectl` diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat [Siapkan untuk menggunakan Amazon EKS](setting-up.md).

### Contoh Kelas Node Dasar
<a name="_basic_node_class_example"></a>

Berikut adalah contoh Kelas Node:

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: private-compute
spec:
  subnetSelectorTerms:
    - tags:
        Name: "private-subnet"
        kubernetes.io/role/internal-elb: "1"
  securityGroupSelectorTerms:
    - tags:
        Name: "eks-cluster-sg"
  ephemeralStorage:
    size: "160Gi"
```

Ini NodeClass meningkatkan jumlah penyimpanan fana pada node.

Terapkan konfigurasi ini dengan menggunakan:

```
kubectl apply -f nodeclass.yaml
```

Selanjutnya, referensi Kelas Node dalam konfigurasi Node Pool Anda. Untuk informasi selengkapnya, lihat [Buat Node Pool untuk Mode Otomatis EKS](create-node-pool.md).

## Buat entri akses kelas node
<a name="auto-node-access-entry"></a>

Jika Anda membuat kelas node kustom, Anda perlu membuat Entri Akses EKS untuk mengizinkan node bergabung dengan cluster. EKS secara otomatis membuat entri akses saat Anda menggunakan kelas node dan kumpulan node bawaan.

Untuk informasi tentang cara kerja Entri Akses, lihat[Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS](access-entries.md).

Saat membuat entri akses untuk kelas node Mode Otomatis EKS, Anda perlu menggunakan jenis entri `EC2` akses.

### Buat entri akses dengan CLI
<a name="_create_access_entry_with_cli"></a>

 **Untuk membuat entri akses untuk node EC2 dan mengaitkan Kebijakan Node Otomatis EKS:** 

Perbarui perintah CLI berikut dengan nama cluster Anda, dan peran node ARN. Peran node ARN ditentukan dalam kelas node YAMM.

```
# Create the access entry for EC2 nodes
aws eks create-access-entry \
  --cluster-name <cluster-name> \
  --principal-arn <node-role-arn> \
  --type EC2

# Associate the auto node policy
aws eks associate-access-policy \
  --cluster-name <cluster-name> \
  --principal-arn <node-role-arn> \
  --policy-arn arn:aws: eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy \
  --access-scope type=cluster
```

### Buat entri akses dengan CloudFormation
<a name="_create_access_entry_with_cloudformation"></a>

 **Untuk membuat entri akses untuk node EC2 dan mengaitkan Kebijakan Node Otomatis EKS:** 

Perbarui yang berikut ini CloudFormation dengan nama cluster Anda, dan peran node ARN. Peran node ARN ditentukan dalam kelas node YAMM.

```
EKSAutoNodeRoleAccessEntry:
  Type: AWS::EKS::AccessEntry
  Properties:
    ClusterName: <cluster-name>
    PrincipalArn: <node-role-arn>
    Type: "EC2"
    AccessPolicies:
      - AccessScope:
          Type: cluster
        PolicyArn: arn:aws: eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy
  DependsOn: [ <cluster-name> ] # previously defined in CloudFormation
```

Untuk informasi tentang menerapkan CloudFormation tumpukan, lihat [Memulai CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html) 

## Spesifikasi Kelas Node
<a name="auto-node-class-spec"></a>

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: my-node-class
spec:
  # Required fields

  # role and instanceProfile are mutually exclusive fields.
  role: MyNodeRole  # IAM role for EC2 instances
  # instanceProfile: eks-MyNodeInstanceProfile  # IAM instance-profile for EC2 instances

  subnetSelectorTerms:
    - tags:
        Name: "private-subnet"
        kubernetes.io/role/internal-elb: "1"
    # Alternative using direct subnet ID
    # - id: "subnet-0123456789abcdef0"

  securityGroupSelectorTerms:
    - tags:
        Name: "eks-cluster-sg"
    # Alternative approaches:
    # - id: "sg-0123456789abcdef0"
    # - name: "eks-cluster-security-group"

  # Optional: Pod subnet selector for advanced networking
  podSubnetSelectorTerms:
    - tags:
        Name: "pod-subnet"
        kubernetes.io/role/pod: "1"
    # Alternative using direct subnet ID
    # - id: "subnet-0987654321fedcba0"
  # must include Pod security group selector also
  podSecurityGroupSelectorTerms:
    - tags:
        Name: "eks-pod-sg"
    # Alternative using direct security group ID
    # - id: "sg-0123456789abcdef0"

  # Optional: Selects on-demand capacity reservations and capacity blocks
  # for EKS Auto Mode to prioritize.
  capacityReservationSelectorTerms:
    - id: cr-56fac701cc1951b03
    # Alternative Approaches
    - tags:
        Name: "targeted-odcr"
      # Optional owning account ID filter
      owner: "012345678901"

  # Optional fields
  snatPolicy: Random  # or Disabled

  networkPolicy: DefaultAllow  # or DefaultDeny
  networkPolicyEventLogs: Disabled  # or Enabled

  ephemeralStorage:
    size: "80Gi"    # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T
    iops: 3000      # Range: 3000-16000
    throughput: 125 # Range: 125-1000
    # Optional KMS key for encryption
    kmsKeyID: "arn:aws: kms:region:account:key/key-id"
    # Accepted formats:
    # KMS Key ID
    # KMS Key ARN
    # Key Alias Name
    # Key Alias ARN

  advancedNetworking:
    # Optional: Controls whether public IP addresses are assigned to instances that are launched with the nodeclass.
    # If not set, defaults to the MapPublicIpOnLaunch setting on the subnet.
    associatePublicIPAddress: false

    # Optional: Forward proxy, commonly requires certificateBundles as well
    # for EC2, see https://repost.aws/knowledge-center/eks-http-proxy-containerd-automation
    httpsProxy: http://192.0.2.4:3128 #commonly port 3128 (Squid) or 8080 (NGINX) #Max 255 characters
    #httpsProxy: http://[2001:db8::4]:3128 # IPv6 address with port, use []
    noProxy: #Max 50 entries
        - localhost #Max 255 characters each
        - 127.0.0.1
        #- ::1 # IPv6 localhost
        #- 0:0:0:0:0:0:0:1 # IPv6 localhost
        - 169.254.169.254 # EC2 Instance Metadata Service
        #- [fd00:ec2::254] # IPv6 EC2 Instance Metadata Service
        # Domains to exclude, put all VPC endpoints here
        - .internal
        - .eks.amazonaws.com
    # ipv4PrefixSize is default to Auto which is prefix and fallback to secondary IP. "32" is the secondary IP mode.
    ipv4PrefixSize: Auto # or "32"

    # enableV4Egress is default to true. Setting it to false when using network policy or blocking IPv4 traffic in IPv6 clusters
    enableV4Egress: false

  advancedSecurity:
    # Optional, US regions only: Specifying `fips: true` will cause nodes in the nodeclass to run FIPS compatible AMIs.
    fips: false

  # Optional: Custom certificate bundles.
  certificateBundles:
    - name: "custom-cert"
      data: "base64-encoded-cert-data"

  # Optional: Additional EC2 tags (with restrictions)
  tags:
    Environment: "production"
    Team: "platform"
    # Note: Cannot use restricted tags like:
    # - kubernetes.io/cluster/*
    # - karpenter.sh/provisioner-name
    # - karpenter.sh/nodepool
    # - karpenter.sh/nodeclaim
    # - karpenter.sh/managed-by
    # - eks.amazonaws.com/nodeclass
```

## Pertimbangan-pertimbangan
<a name="_considerations"></a>
+ Jika Anda ingin memverifikasi berapa banyak penyimpanan lokal yang dimiliki sebuah instans, Anda dapat menjelaskan node untuk melihat sumber daya penyimpanan sementara.
+  **Enkripsi Volume** - EKS menggunakan kunci KMS kustom yang dikonfigurasi untuk mengenkripsi volume root read-only dari instance dan volume data. read/write 
+  **Ganti peran IAM node** - Jika Anda mengubah peran IAM node yang terkait dengan a`NodeClass`, Anda harus membuat Entri Akses baru. EKS secara otomatis membuat Entri Akses untuk peran IAM node selama pembuatan cluster. Peran IAM node memerlukan Kebijakan Akses `AmazonEKSAutoNodePolicy` EKS. Untuk informasi selengkapnya, lihat [Berikan akses kepada pengguna IAM ke Kubernetes dengan entri akses EKS](access-entries.md).
+  **Kepadatan Pod maksimum** - EKS membatasi jumlah maksimum Pod pada sebuah node menjadi 110. Batas ini diterapkan setelah perhitungan Max Pod yang ada. Untuk informasi selengkapnya, lihat [Pilih jenis instans node Amazon EC2 yang optimal](choosing-instance-type.md).
+  **Tag** - Jika Anda ingin menyebarkan tag dari Kubernetes ke EC2, Anda perlu mengonfigurasi izin IAM tambahan. Untuk informasi selengkapnya, lihat [Pelajari tentang identitas dan akses dalam Mode Otomatis EKS](auto-learn-iam.md).
+  **Kelas node default** - Jangan beri nama kelas node kustom Anda`default`. Ini karena Mode Otomatis EKS menyertakan `NodeClass` panggilan `default` yang secara otomatis disediakan ketika Anda mengaktifkan setidaknya satu built-in. `NodePool` Untuk informasi tentang mengaktifkan bawaan`NodePools`, lihat[Aktifkan atau Nonaktifkan Built-in NodePools](set-builtin-node-pools.md).
+  **`subnetSelectorTerms`perilaku dengan beberapa subnet** - Jika ada beberapa subnet yang cocok dengan `subnetSelectorTerms` kondisi atau yang Anda berikan oleh ID, Mode Otomatis EKS membuat node yang didistribusikan di seluruh subnet.
  + Jika subnet berada di Availability Zones (AZs) yang berbeda, Anda dapat menggunakan fitur Kubernetes seperti [kendala penyebaran topologi Pod dan Topology Aware Routing untuk menyebarkan](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#pod-topology-spread-constraints) [Pod](https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing/) dan lalu lintas di seluruh zona.
  + Jika ada beberapa subnet *dalam AZ yang sama yang* cocok dengan`subnetSelectorTerms`, Mode Otomatis EKS membuat Pod pada setiap node yang didistribusikan di seluruh subnet di AZ tersebut. Mode Otomatis EKS membuat antarmuka jaringan sekunder pada setiap node di subnet lain di AZ yang sama. Ini memilih berdasarkan jumlah alamat IP yang tersedia di setiap subnet, untuk menggunakan subnet lebih efisien. Namun, Anda tidak dapat menentukan subnet EKS Auto Mode mana yang digunakan untuk setiap Pod; jika Anda membutuhkan Pod untuk berjalan di subnet tertentu, gunakan [Pisahkan subnet dan grup keamanan untuk Pod](#pod-subnet-selector) saja.

## Pisahkan subnet dan grup keamanan untuk Pod
<a name="pod-subnet-selector"></a>

`podSecurityGroupSelectorTerms`Bidang `podSubnetSelectorTerms` and memungkinkan konfigurasi jaringan tingkat lanjut dengan memungkinkan Pod menggunakan subnet dan grup keamanan yang berbeda dari node mereka. Kedua bidang harus ditentukan bersama. Pemisahan ini memberikan kontrol yang ditingkatkan atas perutean lalu lintas jaringan dan kebijakan keamanan.

**catatan**  
Fitur ini berbeda dengan fitur [Security Groups for Pods](security-groups-for-pods.md) (SGPP) yang digunakan dengan AWS VPC CNI untuk komputasi Mode Otomatis non-EKS. SGPP tidak didukung dalam Mode Otomatis EKS. Sebagai gantinya, gunakan `podSecurityGroupSelectorTerms` in `NodeClass` untuk menerapkan grup keamanan terpisah ke lalu lintas Pod. Grup keamanan berlaku pada `NodeClass` level tersebut, artinya semua Pod pada node yang `NodeClass` menggunakan grup keamanan Pod yang sama.

### Cara kerjanya
<a name="_how_it_works"></a>

Saat Anda mengkonfigurasi `podSubnetSelectorTerms` dan`podSecurityGroupSelectorTerms`:

1. ENI primer node menggunakan subnet dan grup keamanan dari `subnetSelectorTerms` dan`securityGroupSelectorTerms`. Hanya alamat IP node sendiri yang ditetapkan ke antarmuka ini.

1. Mode Otomatis EKS menciptakan sekunder ENIs dalam pencocokan subnet`podSubnetSelectorTerms`, dengan grup keamanan dari `podSecurityGroupSelectorTerms` terpasang. Alamat IP Pod dialokasikan dari sekunder ini ENIs menggunakan awalan /28 secara default, dengan fallback otomatis ke sekunder IPs (/32) ketika blok awalan yang berdekatan tidak tersedia. Jika `ipv4PrefixSize` diatur ke `"32"` in`advancedNetworking`, hanya sekunder IPs yang digunakan.

1. Grup keamanan yang ditentukan `podSecurityGroupSelectorTerms` berlaku untuk lalu lintas Pod di dalam VPC. Untuk lalu lintas yang ditujukan di luar VPC, Pod menggunakan ENI primer node (dan grup keamanannya) karena terjemahan alamat jaringan sumber (SNAT) menerjemahkan IP Pod ke IP node. Anda dapat mengubah perilaku ini dengan `snatPolicy` bidang di`NodeClass`.

### Kasus penggunaan
<a name="_use_cases"></a>

Gunakan `podSubnetSelectorTerms` dan `podSecurityGroupSelectorTerms` kapan Anda perlu:
+ Terapkan grup keamanan yang berbeda untuk mengontrol lalu lintas node dan Pod secara terpisah.
+ Pisahkan lalu lintas infrastruktur (node-to-node komunikasi) dari lalu lintas aplikasi (Pod-to-Pod komunikasi).
+ Menerapkan konfigurasi jaringan yang berbeda ke subnet node daripada subnet Pod.
+ Konfigurasikan proxy terbalik atau pemfilteran jaringan khusus untuk lalu lintas node tanpa memengaruhi lalu lintas Pod. Gunakan `advancedNetworking` dan `certificateBundles` untuk menentukan proxy terbalik Anda dan sertifikat yang ditandatangani sendiri atau pribadi untuk proxy.

### Contoh konfigurasi
<a name="_example_configuration"></a>

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: advanced-networking
spec:
  role: MyNodeRole

  # Subnets and security groups for EC2 instances (nodes)
  subnetSelectorTerms:
    - tags:
        Name: "node-subnet"
        kubernetes.io/role/internal-elb: "1"

  securityGroupSelectorTerms:
    - tags:
        Name: "eks-cluster-sg"

  # Separate subnets and security groups for Pods
  podSubnetSelectorTerms:
    - tags:
        Name: "pod-subnet"
        kubernetes.io/role/pod: "1"

  podSecurityGroupSelectorTerms:
  - tags:
      Name: "eks-pod-sg"
```

### Pertimbangan untuk subnet Pod dan grup keamanan terpisah
<a name="_considerations_for_separate_pod_subnets_and_security_groups"></a>
+  **Lingkup grup keamanan**: Grup keamanan dari `podSecurityGroupSelectorTerms` dilampirkan ke sekunder ENIs dan berlaku untuk lalu lintas Pod di dalam VPC. Ketika SNAT diaktifkan (default`snatPolicy: Random`), lalu lintas yang meninggalkan VPC diterjemahkan ke alamat IP ENI utama node, sehingga grup `securityGroupSelectorTerms` keamanan node diterapkan ke lalu lintas itu sebagai gantinya. Jika Anda mengatur`snatPolicy: Disabled`, Pod menggunakan alamat IP mereka sendiri untuk semua lalu lintas, dan Anda harus memastikan bahwa routing dan grup keamanan dikonfigurasi sesuai dengan itu.
+  **NodeClass-level granularity**: Grup keamanan Pod berlaku untuk semua Pod yang dijadwalkan pada node menggunakan. `NodeClass` Untuk menerapkan grup keamanan yang berbeda ke beban kerja yang berbeda, buat `NodePool` sumber daya terpisah `NodeClass` dan gunakan taint, toleransi, atau pemilih node untuk menjadwalkan beban kerja ke node yang sesuai.
+  **Mengurangi kepadatan Pod**: Lebih sedikit Pod yang dapat berjalan pada setiap node karena antarmuka jaringan utama node dicadangkan untuk IP node dan tidak dapat digunakan untuk Pod.
+  **Batasan pemilih subnet**: Standar `subnetSelectorTerms` dan `securityGroupSelectorTerms` konfigurasi tidak berlaku untuk subnet Pod atau pemilihan grup keamanan.
+  **Perencanaan jaringan**: Pastikan ruang alamat IP yang memadai di subnet node dan Pod untuk mendukung kebutuhan beban kerja Anda.
+  **Konfigurasi routing**: Verifikasi bahwa tabel rute dan Network Access Control List (ACL) dari subnet Pod dikonfigurasi dengan benar untuk komunikasi antara subnet node dan Pod.
+  **Availability Zones**: Verifikasi bahwa Anda telah membuat subnet Pod di beberapa AZs subnet. Jika Anda menggunakan subnet Pod tertentu, subnet tersebut harus berada di AZ yang sama dengan subnet node AZ.

## Mode IP Sekunder untuk Pod
<a name="secondary-IP-mode"></a>

`ipv4PrefixSize`Bidang ini memungkinkan konfigurasi jaringan lanjutan dengan mengalokasikan hanya alamat IP sekunder ke node. Fitur ini tidak mengalokasikan awalan (/28) ke node dan hanya mempertahankan satu IP sekunder sebagai Minimal. IPTarget

### Kasus penggunaan
<a name="_use_cases_2"></a>

Gunakan `ipv4PrefixSize` saat Anda perlu:
+  **Pengurangan pemanfaatan IP**: Hanya satu alamat IP yang akan dihangatkan di setiap node.
+  **Tingkat churning pod yang lebih rendah**: Kecepatan pembuatan pod bukanlah masalah utama.
+  **Tidak ada fragmentasi awalan: Fragmentasi** yang disebabkan oleh awalan adalah perhatian utama atau pemblokir untuk menggunakan Mode Otomatis.

### Contoh konfigurasi
<a name="_example_configuration_2"></a>

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: advanced-networking
spec:
  role: MyNodeRole

  advancedNetworking:
    ipv4PrefixSize: "32"
```

### Pertimbangan untuk mode IP sekunder
<a name="_considerations_for_secondary_ip_mode"></a>
+  **Kecepatan pembuatan Pod yang berkurang**: Karena hanya satu IP sekunder yang dihangatkan, layanan IPAM membutuhkan lebih banyak waktu untuk menyediakan IPs ketika lebih banyak pod dibuat.

## IPv4 Nonaktifkan jalan keluar dari IPv6 pod dalam IPv6 cluster.
<a name="enableV4Egress"></a>

`enableV4Egress`Bidang ini secara `true` default. Untuk IPv6 kluster Mode Otomatis, fitur ini dapat dinonaktifkan sehingga Mode Otomatis tidak akan membuat antarmuka khusus egres untuk pod IPv4 . IPv6 Ini penting karena antarmuka jalan IPv4 keluar tidak tunduk pada penegakan Kebijakan Jaringan. Kebijakan jaringan hanya diberlakukan pada antarmuka utama Pod (eth0).

### Kasus penggunaan
<a name="_use_cases_3"></a>

Gunakan `enableV4Egress` saat Anda perlu:
+  **Gunakan IPv6 Cluster** IPv4 : lalu lintas keluar diizinkan secara default.
+  **Gunakan Kebijakan Jaringan**: Saat ini Kebijakan Jaringan EKS tidak mendukung tumpukan ganda. Menonaktifkan `enableV4Egress` dapat mencegah lalu lintas pod keluar secara tak terduga. IPv4 

### Contoh konfigurasi
<a name="_example_configuration_3"></a>

```
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: advanced-networking
spec:
  role: MyNodeRole

  advancedNetworking:
    enableV4Egress: false
```

### Pertimbangan untuk menonaktifkan EnableV4eGress
<a name="_considerations_for_disabling_enablev4egress"></a>
+  **Kebijakan Jaringan di IPv6 Cluster: IPv6 cluster** mengizinkan IPv4 lalu lintas secara default. Pengaturan `enableV4Egress: false` memblokir IPv4 lalu lintas keluar, memberikan keamanan yang ditingkatkan terutama ketika digunakan dengan Kebijakan Jaringan.