

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan grup simpul
<a name="general-nodegroups"></a>

## Membuat nodegroup
<a name="_creating_nodegroups"></a>

Anda dapat menambahkan satu atau beberapa nodegroup selain nodegroup awal yang dibuat bersama dengan cluster.

Untuk membuat nodegroup tambahan, gunakan:

```
eksctl create nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

**catatan**  
 `--version`flag tidak didukung untuk nodegroup terkelola. Itu selalu mewarisi versi dari bidang kontrol.

Secara default, nodegroup baru yang tidak dikelola mewarisi versi dari control plane (`--version=auto`), tetapi Anda dapat menentukan versi yang berbeda, Anda juga dapat menggunakan `--version=latest` untuk memaksa penggunaan versi mana pun yang terbaru.

Selain itu, Anda dapat menggunakan file konfigurasi yang sama yang digunakan untuk`eksctl create cluster`:

```
eksctl create nodegroup --config-file=<path>
```

### Membuat nodegroup dari file konfigurasi
<a name="_creating_a_nodegroup_from_a_config_file"></a>

Nodegroups juga dapat dibuat melalui definisi cluster atau file konfigurasi. Diberikan contoh file konfigurasi berikut dan cluster yang ada disebut`dev-cluster`:

```
# dev-cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: eu-north-1

managedNodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: m5.xlarge
    desiredCapacity: 10
    volumeSize: 80
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    volumeSize: 100
    privateNetworking: true
```

Nodegroups `ng-1-workers` dan `ng-2-builders` dapat dibuat dengan perintah ini:

```
eksctl create nodegroup --config-file=dev-cluster.yaml
```

#### Penyeimbangan Beban
<a name="_load_balancing"></a>

Jika Anda sudah siap untuk melampirkan grup or/and target penyeimbang beban klasik yang ada ke nodegroups, Anda dapat menentukannya di file konfigurasi. Grup or/and target penyeimbang beban klasik secara otomatis dikaitkan dengan ASG saat membuat nodegroup. Ini hanya didukung untuk nodegroup yang dikelola sendiri yang ditentukan melalui bidang. `nodeGroups`

```
# dev-cluster-with-lb.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: eu-north-1

nodeGroups:
  - name: ng-1-web
    labels: { role: web }
    instanceType: m5.xlarge
    desiredCapacity: 10
    privateNetworking: true
    classicLoadBalancerNames:
      - dev-clb-1
      - dev-clb-2
    asgMetricsCollection:
      - granularity: 1Minute
        metrics:
          - GroupMinSize
          - GroupMaxSize
          - GroupDesiredCapacity
          - GroupInServiceInstances
          - GroupPendingInstances
          - GroupStandbyInstances
          - GroupTerminatingInstances
          - GroupTotalInstances
  - name: ng-2-api
    labels: { role: api }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    privateNetworking: true
    targetGroupARNs:
      - arn:aws:elasticloadbalancing:eu-north-1:01234567890:targetgroup/dev-target-group-1/abcdef0123456789
```

## Pemilihan nodegroup dalam file konfigurasi
<a name="_nodegroup_selection_in_config_files"></a>

Untuk melakukan `delete` operasi `create` atau hanya pada subset dari nodegroup yang ditentukan dalam file konfigurasi, ada dua flag CLI yang menerima daftar gumpalan, dan, misalnya: `0` `1`

```
eksctl create nodegroup --config-file=<path> --include='ng-prod-*-??' --exclude='ng-test-1-ml-a,ng-test-2-?'
```

Menggunakan contoh file konfigurasi di atas, seseorang dapat membuat semua nodegroup pekerja kecuali pekerja dengan perintah berikut:

```
eksctl create nodegroup --config-file=dev-cluster.yaml --exclude=ng-1-workers
```

Atau seseorang dapat menghapus nodegroup pembangun dengan:

```
eksctl delete nodegroup --config-file=dev-cluster.yaml --include=ng-2-builders --approve
```

Dalam hal ini, kita juga perlu menyediakan `--approve` perintah untuk benar-benar menghapus nodegroup.

### Sertakan dan kecualikan aturan
<a name="node-include"></a>
+ jika tidak `--exclude` ada `--include` atau ditentukan semuanya disertakan
+ jika hanya `--include` ditentukan, hanya grup simpul yang cocok dengan gumpalan tersebut yang akan disertakan
+ jika hanya `--exclude` ditentukan, semua nodegroup yang tidak cocok dengan gumpalan tersebut disertakan
+ jika keduanya ditentukan maka `--exclude` aturan lebih diutamakan `--include` (yaitu nodegroup yang cocok dengan aturan di kedua grup akan dikecualikan)

## Daftar nodegroup
<a name="_listing_nodegroups"></a>

Untuk mencantumkan detail tentang nodegroup atau semua nodegroup, gunakan:

```
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

Untuk mencantumkan satu atau beberapa nodegroup dalam format YAMB atau JSON, yang menampilkan lebih banyak info daripada tabel log default, gunakan:

```
# YAML format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=yaml

# JSON format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=json
```

## Kekekalan nodegroup
<a name="_nodegroup_immutability"></a>

