|
| 1 | +--- |
| 2 | +title: Penyetelan Kinerja Penjadwal |
| 3 | +content_template: templates/concept |
| 4 | +weight: 70 |
| 5 | +--- |
| 6 | + |
| 7 | +{{% capture overview %}} |
| 8 | + |
| 9 | +{{< feature-state for_k8s_version="v1.14" state="beta" >}} |
| 10 | + |
| 11 | +[kube-scheduler](/docs/concepts/scheduling/kube-scheduler/#kube-scheduler) |
| 12 | +merupakan penjadwal (_scheduler_) Kubernetes bawaan yang bertanggung jawab |
| 13 | +terhadap penempatan Pod-Pod pada seluruh Node di dalam sebuah klaster. |
| 14 | + |
| 15 | +Node-Node di dalam klaster yang sesuai dengan syarat-syarat penjadwalan dari |
| 16 | +sebuah Pod disebut sebagai Node-Node layak (_feasible_). Penjadwal mencari Node-Node |
| 17 | +layak untuk sebuah Pod dan kemudian menjalankan fungsi-fungsi untuk menskor Node-Node tersebut, memilih sebuah Node dengan skor tertinggi di antara |
| 18 | +Node-Node layak lainnya, di mana Pod akan dijalankan. Penjadwal kemudian memberitahu |
| 19 | +API server soal keputusan ini melalui sebuah proses yang disebut _Binding_. |
| 20 | + |
| 21 | +Laman ini menjelaskan optimasi penyetelan (_tuning_) kinerja yang relevan |
| 22 | +untuk klaster Kubernetes berskala besar. |
| 23 | + |
| 24 | +{{% /capture %}} |
| 25 | + |
| 26 | +{{% capture body %}} |
| 27 | + |
| 28 | +Pada klaster berskala besar, kamu bisa menyetel perilaku penjadwal |
| 29 | +untuk menyeimbangkan hasil akhir penjadwalan antara latensi (seberapa cepat Pod-Pod baru ditempatkan) |
| 30 | +dan akurasi (seberapa akurat penjadwal membuat keputusan penjadwalan yang tepat). |
| 31 | + |
| 32 | +Kamu bisa mengonfigurasi setelan ini melalui pengaturan `percentageOfNodesToScore` pada kube-scheduler. |
| 33 | +Pengaturan KubeSchedulerConfiguration ini menentukan sebuah ambang batas untuk |
| 34 | +penjadwalan Node-Node di dalam klaster kamu. |
| 35 | + |
| 36 | +### Pengaturan Ambang Batas |
| 37 | + |
| 38 | +Opsi `percentageOfNodesToScore` menerima semua angka numerik antara 0 dan 100. |
| 39 | +Angka 0 adalah angka khusus yang menandakan bahwa kube-scheduler harus menggunakan |
| 40 | +nilai bawaan. |
| 41 | +Jika kamu mengatur `percentageOfNodesToScore` dengan angka di atas 100, kube-scheduler |
| 42 | +akan membulatkan ke bawah menjadi 100. |
| 43 | + |
| 44 | +Untuk mengubah angkanya, sunting berkas konfigurasi kube-scheduler (biasanya `/etc/kubernetes/config/kube-scheduler.yaml`), |
| 45 | +lalu _ulang kembali_ kube-scheduler. |
| 46 | + |
| 47 | +Setelah kamu selesai menyunting, jalankan perintah |
| 48 | +```bash |
| 49 | +kubectl get componentstatuses |
| 50 | +``` |
| 51 | +untuk memverifikasi komponen kube-scheduler berjalan dengan baik (_healthy_). Keluarannya kira-kira seperti ini: |
| 52 | +``` |
| 53 | +NAME STATUS MESSAGE ERROR |
| 54 | +controller-manager Healthy ok |
| 55 | +scheduler Healthy ok |
| 56 | +... |
| 57 | +``` |
| 58 | + |
| 59 | +## Ambang Batas Penskoran Node {#persentase-penskoran-node} |
| 60 | + |
| 61 | +Untuk meningkatan kinerja penjadwalan, kube-scheduler dapat berhenti mencari |
| 62 | +Node-Node yang layak saat sudah berhasil menemukannya. Pada klaster berskala besar, |
| 63 | +hal ini menghemat waktu dibandingkan dengan pendekatan awam yang mengecek setiap Node. |
| 64 | + |
| 65 | +Kamu bisa mengatur ambang batas untuk menentukan berapa banyak jumlah Node minimal yang dibutuhkan, sebagai |
| 66 | +persentase bagian dari seluruh Node di dalam klaster kamu. kube-scheduler akan mengubahnya menjadi |
| 67 | +bilangan bulat berisi jumlah Node. Saat penjadwalan, jika kube-scheduler mengidentifikasi |
| 68 | +cukup banyak Node-Node layak untuk melewati jumlah persentase yang diatur, maka kube-scheduler |
| 69 | +akan berhenti mencari Node-Node layak dan lanjut ke [fase penskoran] (/docs/concepts/scheduling/kube-scheduler/#kube-scheduler-implementation). |
| 70 | + |
| 71 | +[Bagaimana penjadwal mengecek Node](#bagaimana-penjadwal-mengecek-node) menjelaskan proses ini secara detail. |
| 72 | + |
| 73 | +### Ambang Batas Bawaan |
| 74 | + |
| 75 | +Jika kamu tidak mengatur sebuah ambang batas, maka Kubernetes akan |
| 76 | +menghitung sebuah nilai menggunakan pendekatan linier, yaitu 50% untuk klaster dengan 100 Node, |
| 77 | +serta 10% untuk klaster dengan 5000 Node. |
| 78 | + |
| 79 | +Artinya, kube-scheduler selalu menskor paling tidak 5% dari klaster kamu, terlepas dari |
| 80 | +seberapa besar klasternya, kecuali kamu secara eksplisit mengatur `percentageOfNodesToScore` |
| 81 | +menjadi lebih kecil dari 5. |
| 82 | + |
| 83 | +Jika kamu ingin penjadwal untuk memasukkan seluruh Node di dalam klaster ke dalam penskoran, |
| 84 | +maka aturlah `percentageOfNodesToScore` menjadi 100. |
| 85 | + |
| 86 | +## Contoh |
| 87 | + |
| 88 | +Contoh konfigurasi di bawah ini mengatur `percentageOfNodesToScore` menjadi 50%. |
| 89 | + |
| 90 | +```yaml |
| 91 | +apiVersion: kubescheduler.config.k8s.io/v1alpha1 |
| 92 | +kind: KubeSchedulerConfiguration |
| 93 | +algorithmSource: |
| 94 | + provider: DefaultProvider |
| 95 | + |
| 96 | +... |
| 97 | + |
| 98 | +percentageOfNodesToScore: 50 |
| 99 | +``` |
| 100 | +
|
| 101 | +
|
| 102 | +## Menyetel percentageOfNodesToScore |
| 103 | +
|
| 104 | +`percentageOfNodesToScore` merupakan angka 1 sampai 100 dengan |
| 105 | +nilai bawaan yang dihitung berdasarkan ukuran klaster. Di sini juga terdapat |
| 106 | +batas bawah yang telah ditetapkan, yaitu 50 Node. |
| 107 | + |
| 108 | +{{< note >}}Pada klaster dengan kurang dari 50 Node layak, penjadwal masih |
| 109 | +terus memeriksa seluruh Node karena Node-Node layak belum mencukupi supaya |
| 110 | +penjadwal dapat menghentikan proses pencarian lebih awal. |
| 111 | + |
| 112 | +Pada klaster kecil, jika kamu mengatur `percentageOfNodesToScore` dengan angka kecil, |
| 113 | +pengaturan ini hampir atau sama sekali tidak berpengaruh, karena alasan yang sama. |
| 114 | + |
| 115 | +Jika klaster kamu punya ratusan Node, gunakan angka bawaan untuk opsi konfigurasi ini. |
| 116 | +Mengubah angkanya kemungkinan besar tidak akan mengubah kinerja penjadwal secara berarti. |
| 117 | +{{< /note >}} |
| 118 | + |
| 119 | +Sebuah catatan penting yang perlu dipertimbangkan saat mengatur angka ini adalah |
| 120 | +ketika klaster dengan jumlah Node sedikit diperiksa untuk kelayakan, beberapa Node |
| 121 | +tidak dikirim untuk diskor bagi sebuah Pod. Hasilnya, sebuah Node yang mungkin memiliki |
| 122 | +nilai lebih tinggi untuk menjalankan Pod tersebut bisa saja tidak diteruskan ke fase penskoran. |
| 123 | +Hal ini berdampak pada penempatan Pod yang kurang ideal. |
| 124 | + |
| 125 | +Kamu sebaiknya menghindari pengaturan `percentageOfNodesToScore` menjadi sangat rendah, |
| 126 | +agar kube-scheduler tidak seringkali membuat keputusan penempatan Pod yang buruk. |
| 127 | +Hindari pengaturan persentase di bawah 10%, kecuali _throughput_ penjadwal sangat penting |
| 128 | +untuk aplikasi kamu dan skor dari Node tidak begitu penting. Dalam kata lain, kamu |
| 129 | +memilih untuk menjalankan Pod pada Node manapun selama Node tersebut layak. |
| 130 | + |
| 131 | +## Bagaimana Penjadwal Mengecek Node |
| 132 | + |
| 133 | +Bagian ini ditujukan untuk kamu yang ingin mengerti bagaimana fitur ini bekerja secara internal. |
| 134 | + |
| 135 | +Untuk memberikan semua Node di dalam klaster sebuah kesempatan yang adil untuk |
| 136 | +dipertimbangkan dalam menjalankan Pod, penjadwal mengecek Node satu persatu |
| 137 | +secara _round robin_. Kamu dapat membayangkan Node-Node ada di dalam sebuah array. |
| 138 | +Penjadwal mulai dari indeks array pertama dan mengecek kelayakan dari Node sampai |
| 139 | +jumlahnya telah mencukupi sesuai dengan `percentageOfNodesToScore`. Untuk Pod berikutnya, |
| 140 | +penjadwal melanjutkan dari indeks array Node yang terhenti ketika memeriksa |
| 141 | +kelayakan Node-Node untuk Pod sebelumnya. |
| 142 | + |
| 143 | +Jika Node-Node berada di beberapa zona, maka penjadwal akan mengecek Node satu persatu |
| 144 | +pada seluruh zona untuk memastikan bahwa Node-Node dari zona berbeda masuk dalam pertimbangan |
| 145 | +kelayakan. Sebagai contoh, ada 6 Node di dalam 2 zona: |
| 146 | + |
| 147 | +``` |
| 148 | +Zona 1: Node 1, Node 2, Node 3, Node 4 |
| 149 | +Zona 2: Node 5, Node 6 |
| 150 | +``` |
| 151 | + |
| 152 | +Penjadwal mempertimbangkan kelayakan dari Node-Node tersebut dengan urutan berikut: |
| 153 | + |
| 154 | +``` |
| 155 | +Node 1, Node 5, Node 2, Node 6, Node 3, Node 4 |
| 156 | +``` |
| 157 | + |
| 158 | +Setelah semua Node telah dicek, penjadwal akan kembali pada Node 1. |
| 159 | + |
| 160 | +{{% /capture %}} |
0 commit comments