Skip to content

Commit 2f30632

Browse files
authored
Merge pull request #20240 from ariscahyadi/id-local-resource-bin-packing
ID Localization for Resource Bin Packing.
2 parents 13d870b + d8632ff commit 2f30632

File tree

1 file changed

+217
-0
lines changed

1 file changed

+217
-0
lines changed
Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
---
2+
title: Bin Packing Sumber Daya untuk Sumber Daya Tambahan
3+
content_template: templates/concept
4+
weight: 10
5+
---
6+
7+
{{% capture overview %}}
8+
9+
{{< feature-state for_k8s_version="1.16" state="alpha" >}}
10+
11+
_Kube-scheduler_ dapat dikonfigurasikan untuk mengaktifkan pembungkusan rapat
12+
(_bin packing_) sumber daya bersama dengan sumber daya tambahan melalui fungsi prioritas
13+
`RequestedToCapacityRatioResourceAllocation`. Fungsi-fungsi prioritas dapat digunakan
14+
untuk menyempurnakan _kube-scheduler_ sesuai dengan kebutuhan.
15+
16+
{{% /capture %}}
17+
18+
{{% capture body %}}
19+
20+
## Mengaktifkan _Bin Packing_ menggunakan RequestedToCapacityRatioResourceAllocation
21+
22+
Sebelum Kubernetes 1.15, _kube-scheduler_ digunakan untuk memungkinkan mencetak
23+
skor berdasarkan rasio permintaan terhadap kapasitas sumber daya utama seperti
24+
CPU dan Memori. Kubernetes 1.16 menambahkan parameter baru ke fungsi prioritas
25+
yang memungkinkan pengguna untuk menentukan sumber daya beserta dengan bobot
26+
untuk setiap sumber daya untuk memberi nilai dari Node berdasarkan rasio
27+
permintaan terhadap kapasitas. Hal ini memungkinkan pengguna untuk _bin pack_
28+
sumber daya tambahan dengan menggunakan parameter yang sesuai untuk meningkatkan
29+
pemanfaatan sumber daya yang langka dalam klaster yang besar. Perilaku
30+
`RequestedToCapacityRatioResourceAllocation` dari fungsi prioritas dapat
31+
dikontrol melalui pilihan konfigurasi yang disebut ` RequestToCapacityRatioArguments`.
32+
Argumen ini terdiri dari dua parameter yaitu `shape` dan `resources`. Shape
33+
memungkinkan pengguna untuk menyempurnakan fungsi menjadi yang paling tidak
34+
diminta atau paling banyak diminta berdasarkan nilai `utilization` dan `score`.
35+
Sumber daya terdiri dari `name` yang menentukan sumber daya mana yang dipertimbangkan
36+
selama penilaian dan `weight` yang menentukan bobot masing-masing sumber daya.
37+
38+
Di bawah ini adalah contoh konfigurasi yang menetapkan `requestedToCapacityRatioArguments`
39+
pada perilaku _bin packing_ untuk sumber daya tambahan` intel.com/foo` dan `intel.com/bar`
40+
41+
```json
42+
{
43+
"kind" : "Policy",
44+
"apiVersion" : "v1",
45+
46+
...
47+
48+
"priorities" : [
49+
50+
...
51+
52+
{
53+
"name": "RequestedToCapacityRatioPriority",
54+
"weight": 2,
55+
"argument": {
56+
"requestedToCapacityRatioArguments": {
57+
"shape": [
58+
{"utilization": 0, "score": 0},
59+
{"utilization": 100, "score": 10}
60+
],
61+
"resources": [
62+
{"name": "intel.com/foo", "weight": 3},
63+
{"name": "intel.com/bar", "weight": 5}
64+
]
65+
}
66+
}
67+
}
68+
],
69+
}
70+
```
71+
72+
**Fitur ini dinonaktifkan secara _default_**
73+
74+
### Tuning RequestedToCapacityRatioResourceAllocation Priority Function
75+
76+
`shape` digunakan untuk menentukan perilaku dari fungsi `RequestedToCapacityRatioPriority`.
77+
78+
```yaml
79+
{"utilization": 0, "score": 0},
80+
{"utilization": 100, "score": 10}
81+
```
82+
83+
Argumen di atas memberikan Node nilai 0 jika utilisasi 0% dan 10 untuk utilisasi 100%,
84+
yang kemudian mengaktfikan perilaku _bin packing_. Untuk mengaktifkan dari paling
85+
yang tidak diminta, nilainya harus dibalik sebagai berikut.
86+
87+
```yaml
88+
{"utilization": 0, "score": 100},
89+
{"utilization": 100, "score": 0}
90+
```
91+
92+
`resources` adalah parameter opsional yang secara _default_ diatur ke:
93+
94+
``` yaml
95+
"resources": [
96+
{"name": "CPU", "weight": 1},
97+
{"name": "Memory", "weight": 1}
98+
]
99+
```
100+
101+
Ini dapat digunakan untuk menambahkan sumber daya tambahan sebagai berikut:
102+
103+
```yaml
104+
"resources": [
105+
{"name": "intel.com/foo", "weight": 5},
106+
{"name": "CPU", "weight": 3},
107+
{"name": "Memory", "weight": 1}
108+
]
109+
```
110+
111+
Parameter `weight` adalah opsional dan diatur ke 1 jika tidak ditentukan.
112+
Selain itu, `weight` tidak dapat diatur ke nilai negatif.
113+
114+
### Bagaimana Fungsi Prioritas RequestedToCapacityRatioResourceAllocation Menilai Node
115+
116+
Bagian ini ditujukan bagi kamu yang ingin memahami secara detail internal
117+
dari fitur ini.
118+
Di bawah ini adalah contoh bagaimana nilai dari Node dihitung untuk satu kumpulan
119+
nilai yang diberikan.
120+
121+
```
122+
Sumber daya yang diminta
123+
124+
intel.com/foo : 2
125+
Memory: 256MB
126+
CPU: 2
127+
128+
Bobot dari sumber daya
129+
130+
intel.com/foo : 5
131+
Memory: 1
132+
CPU: 3
133+
134+
FunctionShapePoint {{0, 0}, {100, 10}}
135+
136+
Spesifikasi dari Node 1
137+
138+
Tersedia:
139+
140+
intel.com/foo : 4
141+
Memory : 1 GB
142+
CPU: 8
143+
144+
Digunakan:
145+
146+
intel.com/foo: 1
147+
Memory: 256MB
148+
CPU: 1
149+
150+
151+
Nilai Node:
152+
153+
intel.com/foo = resourceScoringFunction((2+1),4)
154+
= (100 - ((4-3)*100/4)
155+
= (100 - 25)
156+
= 75
157+
= rawScoringFunction(75)
158+
= 7
159+
160+
Memory = resourceScoringFunction((256+256),1024)
161+
= (100 -((1024-512)*100/1024))
162+
= 50
163+
= rawScoringFunction(50)
164+
= 5
165+
166+
CPU = resourceScoringFunction((2+1),8)
167+
= (100 -((8-3)*100/8))
168+
= 37.5
169+
= rawScoringFunction(37.5)
170+
= 3
171+
172+
NodeScore = (7 * 5) + (5 * 1) + (3 * 3) / (5 + 1 + 3)
173+
= 5
174+
175+
176+
Spesifikasi dari Node 2
177+
178+
Tersedia:
179+
180+
intel.com/foo: 8
181+
Memory: 1GB
182+
CPU: 8
183+
184+
Digunakan:
185+
186+
intel.com/foo: 2
187+
Memory: 512MB
188+
CPU: 6
189+
190+
191+
Nilai Node:
192+
193+
intel.com/foo = resourceScoringFunction((2+2),8)
194+
= (100 - ((8-4)*100/8)
195+
= (100 - 25)
196+
= 50
197+
= rawScoringFunction(50)
198+
= 5
199+
200+
Memory = resourceScoringFunction((256+512),1024)
201+
= (100 -((1024-768)*100/1024))
202+
= 75
203+
= rawScoringFunction(75)
204+
= 7
205+
206+
CPU = resourceScoringFunction((2+6),8)
207+
= (100 -((8-8)*100/8))
208+
= 100
209+
= rawScoringFunction(100)
210+
= 10
211+
212+
NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)
213+
= 7
214+
215+
```
216+
217+
{{% /capture %}}

0 commit comments

Comments
 (0)