From 22d5dd5f63ce851f6ed1395336529e7d2d128ca4 Mon Sep 17 00:00:00 2001 From: Evan Adi Date: Wed, 8 Apr 2020 09:17:02 +0700 Subject: [PATCH] Translate endpoind-slices to Bahasa Indonesia Translate hyperlinks Fix nits: + leftover translation Nits: + unitalicize k8s resource + replace trafik Nits: + remove reviewers + correct Endpoint to Endpoints + remove {#endpointslice-resource} + translate the word flag Nits: + uncapitalize selector Update on suggestions: + daripada -> terhadap + performa -> kinerja + translate subdomain name + translate default + rephrasing Updates on reviews and suggestions: + translate scalable + replace serangkaian to sekumpulan + use diasosiasikan instead of terasosiasi + use diikutinya to translate track + replace mengkonfigurasi with mengatur + treat EndpointSlices as singular Fix leftover word Nits: + unitalicize platform + use selektor instead of selector Nits: + translate rolling update + use cukup instead of sangat + translate repacking --- .../services-networking/endpoint-slices.md | 184 ++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 content/id/docs/concepts/services-networking/endpoint-slices.md diff --git a/content/id/docs/concepts/services-networking/endpoint-slices.md b/content/id/docs/concepts/services-networking/endpoint-slices.md new file mode 100644 index 0000000000..158918a915 --- /dev/null +++ b/content/id/docs/concepts/services-networking/endpoint-slices.md @@ -0,0 +1,184 @@ +--- +title: EndpointSlice +feature: + title: EndpointSlice + description: > + Pelacakan _endpoint_ jaringan yang dapat diskalakan pada klaster Kubernetes. + +content_template: templates/concept +weight: 15 +--- + + +{{% capture overview %}} + +{{< feature-state for_k8s_version="v1.17" state="beta" >}} + +EndpointSlice menyediakan sebuah cara yang mudah untuk melacak _endpoint_ jaringan dalam sebuah +klaster Kubernetes. EndpointSlice memberikan alternatif yang lebih _scalable_ dan lebih dapat diperluas dibandingkan dengan Endpoints. + +{{% /capture %}} + +{{% capture body %}} + +## Motivasi + +Endpoints API telah menyediakan sebuah cara yang mudah dan sederhana untuk +melacak _endpoint_ jaringan pada Kubernetes. Sayangnya, seiring dengan besarnya klaster Kubernetes +dan Service, batasan-batasan yang dimiliki API tersebut semakin terlihat. +Terutama, hal tersebut termasuk kendala-kendala mengenai proses _scaling_ _endpoint_ jaringan +dalam jumlah yang besar. + +Karena semua _endpoint_ jaringan untuk sebuah Service disimpan dalam satu sumber daya +Endpoints, sumber daya tersebut dapat menjadi cukup besar. Hal itu dapat mempengaruhi kinerja +dari komponen-komponen Kubernetes (terutama _master control plane_) dan menyebabkan +lalu lintas jaringan dan pemrosesan yang cukup besar ketika Endpoints berubah. +EndpointSlice membantu kamu menghindari masalah-masalah tersebut dan juga menyediakan platform +yang dapat diperluas untuk fitur-fitur tambahan seperti _topological routing_. + +## Sumber daya EndpointSlice + +Pada Kubernetes, sebuah EndpointSlice memiliki referensi-referensi terhadap sekumpulan _endpoint_ +jaringan. _Controller_ EndpointSlice secara otomatis membuat EndpointSlice +untuk sebuah Service Kubernetes ketika sebuah {{< glossary_tooltip text="selektor" +term_id="selector" >}} dituliskan. EndpointSlice tersebut akan memiliki +referensi-referensi menuju Pod manapun yang cocok dengan selektor pada Service tersebut. EndpointSlice mengelompokkan +_endpoint_ jaringan berdasarkan kombinasi Service dan Port yang unik. +Nama dari sebuah objek EndpointSlice haruslah berupa +[nama subdomain DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) yang sah. + +Sebagai contoh, berikut merupakan sampel sumber daya EndpointSlice untuk sebuah Service Kubernetes +yang bernama `example`. + +```yaml +apiVersion: discovery.k8s.io/v1beta1 +kind: EndpointSlice +metadata: + name: example-abc + labels: + kubernetes.io/service-name: example +addressType: IPv4 +ports: + - name: http + protocol: TCP + port: 80 +endpoints: + - addresses: + - "10.1.2.3" + conditions: + ready: true + hostname: pod-1 + topology: + kubernetes.io/hostname: node-1 + topology.kubernetes.io/zone: us-west2-a +``` + +Secara bawaan, setiap EndpointSlice yang dikelola oleh _controller_ EndpointSlice tidak akan memiliki +lebih dari 100 _endpoint_. Di bawah skala tersebut, EndpointSlice akan memetakan 1:1 +dengan Endpoints dan Service dan akan memiliki kinerja yang sama. + +EndpointSlice dapat bertindak sebagai sumber kebenaran untuk kube-proxy sebagai acuan mengenai +bagaimana cara untuk merutekan lalu lintas jaringan internal. Ketika diaktifkan, EndpointSlice semestinya memberikan peningkatan +kinerja untuk Service yang memiliki Endpoints dalam jumlah besar. + +### Tipe-tipe Alamat + +EndpointSlice mendukung tiga tipe alamat: + +* IPv4 +* IPv6 +* FQDN (_Fully Qualified Domain Name_) + +### Topologi + +Setiap _endpoint_ pada EndpointSlice dapat memiliki informasi topologi yang relevan. +Hal ini digunakan untuk mengindikasikan di mana _endpoint_ berada, berisi informasi mengenai +Node yang bersangkutan, zona, dan wilayah. Ketika nilai-nilai tersebut tersedia, +label-label Topology berikut akan ditambahkan oleh _controller_ EndpointSlice: + +* `kubernetes.io/hostname` - Nama dari Node tempat _endpoint_ berada. +* `topology.kubernetes.io/zone` - Zona tempat _endpoint_ berada. +* `topology.kubernetes.io/region` - Region tempat _endpoint_ berada. + +Nilai-nilai dari label-label berikut berasal dari sumber daya yang diasosiasikan dengan tiap +_endpoint_ pada sebuah _slice_. Label _hostname_ merepresentasikan nilai dari kolom NodeName + pada Pod yang bersangkutan. Label zona dan wilayah merepresentasikan nilai +dari label-label dengan nama yang sama pada Node yang bersangkutan. + +### Pengelolaan + +Secara bawaan, EndpointSlice dibuat dan dikelola oleh _controller_ +EndpointSlice. Ada berbagai macam kasus lain untuk EndpointSlice, seperti +implementasi _service mesh_, yang memungkinkan adanya entitas atau _controller_ lain +yang dapat mengelola beberapa EndpointSlice sekaligus. Untuk memastikan beberapa entitas dapat +mengelola EndpointSlice tanpa mengganggu satu sama lain, sebuah +label `endpointslice.kubernetes.io/managed-by` digunakan untuk mengindikasikan entitas +yang mengelola sebuah EndpointSlice. _Controller_ EndpointSlice akan menambahkan +`endpointslice-controller.k8s.io` sebagai nilai dari label tersebut pada seluruh +EndpointSlice yang dikelolanya. Entitas lain yang mengelola EndpointSlice juga diharuskan untuk +menambahkan nilai yang unik untuk label tersebut. + +### Kepemilikan + +Pada kebanyakan kasus, EndpointSlice akan dimiliki oleh Service yang diikutinya. Hal ini diindikasikan dengan referensi pemilik pada tiap EndpointSlice dan +juga label `kubernetes.io/service-name` yang memudahkan pencarian seluruh +EndpointSlice yang dimiliki oleh sebuah Service. + +## _Controller_ EndpointSlice + +_Controller_ EndpointSlice mengamati Service dan Pod untuk memastikan EndpointSlice +yang bersangkutan berada dalam kondisi terkini. _Controller_ EndpointSlice akan mengelola EndpointSlice untuk +setiap Service yang memiliki selektor. Ini akan merepresentasikan IP dari Pod +yang cocok dengan selektor dari Service tersebut. + +### Ukuran EndpointSlice + +Secara bawaan, jumlah _endpoint_ yang dapat dimiliki tiap EndpointSlice dibatasi sebanyak 100 _endpoint_. Kamu dapat +mengaturnya melalui opsi `--max-endpoints-per-slice` {{< glossary_tooltip +text="kube-controller-manager" term_id="kube-controller-manager" >}} sampai dengan +jumlah maksimum sebanyak 1000 _endpoint_. + +### Distribusi EndpointSlice + +Tiap EndpointSlice memiliki sekumpulan _port_ yang berlaku untuk seluruh _endpoint_ dalam sebuah sumber daya. Ketika nama _port_ digunakan untuk sebuah Service, Pod mungkin mendapatkan +nomor target _port_ yang berbeda-beda untuk nama _port_ yang sama, sehingga membutuhkan +EndpointSlice yang berbeda. Hal ini mirip dengan logika mengenai bagaimana _subset_ dikelompokkan +dengan Endpoints. + +_Controller EndpointSlice_ akan mencoba untuk mengisi EndpointSlice sebanyak mungkin, tetapi tidak +secara aktif melakukan _rebalance_ terhadap EndpointSlice tersebut. Logika dari _controller_ cukup sederhana: + +1. Melakukan iterasi terhadap EndpointSlice yang sudah ada, menghapus _endpoint_ yang sudah tidak lagi + dibutuhkan dan memperbarui _endpoint_ yang sesuai yang mungkin telah berubah. +2. Melakukan iterasi terhadap EndpointSlice yang sudah dimodifikasi pada langkah pertama dan + mengisinya dengan _endpoint_ baru yang dibutuhkan. +3. Jika masih tersisa _endpoint_ baru untuk ditambahkan, mencoba untuk menambahkannya pada + _slice_ yang tidak berubah sebelumnya dan/atau membuat _slice_ yang baru. + +Terlebih penting, langkah ketiga memprioritaskan untuk membatasi pembaruan EndpointSlice terhadap +distribusi dari EndpointSlice yang benar-benar penuh. Sebagai contoh, jika ada 10 +_endpoint_ baru untuk ditambahkan dan ada 2 EndpointSlice yang masing-masing memiliki ruang untuk 5 _endpoint_ baru, +pendekatan ini akan membuat sebuah EndpointSlice baru daripada mengisi 2 +EndpointSlice yang sudah ada. Dengan kata lain, pembuatan sebuah EndpointSlice +lebih diutamakan daripada pembaruan beberapa EndpointSlice. + +Dengan kube-proxy yang berjalan pada tiap Node dan mengamati EndpointSlice, setiap perubahan +pada sebuah EndpointSlice menjadi sangat mahal karena hal tersebut akan dikirimkan ke +setiap Node dalam klaster. Pendekatan ini ditujukan untuk membatasi jumlah +perubahan yang perlu dikirimkan ke setiap Node, meskipun hal tersebut berdampak pada banyaknya +EndpointSlice yang tidak penuh. + +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 +EndpointSlice yang sudah ada, dan jika tidak, cepat atau lambat sebuah EndpointSlice baru +akan segera dibutuhkan. Pembaruan bertahap (_rolling update_) dari Deployment juga menyediakan sebuah proses +pengemasan ulang EndpointSlice yang natural seiring dengan digantikannya seluruh Pod dan _endpoint_ yang +bersangkutan. + +{{% /capture %}} + +{{% capture whatsnext %}} + +* [Mengaktifkan EndpointSlice](/docs/tasks/administer-cluster/enabling-endpointslices) +* Baca [Menghubungkan Aplikasi dengan Service](/docs/concepts/services-networking/connect-applications-service/) + +{{% /capture %}}