Skip to content

Commit e30ddbe

Browse files
authored
Merge pull request #20166 from evanap/id-endpoint-slices
Add translations for EndpointSlices for Bahasa Indonesia
2 parents d26096c + 22d5dd5 commit e30ddbe

File tree

1 file changed

+184
-0
lines changed

1 file changed

+184
-0
lines changed
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
title: EndpointSlice
3+
feature:
4+
title: EndpointSlice
5+
description: >
6+
Pelacakan _endpoint_ jaringan yang dapat diskalakan pada klaster Kubernetes.
7+
8+
content_template: templates/concept
9+
weight: 15
10+
---
11+
12+
13+
{{% capture overview %}}
14+
15+
{{< feature-state for_k8s_version="v1.17" state="beta" >}}
16+
17+
EndpointSlice menyediakan sebuah cara yang mudah untuk melacak _endpoint_ jaringan dalam sebuah
18+
klaster Kubernetes. EndpointSlice memberikan alternatif yang lebih _scalable_ dan lebih dapat diperluas dibandingkan dengan Endpoints.
19+
20+
{{% /capture %}}
21+
22+
{{% capture body %}}
23+
24+
## Motivasi
25+
26+
Endpoints API telah menyediakan sebuah cara yang mudah dan sederhana untuk
27+
melacak _endpoint_ jaringan pada Kubernetes. Sayangnya, seiring dengan besarnya klaster Kubernetes
28+
dan Service, batasan-batasan yang dimiliki API tersebut semakin terlihat.
29+
Terutama, hal tersebut termasuk kendala-kendala mengenai proses _scaling_ _endpoint_ jaringan
30+
dalam jumlah yang besar.
31+
32+
Karena semua _endpoint_ jaringan untuk sebuah Service disimpan dalam satu sumber daya
33+
Endpoints, sumber daya tersebut dapat menjadi cukup besar. Hal itu dapat mempengaruhi kinerja
34+
dari komponen-komponen Kubernetes (terutama _master control plane_) dan menyebabkan
35+
lalu lintas jaringan dan pemrosesan yang cukup besar ketika Endpoints berubah.
36+
EndpointSlice membantu kamu menghindari masalah-masalah tersebut dan juga menyediakan platform
37+
yang dapat diperluas untuk fitur-fitur tambahan seperti _topological routing_.
38+
39+
## Sumber daya EndpointSlice
40+
41+
Pada Kubernetes, sebuah EndpointSlice memiliki referensi-referensi terhadap sekumpulan _endpoint_
42+
jaringan. _Controller_ EndpointSlice secara otomatis membuat EndpointSlice
43+
untuk sebuah Service Kubernetes ketika sebuah {{< glossary_tooltip text="selektor"
44+
term_id="selector" >}} dituliskan. EndpointSlice tersebut akan memiliki
45+
referensi-referensi menuju Pod manapun yang cocok dengan selektor pada Service tersebut. EndpointSlice mengelompokkan
46+
_endpoint_ jaringan berdasarkan kombinasi Service dan Port yang unik.
47+
Nama dari sebuah objek EndpointSlice haruslah berupa
48+
[nama subdomain DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) yang sah.
49+
50+
Sebagai contoh, berikut merupakan sampel sumber daya EndpointSlice untuk sebuah Service Kubernetes
51+
yang bernama `example`.
52+
53+
```yaml
54+
apiVersion: discovery.k8s.io/v1beta1
55+
kind: EndpointSlice
56+
metadata:
57+
name: example-abc
58+
labels:
59+
kubernetes.io/service-name: example
60+
addressType: IPv4
61+
ports:
62+
- name: http
63+
protocol: TCP
64+
port: 80
65+
endpoints:
66+
- addresses:
67+
- "10.1.2.3"
68+
conditions:
69+
ready: true
70+
hostname: pod-1
71+
topology:
72+
kubernetes.io/hostname: node-1
73+
topology.kubernetes.io/zone: us-west2-a
74+
```
75+
76+
Secara bawaan, setiap EndpointSlice yang dikelola oleh _controller_ EndpointSlice tidak akan memiliki
77+
lebih dari 100 _endpoint_. Di bawah skala tersebut, EndpointSlice akan memetakan 1:1
78+
dengan Endpoints dan Service dan akan memiliki kinerja yang sama.
79+
80+
EndpointSlice dapat bertindak sebagai sumber kebenaran untuk kube-proxy sebagai acuan mengenai
81+
bagaimana cara untuk merutekan lalu lintas jaringan internal. Ketika diaktifkan, EndpointSlice semestinya memberikan peningkatan
82+
kinerja untuk Service yang memiliki Endpoints dalam jumlah besar.
83+
84+
### Tipe-tipe Alamat
85+
86+
EndpointSlice mendukung tiga tipe alamat:
87+
88+
* IPv4
89+
* IPv6
90+
* FQDN (_Fully Qualified Domain Name_)
91+
92+
### Topologi
93+
94+
Setiap _endpoint_ pada EndpointSlice dapat memiliki informasi topologi yang relevan.
95+
Hal ini digunakan untuk mengindikasikan di mana _endpoint_ berada, berisi informasi mengenai
96+
Node yang bersangkutan, zona, dan wilayah. Ketika nilai-nilai tersebut tersedia,
97+
label-label Topology berikut akan ditambahkan oleh _controller_ EndpointSlice:
98+
99+
* `kubernetes.io/hostname` - Nama dari Node tempat _endpoint_ berada.
100+
* `topology.kubernetes.io/zone` - Zona tempat _endpoint_ berada.
101+
* `topology.kubernetes.io/region` - Region tempat _endpoint_ berada.
102+
103+
Nilai-nilai dari label-label berikut berasal dari sumber daya yang diasosiasikan dengan tiap
104+
_endpoint_ pada sebuah _slice_. Label _hostname_ merepresentasikan nilai dari kolom NodeName
105+
pada Pod yang bersangkutan. Label zona dan wilayah merepresentasikan nilai
106+
dari label-label dengan nama yang sama pada Node yang bersangkutan.
107+
108+
### Pengelolaan
109+
110+
Secara bawaan, EndpointSlice dibuat dan dikelola oleh _controller_
111+
EndpointSlice. Ada berbagai macam kasus lain untuk EndpointSlice, seperti
112+
implementasi _service mesh_, yang memungkinkan adanya entitas atau _controller_ lain
113+
yang dapat mengelola beberapa EndpointSlice sekaligus. Untuk memastikan beberapa entitas dapat
114+
mengelola EndpointSlice tanpa mengganggu satu sama lain, sebuah
115+
label `endpointslice.kubernetes.io/managed-by` digunakan untuk mengindikasikan entitas
116+
yang mengelola sebuah EndpointSlice. _Controller_ EndpointSlice akan menambahkan
117+
`endpointslice-controller.k8s.io` sebagai nilai dari label tersebut pada seluruh
118+
EndpointSlice yang dikelolanya. Entitas lain yang mengelola EndpointSlice juga diharuskan untuk
119+
menambahkan nilai yang unik untuk label tersebut.
120+
121+
### Kepemilikan
122+
123+
Pada kebanyakan kasus, EndpointSlice akan dimiliki oleh Service yang diikutinya. Hal ini diindikasikan dengan referensi pemilik pada tiap EndpointSlice dan
124+
juga label `kubernetes.io/service-name` yang memudahkan pencarian seluruh
125+
EndpointSlice yang dimiliki oleh sebuah Service.
126+
127+
## _Controller_ EndpointSlice
128+
129+
_Controller_ EndpointSlice mengamati Service dan Pod untuk memastikan EndpointSlice
130+
yang bersangkutan berada dalam kondisi terkini. _Controller_ EndpointSlice akan mengelola EndpointSlice untuk
131+
setiap Service yang memiliki selektor. Ini akan merepresentasikan IP dari Pod
132+
yang cocok dengan selektor dari Service tersebut.
133+
134+
### Ukuran EndpointSlice
135+
136+
Secara bawaan, jumlah _endpoint_ yang dapat dimiliki tiap EndpointSlice dibatasi sebanyak 100 _endpoint_. Kamu dapat
137+
mengaturnya melalui opsi `--max-endpoints-per-slice` {{< glossary_tooltip
138+
text="kube-controller-manager" term_id="kube-controller-manager" >}} sampai dengan
139+
jumlah maksimum sebanyak 1000 _endpoint_.
140+
141+
### Distribusi EndpointSlice
142+
143+
Tiap EndpointSlice memiliki sekumpulan _port_ yang berlaku untuk seluruh _endpoint_ dalam sebuah sumber daya. Ketika nama _port_ digunakan untuk sebuah Service, Pod mungkin mendapatkan
144+
nomor target _port_ yang berbeda-beda untuk nama _port_ yang sama, sehingga membutuhkan
145+
EndpointSlice yang berbeda. Hal ini mirip dengan logika mengenai bagaimana _subset_ dikelompokkan
146+
dengan Endpoints.
147+
148+
_Controller EndpointSlice_ akan mencoba untuk mengisi EndpointSlice sebanyak mungkin, tetapi tidak
149+
secara aktif melakukan _rebalance_ terhadap EndpointSlice tersebut. Logika dari _controller_ cukup sederhana:
150+
151+
1. Melakukan iterasi terhadap EndpointSlice yang sudah ada, menghapus _endpoint_ yang sudah tidak lagi
152+
dibutuhkan dan memperbarui _endpoint_ yang sesuai yang mungkin telah berubah.
153+
2. Melakukan iterasi terhadap EndpointSlice yang sudah dimodifikasi pada langkah pertama dan
154+
mengisinya dengan _endpoint_ baru yang dibutuhkan.
155+
3. Jika masih tersisa _endpoint_ baru untuk ditambahkan, mencoba untuk menambahkannya pada
156+
_slice_ yang tidak berubah sebelumnya dan/atau membuat _slice_ yang baru.
157+
158+
Terlebih penting, langkah ketiga memprioritaskan untuk membatasi pembaruan EndpointSlice terhadap
159+
distribusi dari EndpointSlice yang benar-benar penuh. Sebagai contoh, jika ada 10
160+
_endpoint_ baru untuk ditambahkan dan ada 2 EndpointSlice yang masing-masing memiliki ruang untuk 5 _endpoint_ baru,
161+
pendekatan ini akan membuat sebuah EndpointSlice baru daripada mengisi 2
162+
EndpointSlice yang sudah ada. Dengan kata lain, pembuatan sebuah EndpointSlice
163+
lebih diutamakan daripada pembaruan beberapa EndpointSlice.
164+
165+
Dengan kube-proxy yang berjalan pada tiap Node dan mengamati EndpointSlice, setiap perubahan
166+
pada sebuah EndpointSlice menjadi sangat mahal karena hal tersebut akan dikirimkan ke
167+
setiap Node dalam klaster. Pendekatan ini ditujukan untuk membatasi jumlah
168+
perubahan yang perlu dikirimkan ke setiap Node, meskipun hal tersebut berdampak pada banyaknya
169+
EndpointSlice yang tidak penuh.
170+
171+
Pada praktiknya, distribusi yang kurang ideal seperti ini akan jarang ditemukan. Kebanyakan perubahan yang diproses oleh _controller_ EndpointSlice akan cukup kecil untuk dapat masuk pada
172+
EndpointSlice yang sudah ada, dan jika tidak, cepat atau lambat sebuah EndpointSlice baru
173+
akan segera dibutuhkan. Pembaruan bertahap (_rolling update_) dari Deployment juga menyediakan sebuah proses
174+
pengemasan ulang EndpointSlice yang natural seiring dengan digantikannya seluruh Pod dan _endpoint_ yang
175+
bersangkutan.
176+
177+
{{% /capture %}}
178+
179+
{{% capture whatsnext %}}
180+
181+
* [Mengaktifkan EndpointSlice](/docs/tasks/administer-cluster/enabling-endpointslices)
182+
* Baca [Menghubungkan Aplikasi dengan Service](/docs/concepts/services-networking/connect-applications-service/)
183+
184+
{{% /capture %}}

0 commit comments

Comments
 (0)