Secara desain, nodegroup tidak dapat diubah. Ini berarti bahwa jika Anda perlu mengubah sesuatu (selain penskalaan) seperti AMI atau tipe instance nodegroup, Anda perlu membuat nodegroup baru dengan perubahan yang diinginkan, memindahkan beban dan menghapus yang lama. Lihat bagian [Menghapus dan menguras nodegroups](#nodegroup-delete).

## Penskalaan nodegroup
<a name="_scaling_nodegroups"></a>

Penskalaan nodegroup adalah proses yang dapat memakan waktu hingga beberapa menit. Ketika `--wait` flag tidak ditentukan, `eksctl` secara optimis mengharapkan nodegroup untuk diskalakan dan kembali segera setelah permintaan AWS API dikirim. Untuk `eksctl` menunggu sampai node tersedia, tambahkan `--wait` bendera seperti contoh di bawah ini.

**catatan**  
Penskalaan nodegroup down/in (yaitu mengurangi jumlah node) dapat mengakibatkan kesalahan karena kami hanya mengandalkan perubahan pada ASG. Ini berarti bahwa node yang removed/terminated tidak terkuras secara eksplisit. Ini mungkin area untuk perbaikan di masa depan.

Penskalaan nodegroup terkelola dicapai dengan langsung memanggil EKS API yang memperbarui konfigurasi grup node terkelola.

### Menskalakan satu nodegroup
<a name="_scaling_a_single_nodegroup"></a>

Sebuah nodegroup dapat diskalakan dengan menggunakan perintah: `eksctl scale nodegroup`

```
eksctl scale nodegroup --cluster=<clusterName> --nodes=<desiredCount> --name=<nodegroupName> [ --nodes-min=<minSize> ] [ --nodes-max=<maxSize> ] --wait
```

Misalnya, untuk menskalakan nodegroup `ng-a345f4e1` `cluster-1` menjadi 5 node, jalankan:

```
eksctl scale nodegroup --cluster=cluster-1 --nodes=5 ng-a345f4e1
```

Sebuah nodegroup juga dapat diskalakan dengan menggunakan file konfigurasi yang diteruskan ke `--config-file` dan menentukan nama nodegroup yang harus diskalakan dengan. `--name` Eksctl akan mencari file konfigurasi dan menemukan nodegroup serta nilai konfigurasi penskalaannya.

Jika jumlah node yang diinginkan `NOT` berada dalam kisaran minimum saat ini dan jumlah maksimum node saat ini, satu kesalahan spesifik akan ditampilkan. Nilai-nilai ini juga dapat diteruskan dengan flag `--nodes-min` dan `--nodes-max` masing-masing.

### Menskalakan beberapa nodegroup
<a name="_scaling_multiple_nodegroups"></a>

Eksctl dapat menemukan dan menskalakan semua nodegroup yang ditemukan dalam file konfigurasi yang diteruskan. `--config-file`

Demikian pula dengan penskalaan satu nodegroup, kumpulan validasi yang sama berlaku untuk setiap nodegroup. Misalnya, jumlah node yang diinginkan harus berada dalam kisaran jumlah node minimum dan maksimum.

## Menghapus dan menguras nodegroups
<a name="nodegroup-delete"></a>

Untuk menghapus nodegroup, jalankan:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

 [Termasuk dan kecualikan aturan](#node-include) juga dapat digunakan dengan perintah ini.

**catatan**  
Ini akan menguras semua pod dari nodegroup tersebut sebelum instance dihapus.

Untuk melewati aturan penggusuran selama proses pembuangan, jalankan:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Semua node dikepung dan semua pod dikeluarkan dari nodegroup saat dihapus, tetapi jika Anda perlu menguras nodegroup tanpa menghapusnya, jalankan:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

Untuk membuka kordon nodegroup, jalankan:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --undo
```

Untuk mengabaikan aturan penggusuran seperti PodDisruptionBudget pengaturan, jalankan:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Untuk mempercepat proses pembuangan, Anda dapat menentukan `--parallel <value>` jumlah node yang akan mengalir secara paralel.

## Fitur lainnya
<a name="_other_features"></a>

Anda juga dapat mengaktifkan SSH, akses ASG, dan fitur lainnya untuk nodegroup, misalnya:

```
eksctl create nodegroup --cluster=cluster-1 --node-labels="autoscaling=enabled,purpose=ci-worker" --asg-access --full-ecr-access --ssh-access
```

### Perbarui label
<a name="_update_labels"></a>

Tidak ada perintah khusus `eksctl` untuk memperbarui label nodegroup, tetapi dapat dengan mudah dicapai dengan menggunakan`kubectl`, misalnya:

```
kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo
```

### Akses SSH
<a name="_ssh_access"></a>

Anda dapat mengaktifkan akses SSH untuk nodegroups dengan mengonfigurasi salah satu dari`publicKey`, `publicKeyName` dan `publicKeyPath` dalam konfigurasi nodegroup Anda. Atau Anda dapat menggunakan [AWS Systems Manager (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli) ke SSH ke node, dengan mengonfigurasi nodegroup dengan: `enableSsm`

```
managedNodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import public key from file
      publicKeyPath: ~/.ssh/id_rsa_tests.pub
  - name: ng-2
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # use existing EC2 key
      publicKeyName: ec2_dev_key
  - name: ng-3
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import inline public key
      publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqZEdzvHnK/GVP8nLngRHu/GDi/3PeES7+Bx6l3koXn/Oi/UmM9/jcW5XGziZ/oe1cPJ777eZV7muEvXg5ZMQBrYxUtYCdvd8Rt6DIoSqDLsIPqbuuNlQoBHq/PU2IjpWnp/wrJQXMk94IIrGjY8QHfCnpuMENCucVaifgAhwyeyuO5KiqUmD8E0RmcsotHKBV9X8H5eqLXd8zMQaPl+Ub7j5PG+9KftQu0F/QhdFvpSLsHaxvBzA5nhIltjkaFcwGQnD1rpCM3+UnQE7Izoa5Yt1xoUWRwnF+L2TKovW7+bYQ1kxsuuiX149jXTCJDVjkYCqi7HkrXYqcC1sbsror someuser@hostname"
  - name: ng-4
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # enable SSH using SSM
      enableSsm: true
```