ID Localization for Service Topology.
Fixing some translation words.
This commit is contained in:
parent
2c694c97ab
commit
a027ffa0ae
|
|
@ -0,0 +1,206 @@
|
||||||
|
---
|
||||||
|
title: Topologi Service (_Service Topology_)
|
||||||
|
feature:
|
||||||
|
title: Topologi Service (_Service Topology_)
|
||||||
|
description: >
|
||||||
|
Rute lalu lintas layanan berdasarkan topologi klaster.
|
||||||
|
|
||||||
|
content_template: templates/concept
|
||||||
|
weight: 10
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
{{% capture overview %}}
|
||||||
|
|
||||||
|
{{< feature-state for_k8s_version="v1.17" state="alpha" >}}
|
||||||
|
|
||||||
|
Topologi Service memungkinkan Service untuk
|
||||||
|
merutekan lalu lintas jaringan berdasarkan topologi Node dalam klaster. Misalnya, suatu
|
||||||
|
layanan dapat menentukan lalu lintas jaringan yang lebih diutamakan untuk dirutekan ke
|
||||||
|
beberapa _endpoint_ yang berada pada Node yang sama dengan klien, atau pada
|
||||||
|
_availability zone_ yang sama.
|
||||||
|
|
||||||
|
{{% /capture %}}
|
||||||
|
|
||||||
|
{{% capture body %}}
|
||||||
|
|
||||||
|
## Pengantar
|
||||||
|
|
||||||
|
Secara _default_, lalu lintas jaringan yang dikirim ke `ClusterIP` atau` NodePort` dari Service
|
||||||
|
dapat dialihkan ke alamat _backend_ untuk Service tersebut. Sejak Kubernetes 1.7
|
||||||
|
dimungkinkan untuk merutekan lalu lintas jaringan "eksternal" ke Pod yang berjalan di
|
||||||
|
Node yang menerima lalu lintas jaringan, tetapi fitur ini tidak didukung untuk `ClusterIP` dari
|
||||||
|
Service, dan topologi yang lebih kompleks — seperti rute zonasi —
|
||||||
|
belum memungkinkan. Fitur topologi Service mengatasi kekurangan ini dengan
|
||||||
|
mengizinkan pembuat layanan untuk mendefinisikan kebijakan dalam merutekan lalu lintas jaringan
|
||||||
|
berdasarkan label Node untuk Node-Node asal dan tujuan.
|
||||||
|
|
||||||
|
Dengan menggunakan label Node yang sesuai antara asal dan tujuan, operator dapat
|
||||||
|
menunjuk kelompok Node yang "lebih dekat" dan "lebih jauh" antara satu sama lain,
|
||||||
|
dengan menggunakan metrik apa pun yang masuk akal untuk memenuhi persyaratan
|
||||||
|
dari operator itu. Untuk sebagian besar operator di _cloud_ publik, misalnya, ada
|
||||||
|
preferensi untuk menjaga layanan lalu lintas jaringan dalam zona yang sama, karena lalu lintas jaringan
|
||||||
|
antar zona memiliki biaya yang dibebankan, sementara lalu lintas jaringan
|
||||||
|
dalam zona yang sama tidak ada biaya. Kebutuhan umum lainnya termasuk kemampuan untuk merutekan
|
||||||
|
lalu lintas jaringan ke Pod lokal yang dikelola oleh sebuah DaemonSet, atau menjaga lalu lintas jaringan ke
|
||||||
|
Node yang terhubung ke _top-of-rack switch_ yang sama untuk mendapatkan
|
||||||
|
latensi terendah.
|
||||||
|
|
||||||
|
|
||||||
|
## Menggunakan Topologi Service
|
||||||
|
|
||||||
|
Jika klaster kamu mengaktifkan topologi layanan kamu dapat mengontrol rute lalu lintas jaringan Service
|
||||||
|
dengan mengatur bagian `topologyKeys` pada spesifikasi Service. Bagian ini
|
||||||
|
adalah daftar urutan label-label Node yang akan digunakan untuk mengurutkan _endpoint_
|
||||||
|
saat mengakses Service ini. Lalu lintas jaringan akan diarahkan ke Node yang nilai
|
||||||
|
label pertamanya cocok dengan nilai dari Node asal untuk label yang sama. Jika
|
||||||
|
tidak ada _backend_ untuk Service pada Node yang sesuai, maka label kedua akan
|
||||||
|
dipertimbangkan, dan seterusnya, sampai tidak ada label yang tersisa.
|
||||||
|
|
||||||
|
Jika tidak ditemukan kecocokan, lalu lintas jaringan akan ditolak, sama seperti jika tidak ada
|
||||||
|
sama sekali _backend_ untuk Service tersebut. Artinya, _endpoint_ dipilih
|
||||||
|
berdasarkan kunci topologi yang pertama yang tersedia pada _backend_. Jika dalam
|
||||||
|
bagian ini ditentukan dan semua entri tidak memiliki _backend_ yang sesuai dengan
|
||||||
|
topologi klien, maka Service tidak memiliki _backend_ untuk klien dan koneksi harus
|
||||||
|
digagalkan. Nilai khusus `" * "` dapat digunakan untuk mengartikan "topologi
|
||||||
|
apa saja". Nilai _catch-all_ ini, jika digunakan, maka hanya sebagai
|
||||||
|
nilai terakhir dalam daftar.
|
||||||
|
|
||||||
|
Jika `topologyKeys` tidak ditentukan atau kosong, tidak ada batasan topologi
|
||||||
|
yang akan diterapkan.
|
||||||
|
|
||||||
|
Seandainya sebuah klaster dengan Node yang dilabeli dengan nama _host_ ,
|
||||||
|
nama zona, dan nama wilayah mereka, maka kamu dapat mengatur nilai
|
||||||
|
`topologyKeys` dari sebuah Service untuk mengarahkan lalu lintas jaringan seperti berikut ini.
|
||||||
|
|
||||||
|
* Hanya ke _endpoint_ dalam Node yang sama, gagal jika tidak ada _endpoint_ pada
|
||||||
|
Node: `[" kubernetes.io/hostname "]`.
|
||||||
|
* Lebih memilih ke _endpoint_ dalam Node yang sama, jika tidak ditemukan maka ke _endpoint_ pada
|
||||||
|
zona yang sama, diikuti oleh wilayah yang sama, dan selain itu gagal:
|
||||||
|
`[" kubernetes.io/hostname ", "topology.kubernetes.io/zone", "topology.kubernetes.io/region"] `.
|
||||||
|
Ini mungkin berguna, misalnya, dalam kasus di mana lokalitas data sangat penting.
|
||||||
|
* Lebih memilih ke _endpoint_ dalam zona yang sama, tetapi memilih _endpoint_ mana saja yang
|
||||||
|
tersedia apabila tidak ada yang tersedia dalam zona ini:
|
||||||
|
`[" topology.kubernetes.io/zone "," * "]`.
|
||||||
|
|
||||||
|
|
||||||
|
## Batasan
|
||||||
|
|
||||||
|
* Topologi Service tidak kompatibel dengan `externalTrafficPolicy=Local`, dan
|
||||||
|
karena itu Service tidak dapat menggunakan kedua fitur ini sekaligus. Dimungkinkan untuk menggunakan
|
||||||
|
kedua fitur pada klaster yang sama untuk Service yang berbeda, bukan untuk
|
||||||
|
Service yang sama.
|
||||||
|
|
||||||
|
* Untuk saat ini kunci topologi yang valid hanya terbatas pada `kubernetes.io/hostname`,
|
||||||
|
`topology.kubernetes.io/zone`, dan` topology.kubernetes.io/region`, tetapi akan
|
||||||
|
digeneralisasikan ke label Node yang lain di masa depan.
|
||||||
|
|
||||||
|
* Kunci topologi harus merupakan kunci label yang valid dan paling banyak hanya 16 kunci yang dapat ditentukan.
|
||||||
|
|
||||||
|
* Nilai _catch-all_, `" * "`, harus menjadi nilai terakhir pada kunci topologi, jika
|
||||||
|
nilai itu digunakan.
|
||||||
|
|
||||||
|
|
||||||
|
## Contoh
|
||||||
|
|
||||||
|
Berikut ini adalah contoh umum penggunaan fitur topologi Service.
|
||||||
|
|
||||||
|
### Hanya pada _endpoint_ pada Node lokal
|
||||||
|
|
||||||
|
Service yang hanya merutekan ke _endpoint_ pada Node lokal. Jika tidak ada _endpoint_ pada Node, lalu lintas jaringan akan dihentikan:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: my-app
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 9376
|
||||||
|
topologyKeys:
|
||||||
|
- "kubernetes.io/hostname"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lebih memilih _endpoint_ pada Node lokal
|
||||||
|
|
||||||
|
Service yang lebih memilih _endpoint_ pada Node lokal tetapi akan memilih ke _endpoint_
|
||||||
|
dalam klaster jika _endpoint_ pada Node lokal tidak ada:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: my-app
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 9376
|
||||||
|
topologyKeys:
|
||||||
|
- "kubernetes.io/hostname"
|
||||||
|
- "*"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Hanya untuk _endpoint_ pada Zona atau Wilayah
|
||||||
|
|
||||||
|
Service yang lebih memilih _endpoint_ zona daripada wilayah. Jika tidak ada _endpoint_ pada
|
||||||
|
keduanya, make lalu lintas jaringan akan dihentikan.
|
||||||
|
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: my-app
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 9376
|
||||||
|
topologyKeys:
|
||||||
|
- "topology.kubernetes.io/zone"
|
||||||
|
- "topology.kubernetes.io/region"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lebih memilih _endpoint_ pada Node Lokal, Zonal, terakhir Regional
|
||||||
|
|
||||||
|
Service yang lebih memilih _endpoint_ pada Node lokal, zonal, kemudian regional
|
||||||
|
tetapi jika tetap tidak ditemukan maka akan memilih _endpoint_ diseluruh klaster.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: my-app
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 9376
|
||||||
|
topologyKeys:
|
||||||
|
- "kubernetes.io/hostname"
|
||||||
|
- "topology.kubernetes.io/zone"
|
||||||
|
- "topology.kubernetes.io/region"
|
||||||
|
- "*"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
{{% /capture %}}
|
||||||
|
|
||||||
|
{{% capture whatsnext %}}
|
||||||
|
|
||||||
|
* Baca tentang [mengaktifkan topologi Service](/docs/tasks/administer-cluster/enabling-service-topology)
|
||||||
|
* Baca [menghubungkan aplikasi dengan Service](/docs/concepts/services-networking/connect-applications-service/)
|
||||||
|
|
||||||
|
{{% /capture %}}
|
||||||
Loading…
Reference in New Issue