Add Kubernetes Components in lang ID. (#13888)
* Add Kubernetes Components in lang ID. * Remove glossary since it's not translated yet. * Add what is kubernetes? in ID lang * Add kubernetes API in lang ID. * Address id loc suggestions fo Kubernetes' overview. * Remove uneeded lines of definitions. * Add glossaries for Bahasa Indonesia. * Add kubelet glossary for Bahasa Indonesia. * Fix all italics due to missing period and false tag.
This commit is contained in:
committed by
Kubernetes Prow Robot
parent
734eb9a086
commit
f1a8462407
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: "Ikhtisar"
|
||||
weight: 20
|
||||
---
|
||||
|
||||
@@ -0,0 +1,152 @@
|
||||
---
|
||||
title: Komponen-Komponen Kubernetes
|
||||
content_template: templates/concept
|
||||
weight: 20
|
||||
card:
|
||||
name: concepts
|
||||
weight: 20
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
Dokumen ini merupakan ikhtisar yang mencakup berbagai komponen
|
||||
yang dibutuhkan agar kluster Kubernetes dapat berjalan secara fungsional.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture body %}}
|
||||
## Komponen <i>Master</i>
|
||||
|
||||
Komponen <i>master</i> menyediakan <i>control plane</i> bagi kluster.
|
||||
Komponen ini berperan dalam proses pengambilan secara global
|
||||
pada kluster (contohnya, mekanisme <i>schedule</i>), serta berperan dalam proses
|
||||
deteksi serta pemberian respons terhadap <i>events</i> yang berlangsung di dalam kluster
|
||||
(contohnya, penjadwalan pod baru apabila jumlah replika yang ada pada
|
||||
<i>replication controller</i> tidak terpenuhi).
|
||||
|
||||
Komponen master dapat dijalankan di mesin manapun yang ada di kluster. Meski begitu,
|
||||
untuk memudahkan proses yang ada, <i>script</i> inisiasi awal yang dijalankan
|
||||
biasanya memulai komponen master pada mesin yang sama, serta tidak menjalankan
|
||||
kontainer bagi pengguna di mesin ini. Contoh konfigurasi <i>multi-master VM</i>
|
||||
dapat dilihat di modul [Membangun Kluster HA] (/docs/admin/high-availability/).
|
||||
|
||||
|
||||
### kube-apiserver
|
||||
|
||||
{{< glossary_definition term_id="kube-apiserver" length="all" >}}
|
||||
|
||||
|
||||
### etcd
|
||||
|
||||
{{< glossary_definition term_id="etcd" length="all" >}}
|
||||
|
||||
|
||||
### kube-scheduler
|
||||
|
||||
{{< glossary_definition term_id="kube-scheduler" length="all" >}}
|
||||
|
||||
|
||||
### kube-controller-manager
|
||||
|
||||
{{< glossary_definition term_id="kube-controller-manager" length="all" >}}
|
||||
|
||||
Kontroler-kontroler ini meliputi:
|
||||
|
||||
* Kontroler <i>Node</i> : Bertanggung jawab untuk mengamati dan memberikan
|
||||
respons apabila jumlah <i>node</i> berkurang.
|
||||
* Kontroler Replikasi : Bertanggung jawab untuk menjaga jumlah <i>pod</i> agar
|
||||
jumlahnya sesuai dengan kebutuhan setiap objek kontroler replikasi yang ada di sistem.
|
||||
* Kontroler <i>Endpoints</i> : Menginisiasi objek <i>Endpoints</i>
|
||||
(yang merupakan gabungan <i>Pods</i> dan <i>Services</i>).
|
||||
* Kontroler <i>Service Account & Token</i>: Membuat akun dan
|
||||
akses token API standar untuk setiap <i>namespaces</i> yang dibuat.
|
||||
|
||||
|
||||
### cloud-controller-manager
|
||||
|
||||
[Cloud-controller-manager](/en/docs/tasks/administer-cluster/running-cloud-controller/) merupakan kontroler yang berinteraksi dengan penyedia layanan <i>cloud</i>.
|
||||
Kontroler ini merupakat fitur alfa yang diperkenalkan pada Kubernetes versi 1.6.
|
||||
|
||||
<i>Cloud-controller-manager</i> hanya menjalankan iterasi kontroler <i>cloud-provider-specific</i> .
|
||||
Kamu harus menonaktifkan iterasi kontroler ini pada <i>kube-controller-manager</i>.
|
||||
Kamu dapat menonaktifka iterasi kontroler ini dengan mengubah nilai argumen `--cloud-provider` dengan `external`
|
||||
ketika menginisiasi <i>kube-controller-manager</i>.
|
||||
|
||||
Adanya <i>cloud-controller-manager</i> memungkinkan kode yang dimiliki oleh penyedia layanan <i>cloud</i>
|
||||
dan kode yang ada pada Kubernetes saling tidak bergantung selama masa <i>development</i>.
|
||||
Pada versi sebelumnya, Kubernetes bergantung pada fungsionalitas spesifik yang disediakan oleh
|
||||
penyedia layanan <i>cloud</i>. Di masa mendatang, kode yang secara spesifik dimiliki oleh
|
||||
penyedia layanan <i>cloud</i> akan dipelihara oleh penyedia layanan <i>cloud</i> itu sendiri,
|
||||
kode ini selanjutnya akan dihubungkan dengan <i>cloud-controller-manager</i> ketika Kubernetes dijalankan.
|
||||
|
||||
Kontroler berikut ini memiliki keterkaitan dengan penyedia layanan <i>cloud</i>:
|
||||
|
||||
* Kontroler Node : Melakukan pengecekan pada penyedia layanan <i>cloud</i> ketika menentukan apakah sebuah <i>node</i> telah dihapus pada <i>cloud</i> apabila <i>node</i> tersebut berhenti memberikan respons.
|
||||
* Kontroler Route : Melakukan pengaturan awal <i>route</i> yang ada pada penyedia layanan <i>cloud</i>
|
||||
* Kontroler Service : Untuk membuat, memperbaharui, menghapus <i>load balancer</i> yang disediakan oleh penyedia layanan <i>cloud</i>
|
||||
* Kontroler Volume : Untuk membuat, meng-attach, dan melakukan <i>mount volume</i> serta melakukan inetraksi dengan penyedia layanan <i>cloud</i> untuk melakukan orkestrasi <i>volume</i>
|
||||
|
||||
|
||||
## Komponen <i>Node</i>
|
||||
|
||||
Komponen ini ada pada setiap <i>node</i>, fungsinya adalah melakukan pemeliharaan terhadap <i>pod</i> serta menyediakan <i>environment runtime</i> bagi Kubernetes.
|
||||
|
||||
|
||||
### kubelet
|
||||
|
||||
{{< glossary_definition term_id="kubelet" length="all" >}}
|
||||
|
||||
|
||||
### kube-proxy
|
||||
|
||||
[kube-proxy](/docs/admin/kube-proxy/) membantu abstraksi service Kubernetes melakukan tugasnya. Hal ini terjadi dengan cara memelihara aturan-aturan jaringan (network rules) serta meneruskan koneksi yang ditujukan pada suatu host.
|
||||
|
||||
|
||||
### <i>Container Runtime</i>
|
||||
|
||||
<i>Container runtime</i> adalah perangkat lunak yang bertanggung jawab dalam menjalankan kontainer.
|
||||
Kubernetes mendukung beberapa <i>runtime</i>, diantaranya adalah: [Docker](http://www.docker.com), [containerd](https://containerd.io), [cri-o](https://cri-o.io/), [rktlet](https://github.com/kubernetes-incubator/rktlet) dan semua implementasi [Kubernetes CRI (Container Runtime Interface)](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md).
|
||||
|
||||
|
||||
## <i>Addons</i>
|
||||
|
||||
<i>Addons</i> merupakan pod dan service yang mengimplementasikan fitur-fitur yang diperlukan kluster.
|
||||
|
||||
Beberapa <i>addons</i> akan dijelaskan selanjutnya.
|
||||
|
||||
|
||||
### DNS
|
||||
|
||||
Meskipun tidak semua <i>addons</i> dibutuhkan, semua kluster Kubernetes hendaknya
|
||||
memiliki DNS kluster. Komponen ini penting karena banyak dibutuhkan oleh komponen
|
||||
lainnya.
|
||||
|
||||
[Kluster DNS](/en/docs/concepts/cluster-administration/addons/ ) adalah server DNS, selain beberapa server DNS lain yang sudah ada di
|
||||
<i>environment</i> kamu, yang berfungsi sebagai catatan DNS bagi Kubernetes <i>services</i>
|
||||
|
||||
Kontainer yang dimulai oleh kubernetes secara otomatis akan memasukkan server DNS ini
|
||||
ke dalam mekanisme pencarian DNS yang dimilikinya.
|
||||
|
||||
|
||||
### <i>Web UI</i> (Dasbor)
|
||||
|
||||
[Dasbor](/en/docs/tasks/access-application-cluster/web-ui-dashboard/) adalah antar muka berbasis web multifungsi yang ada pada kluster Kubernetes.
|
||||
Dasbor ini memungkinkan user melakukan manajemen dan <i>troubleshooting</i> kluster maupun
|
||||
aplikasi yang ada pada kluster itu sendiri.
|
||||
|
||||
|
||||
### <i>Container Resource Monitoring</i>
|
||||
|
||||
[Container Resource Monitoring](/en/docs/tasks/debug-application-cluster/resource-usage-monitoring/) mencatat metrik <i>time-series</i> yang diperoleh
|
||||
dari kontainer ke dalam basis data serta menyediakan antar muka yang dapat digunakan
|
||||
untuk melakukan pencarian data yang dibutuhkan.
|
||||
|
||||
|
||||
### <i>Cluster-level Logging</i>
|
||||
|
||||
[Cluster-level logging](/en/docs/concepts/cluster-administration/logging/) bertanggung jawab mencatat <i>log</i> kontainer pada
|
||||
penyimpanan <i>log</i> terpusat dengan antar muka yang dapat digunakan untuk melakukan
|
||||
pencarian.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: API Kubernetes
|
||||
content_template: templates/concept
|
||||
weight: 30
|
||||
card:
|
||||
name: concepts
|
||||
weight: 30
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
|
||||
Secara keseluruhan standar yang digunakan untuk API dijelaskan di dalam [dokumentasi API standar](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md).
|
||||
|
||||
<i>Endpoints API</i>, <i>resource types</i> serta contoh penggunaan dijelaskan di dalam [API Reference](/en/docs/reference).
|
||||
|
||||
Akses <i>remote</i> penggunaan API dijelaskan di dalam [dokumentasi akses API](/en/docs/reference/access-authn-authz/controlling-access/).
|
||||
|
||||
API Kubernetes juga berperan sebagai skema konfigurasi yang deklaratif di dalam sistem.. Sementara itu, [kubectl](/en/docs/reference/kubectl/overview/) merupakan <i>command-line</i> yang dapat digunakan untuk membuat, menmperbaharui, menghapus, dan mendapatkan obyek API.
|
||||
|
||||
Kubernetes menyimpan bentuk terserialisasi dari obyek API yang dimilikinya di dalam [etcd](https://coreos.com/docs/distributed-configuration/getting-started-with-etcd/).
|
||||
|
||||
Kubernetes sendiri dibagi menjadi beberapa komponen yang saling dapat saling interaksi melalui API.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
{{% capture body %}}
|
||||
|
||||
## Perubahan API
|
||||
|
||||
Berdasarkan pengalaman kami, semua sistem yang berhasil memerlukan kebutuhan
|
||||
untuk terus tumbuh dan berkembang seiring dengan bertambahnya kebutuhan
|
||||
yang ada. Dengan demikian, kami berekspektasi bahwa API akan selalu berubah seiring dengan bertambahnya kebutuhan yang ada.
|
||||
Meski begitu, perubahan yang ada akan selalu kompatibel dengan implementasi sebelumnya, untuk jangka waktu tertentu.
|
||||
Secara umum, penambahan pada sebuah resource API atau field resource bisa sering terjadi.. Penghapusan <i>resource API</i> atau suatu <i>field</i>, di sisi lain,
|
||||
diharapkan untuk dapat memenuhi [kaidah deprecation API](/docs/reference/using-api/deprecation-policy/).
|
||||
|
||||
Hal-hal apa saja yang perlu diperhatikan untuk menjamin kompatibilitas API
|
||||
secara rinci dibahas di dalam [dokumentasi perubahan API](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md).
|
||||
|
||||
## Swagger and OpenAPI Definition
|
||||
|
||||
Detail mengenai API didokumentasikan dengan menggunakan [OpenAPI](https://www.openapis.org/).
|
||||
|
||||
Semenjak Kubernetes versi 1.10, Kubernetes menghadirkan spesifikasi <i>OpenAPI</i> melalui <i>endpoint</i> `/openapi/v2`.
|
||||
Format <i>request</i> dapat diterapkan dengan cara menambahkan <i>header HTTP</i>:
|
||||
|
||||
Header | Opsi
|
||||
------ | ---------------
|
||||
Accept | `application/json`, `application/com.github.proto-openapi.spec.v2@v1.0+protobuf` (<i>content-type</i> standar yang digunakan adalah `application/json` untuk `*/*`)
|
||||
Accept-Encoding | `gzip`
|
||||
|
||||
Sebelum versi 1.14, terdapat 4 buah <i>endpoint</i> yang menyediakan spesifikasi <i>OpenAPI</i>
|
||||
dalam format berbeda yang dapat digunakan (`/swagger.json`, `/swagger-2.0.0.json`, `/swagger-2.0.0.pb-v1`, `/swagger-2.0.0.pb-v1.gz`).
|
||||
<i>Endpoint</i> ini bersifat <i>deprecated</i> dan akan dihapus pada Kubernetes versi 1.14.
|
||||
|
||||
**Cara mendapatkan spesifikasi <i>OpenAPI</i>**:
|
||||
|
||||
Sebelum 1.10 | Mulai Kubernetes 1.10
|
||||
----------- | -----------------------------
|
||||
GET /swagger.json | GET /openapi/v2 **Accept**: application/json
|
||||
GET /swagger-2.0.0.pb-v1 | GET /openapi/v2 **Accept**: application/com.github.proto-openapi.spec.v2@v1.0+protobuf
|
||||
GET /swagger-2.0.0.pb-v1.gz | GET /openapi/v2 **Accept**: application/com.github.proto-openapi.spec.v2@v1.0+protobuf **Accept-Encoding**: gzip
|
||||
|
||||
Kubernetes juga menyediakan alternatif mekanisme serialisasi lain,
|
||||
yaitu dengan menggunakan <i>Protobuf</i>, yang secara umum digunakan untuk mekanisme komunikasi
|
||||
intra-kluster, hal ini didokumentasikan di dalam [proposal desain](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/api-machinery/protobuf.md)
|
||||
serta berkas IDL sebagai bentuk spesifikasi skema berada dalam <i>package</i> Go
|
||||
|
||||
Sebelum Kubernetes versi 1.14, <i>apiserver</i> Kubernetes juga mengekspos API
|
||||
yang dapat digunakan untuk mendapatkan spesifikasi [Swagger v1.2](http://swagger.io/) pada <i>endpoint</i> `/swaggerapi`.
|
||||
<i>Endpoint</i> ini akan sudah bersifat <i>deprecated</i> dan akan dihapus pada
|
||||
Kubernetes versi 1.14.
|
||||
|
||||
## Pemberian Versi pada API
|
||||
|
||||
Untuk memudahkan restrukturisasi field dan resource yang ada,
|
||||
Kubernetes menyediakan beberapa versi API yang berada pada <i>path</i> yang berbeda,
|
||||
misalnya `/api/v1` atau `/apis/extensions/v1beta1`.
|
||||
|
||||
Kita dapat memilih versi yang akan digunakan pada tingkatan API
|
||||
dan bukan pada tingkatan <i>field</i> atau <i>resource</i> untuk memastikan
|
||||
API yang digunakan memperlihatkan gambaran yang jelas serta konsisten
|
||||
mengenai <i>resoure</i> dan sifat sistem yang ada.
|
||||
|
||||
Perhatikan bahwa pemberian versi pada API dan pemberian versi pada API dan perangkat lunak memiliki keterkaitan secara tak langsung.
|
||||
Proposal [API and release
|
||||
versioning](https://git.k8s.io/community/contributors/design-proposals/release/versioning.md) memberikan deskripsi keterkaitan antara
|
||||
pemberian versi pada API dan pemberian versi pada perangkat lunak.
|
||||
|
||||
API dengan versi yang berbeda menunjukan tingkatan kestabilan dan ketersediaan yang diberikan pada versi tersebut.
|
||||
Kriteria untuk setiap tingkatan dideskripsikan secara lebih detail di dalam
|
||||
[dokumentasi perubahan API](https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions). They are summarized here:
|
||||
|
||||
- Tingkatan <i>Alpha</i>:
|
||||
- Nama dari versi ini mengandung string `alpha` (misalnya, `v1alpha1`).
|
||||
- Bisa jadi terdapat <i>bug</i>. Secara <i>default</i> fitur ini tidak diekspos.
|
||||
- Ketersediaan untuk fitur yang ada bisa saja dihilangkan pada suatu waktu tanpa pemberitahuan sebelumnya.
|
||||
- API yang ada mungkin saja berubah tanpa memperhatikan kompatibilitas dengan versi perangkat lunak sebelumnya.
|
||||
- Hanya direkomendasikan untuk kluster yang digunakan untuk tujuan <i>testing</i>.
|
||||
- Tingkatan <i>Beta</i>:
|
||||
- Nama dari versi ini mengandung string `beta` (misalnya `v2beta3`).
|
||||
- Kode yang ada sudah melalui mekanisme <i>testing</i> yang cukup baik. Menggunakan fitur ini dianggap cukup aman. Fitur ini diekspos secara <i>default</i>.
|
||||
- Ketersediaan untuk fitur secara menyeluruh tidak akan dihapus, meskipun begitu detail untuk suatu fitur bisa saja berubah.
|
||||
- Skema dan/atau semantik dari suatu obyek mungkin saja berubah tanpa memerhatikan kompatibilitas pada rilis <i>beta</i> selanjutnya.
|
||||
Jika hal ini terjadi, kami akan menyediakan suatu instruksi untuk melakukan migrasi di versi rilis selanjutnya. hal ini bisa saja terdiri dari penghapusan, pengubahan, ataupun pembuatan
|
||||
obyek API. Proses pengubahan mungkin saja membutuhkan pemikiran yang matang. Dampak proses ini bisa saja menyebabkan <i>downtime</i> aplikasi yang bergantung pada fitur ini.
|
||||
- Disarankan hanya untuk digunakan untuk penggunaan yang untuk penggunaan yang tidak berdampak langsung pada bisnis kamu.
|
||||
- **Kami mohon untuk mencoba versi <i>beta</i> yang kami sediakan dan berikan masukan terhadap fitur yang kamu pakai! Apabila fitur tersebut sudah tidak lagi berada di dalam tingkatan <i>beta</i> perubahan yang kami buat terhadap fitur tersebut bisa jadi tidak lagi dapat digunakan**
|
||||
- Tingkatan stabil:
|
||||
- Nama dari versi ini mengandung string `vX` dimana `X` merupakan bilangan bulat.
|
||||
- Fitur yang ada pada tingkatan ini akan selalu muncul di rilis berikutnya.
|
||||
|
||||
## <i>API groups</i>
|
||||
|
||||
Untuk memudahkan proses ekstensi suatu API Kubernetes, kami mengimplementasikan [*API groups*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md).
|
||||
<i>API group</i> ini dispesifikasikan di dalam <i>path</i> <i>REST</i> serta di dalam <i>field</i> `apiVersion` dari sebuah obyek yang sudah diserialisasi.
|
||||
|
||||
Saat ini, terdapat beberapa <i>API groups</i> yang digunakan:
|
||||
|
||||
1. Kelompok *core*, seringkali disebut sebagai *legacy group*, berada pada <i>path</i> <i>REST</i> `/api/v1` serta menggunakan `apiVersion: v1`.
|
||||
|
||||
1. <i>Named groups</i> berada pada <i>path</i> <i>REST</i> `/apis/$GROUP_NAME/$VERSION`, serta menggunakan `apiVersion: $GROUP_NAME/$VERSION`
|
||||
(misalnya `apiVersion: batch/v1`). Daftar menyeluruh mengenai apa saja <i>API groups</i> dapat dilihat di [Kubernetes API reference](/docs/reference/).
|
||||
|
||||
|
||||
Ekstensi API dengan custom resources dapat dilakukan melalui dua buah path:
|
||||
|
||||
1. [CustomResourceDefinition]()
|
||||
digunakan jika memerlukan seluruh set semantik Kubernetes API, pengguna boleh implementasi apiserver sendiri dengan menggunakan aggregator.
|
||||
1. Pengguna yang membutuhkan seperangkat semantik API Kubernetes API dapat mengimplementasikan <i>apiserver</i> mereka sendiri.
|
||||
dengan menggunakan [aggregator]()
|
||||
untuk membuat integrasi dengan klien menjadi lebih mudah.
|
||||
|
||||
|
||||
## Mengaktifkan <i> API groups</i>
|
||||
|
||||
Beberapa <i>resources</i> dan <i>API groups</i> sudah diaktifkan secara <i>default</i>.
|
||||
<i>Resource</i> dan <i>API groups</i> ini dapat diaktifkan dan dinonaktifkan dengan mengatur penanda `--runtime-config`
|
||||
pada <i>apiserver</i>. `--runtime-config` menerima nilai yang dipisahkan oleh koma. Sebagai contoh: untuk menonaktifkan batch/v1, tetapkan
|
||||
`--runtime-config=batch/v1=false`, untuk mengaktifkan batch/v2alpha1, tetapkan `--runtime-config=batch/v2alpha1`.
|
||||
Penanda menerima nilai yang dipisahkan oleh pasangan `key=value` yang mendeskripsikan konfigurasi <i>runtime</i> pada <i>apiserver</i>.
|
||||
|
||||
PENTING: Melakukan proses mengaktifkan atau menonaktifkan <i>groups</i> atau <i>resources</i>
|
||||
membutuhkan mekanisme <i>restart</i> <i>apiserver</i> dan <i>controller-manager</i>
|
||||
agar <i>apiserver</i> dapat menerima perubahan `--runtime-config`.
|
||||
|
||||
## Mengaktifkan <i>resources</i> di dalam <i>groups</i>
|
||||
|
||||
<i>DaemonSets</i>, <i>Deployments</i>, <i>HorizontalPodAutoscalers</i>,
|
||||
<i>Ingresses</i>, <i>Jobs</i>, dan <i>ReplicaSets</i> diaktifkan secara <i>default</i>.
|
||||
Ekstensi lain dapat diaktifkan penanda `--runtime-config` pada <i>apiserver</i>. Penanda `--runtime-config` menerima nilai yang dipisahkan oleh koma.
|
||||
Sebagai contoh untuk menonaktifkan <i>deployments</i> dan <i>ingress</i>, tetapkan.
|
||||
`--runtime-config=extensions/v1beta1/deployments=false,extensions/v1beta1/ingresses=false`
|
||||
|
||||
{{% /capture %}}
|
||||
@@ -0,0 +1,189 @@
|
||||
---
|
||||
title: Apa itu Kubernetes?
|
||||
content_template: templates/concept
|
||||
weight: 10
|
||||
card:
|
||||
name: concepts
|
||||
weight: 10
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
Laman ini merupakan ikhtisar Kubernetes.
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture body %}}
|
||||
Kubernetes merupakan <i>platform open-source</i> yang digunakan untuk melakukan
|
||||
manajemen <i>workloads</i> aplikasi yang dikontainerisasi, serta menyediakan
|
||||
konfigurasi dan otomatisasi secara deklaratif. Kubernetes berada di dalam ekosistem
|
||||
yang besar dan berkembang cepat. <i>Service</i>, <i>support</i>, dan perkakas
|
||||
Kubernetes tersedia secara meluas.
|
||||
|
||||
Google membuka Kubernetes sebagai proyek <i>open source</i> pada tahun 2014.
|
||||
Kubernetes dibangun berdasarkan [pengalaman Google selama satu setengah dekade dalam menjalankan workloads](https://research.google.com/pubs/pub43438.html)
|
||||
bersamaan dengan kontribusi berupa ide-ide terbaik yang diberikan oleh komunitas.
|
||||
|
||||
## Mengapa Kubernetes dan hal apa saja yang dapat dilakukan oleh Kubernetes?
|
||||
|
||||
Kubernetes memiliki sejumlah fitur yang dapat dijabarkan sebagai berikut:
|
||||
|
||||
- <i>platform</i> kontainer
|
||||
- <i>platform microservices</i>
|
||||
- <i>platform cloud</i> yang tidak mudah dipindahkan
|
||||
|
||||
Kubernetes menyediakan manajemen <i>environment</i> yang berpusat pada kontainer.
|
||||
Kubernetes melakukan orkestrasi terhadap <i>computing</i>, <i>networking</i>,
|
||||
dan inftrastruktur penyimpanan. Fitur inilah yang kemudian membuat konsep Platform as a Service (PaaS)
|
||||
menjadi lebih sederhana dilengkapi dengan fleksibilitas yang dimiliki oleh Infrastructure as a Service (IaaS).
|
||||
|
||||
|
||||
## Lalu apa yang menyebabkan Kubernetes disebut sebagai sebuah platform?
|
||||
|
||||
Meskipun Kubernetes menyediakan banyak fungsionalitas, selalu ada keadaan dimana
|
||||
hal tersebut membutuhkan fitur baru. <i>Workflow</i> spesifik yang terkait dengan
|
||||
proses pengembangan aplikasi dapat ditambahkan pada <i>streamline</i> untuk meningkatkan
|
||||
produktivitas developer. Orkestrasi ad-hoc yang dapat diterima biasanya membutuhkan desain
|
||||
otomatisasi yang kokoh agar bersifat <i>scalable</i>. Hal inilah yang membuat
|
||||
Kubernetes juga didesain sebagai <i>platform</i> untuk membangun ekosistem komponen dan
|
||||
dan perkakas untuk memudahkan proses <i>deployment</i>, <i>scale</i>, dan juga manajemen
|
||||
aplikasi.
|
||||
|
||||
[Labels]() memudahkan pengguna mengkategorisasikan <i>resources</i> yang mereka miliki
|
||||
sesuai dengan kebutuhan. [Annotations]() memungkinkan pengguna untuk menambahkan informasi
|
||||
tambahan pada <i>resource</i> yang dimiliki.
|
||||
|
||||
Selain itu, [Kubernetes control plane]() dibuat berdasarkan
|
||||
[API](/docs/reference/using-api/api-overview/) yang tersedia bagi pengguna dan developer. Pengguna
|
||||
dapat mengimplementasikan kontroler sesuai dengan kebutuhan mereka, contohnya adalah
|
||||
[schedulers](https://github.com/kubernetes/community/blob/{{< param "githubbranch" >}}/contributors/devel/scheduler.md),
|
||||
dengan [API kustom yang mereka miliki](), kontroler kustom ini kemudian dapat digunakan
|
||||
pada [command-line
|
||||
tool]() generik yang ada.
|
||||
|
||||
[Desain](https://git.k8s.io/community/contributors/design-proposals/architecture/architecture.md)
|
||||
inilah yang memungkinkan beberapa sistem lain untuk dapat dibangun di atas Kubernetes.
|
||||
|
||||
## Lalu hal apakah yang tidak termasuk di dalam Kubernetes?
|
||||
|
||||
Kubernetes bukanlah sebuah <i>PaaS (Platform as a
|
||||
Service)</i> yang biasanya. Meskipun Kubernetes dijalankan pada tingkatan kontainer
|
||||
dan bukan pada tingkatan perangkat keras, Kubernetes menyediakan beberapa fitur
|
||||
yang biasanya disediakan oleh Paas, seperti <i>deployment</i>, <i>scaling</i>,
|
||||
<i>load balancing</i>, <i>logging</i>, dan <i>monitoring</i>. Akan tetapi,
|
||||
Kubernetes bukanlah sistem monolitik, melainkan suatu sistem yang bersifat sebagai
|
||||
<i>bulding block</i> dan <i>pluggable</i> yang dapat digunakan untuk membangun sebuah
|
||||
platform yang dibutuhkan oleh developer dengan tetap mengutamakan konsep fleksibilitas.
|
||||
|
||||
Kubernetes:
|
||||
|
||||
* Tidak melakukan limitasi terhadap aplikasi yang di-support. Kubernetes bertujuan
|
||||
untuk mendukung berbagai variasi <i>workloads</i>, termasuk
|
||||
<i>stateless</i>, <i>stateful</i>, dan <i>data-processing</i>. Jika sebuah
|
||||
aplikasi dapat dijalankan di atas kontainer, maka aplikasi tersebut juga dapat
|
||||
dijalankan di atas Kubernetes.
|
||||
* Tidak menyediakan mekanisme untuk melakukan <i>deploy</i> kode sumber
|
||||
maupun mekanisme <i>build</i> sebuah aplikasi. <i>Continuous Integration, Delivery, and Deployment
|
||||
(CI/CD) workflows</i> ditentukan oleh preferensi serta kebutuhan teknis organisasi.
|
||||
* Tidak menyediakan <i>application-level services</i>, seperti <i>middleware
|
||||
(e.g., message buses)</i>, <i>data-processing frameworks (for example,
|
||||
Spark)</i>, <i>databases (e.g., mysql)</i>, <i>caches</i>, maupun <i>cluster storage systems (e.g.,
|
||||
Ceph)</i> sebagai suatu <i>built-in services</i>. Komponen tersebut dapat dijalankan di atas Kubernetes, dan/atau
|
||||
dapat diakses oleh aplikasi yang dijalankan di atas Kubernetes melalui sebuah mekanisme tidak mudah dipindahkan
|
||||
misalnya saja <i>Open Service Broker</i>.
|
||||
* Tidak membatasi penyedia layanan <i>logging</i>, <i>monitoring</i>, maupun <i>alerting</i> yang digunakan.
|
||||
Kubernetes menyediakan <i>proof of concept</i> dan mekanisme integrasi yang dapat digunakan
|
||||
untuk mengumpulkan serta mengekspor metriks yang ada.
|
||||
* Tidak menyediakan atau mengharuskan penggunaan <i>configuration language/system (e.g.,
|
||||
[jsonnet](https://github.com/google/jsonnet))</i>. Kubernetes menyediakan suatu API deklaratif
|
||||
yang dapat digunakan oleh berbagai jenis spesifikasi deklaratif.
|
||||
* Tidak menyediakan atau mengadaptasi sebuah konfigurasi, <i>maintenance</i>, manajemen, atau
|
||||
<i>self-healing</i> mesin dengan spesifikasi khusus.
|
||||
|
||||
Sebagai tambahan, Kubernetes bukanlah sebuah *sitem orkestrasi biasa*. Bahkan pada kenyataannya,
|
||||
Kubernetes menghilangkan kebutuhan untuk melakukan orkestrasi. Definisi teknis dari
|
||||
*orkestrasi* merupakan eksekusi dari sebuah workflow yang sudah didefinisikan sebelumnya: pertama kerjakan A, kemudian B,
|
||||
dan terakhir C. Sebaliknya, Kubernetes disusun oleh seperangkat
|
||||
proses kontrol yang dapat idekomposisi yang selalu menjalankan <i>state</i> yang ada
|
||||
saat ini hingga sesuai dengan <i>state</i> yang dinginkan.
|
||||
Kita tidak perlu peduli proses apa saja yang perlu dilakukan untuk melakukan A hingga C.
|
||||
Mekanisme kontrol yang tersentralisasi juga tidak dibutuhkan. Dengan demikian, sistem yang
|
||||
dihasilkan lebih mudah digunakan lebih kokoh, serta lebih <i>extensible</i>.
|
||||
|
||||
## Mengapa kontainer?
|
||||
|
||||
Mencari alasan kenapa kita harus menggunakan kontainer?
|
||||
|
||||

|
||||
|
||||
*Cara Lama* untuk melakukan mekanisme <i>deploy</i> suatu aplikasi
|
||||
adalah dengan cara instalasi aplikasi tersebut pada sebuah mesin
|
||||
dengan menggunakan <i>package manager</i> yang dimiliki oleh sistem operasi
|
||||
mesin tersebut. Hal ini menciptakan suatu ketergantungan antara <i>executables</i>,
|
||||
konfigurasi, serta ketergantungan lain yang dibutuhkan aplikasi dengan sistem operasi
|
||||
yang digunakan oleh mesin. Untuk mengatasi hal ini, tentunya bisa saja kita melakukan
|
||||
mekanisme <i>build</i> suatu <i>image</i> VM yang <i>immutable</i> untuk mendapatkan
|
||||
mekanisme <i>rollouts</i> dan <i>rollback</i> yang dapat diprediksi.
|
||||
Meskipun demikian, VM masih dianggap "berat" dan tidak tidak mudah dipindahkan.
|
||||
|
||||
*Cara Baru* adalah dengan melakukan mekanisme <i>deploy</i> kontainer pada tingkatan
|
||||
virtualisasi di level sistem operasi (OS) bukan pada tingkatan virtualisasi perangkat keras.
|
||||
Kontainer ini berada dalam lingkungan yang terisolasi satu sama lain serta terisolasi dengan
|
||||
mesin dimana kontainer ini berada. Kontainer ini memiliki <i>filesystems</i> masing-masing.
|
||||
Selain itu, setiap kontainer tidak dapat "melihat" <i>process</i> yang sedang dijalankan di
|
||||
kontainer lain. Selain itu <i>resource</i> komputasi yang digunakan oleh kontainer
|
||||
ini juga dapat dibatasi. Kontainer juga dapat dengan lebih mudah di-<i>build</i> jika
|
||||
dibandingkan dengan VM, karena kontainer tidak bergantung pada <i>filesystem</i>
|
||||
yang dimiliki mesin, serta dengan mudah dapat didistribusikan.
|
||||
|
||||
Karena kontainer ukurannya kecil dan lebih cepat, sebuah aplikasi dapat dibangun di setiap
|
||||
<i>image</i> kontainer. Mekanisme pemetaan satu-satu antara kontainer dan aplikasi
|
||||
inilah yang membuka keuntungan secara meyeluruh yang dapat diberikan oleh kontainer.
|
||||
Dengan menggunakan kontainer, <i>image</i> kontainer dapat dibuat diwaktu rilis aplikasi.
|
||||
Pembuatan <i>image</i> ini memungkinkan aplikasi secara konsisten dirilis pada
|
||||
<i>environment</i> <i>development</i> maupun <i>production</i>. Selain itu,
|
||||
kontainer juga memiliki transparasi yang lebih tinggi dibandingkan dengan VM. Maksudnya,
|
||||
infrastruktur punya tugas untuk mengatur lifecycle seluruh process yang ada di dalam kontainer. Ini bukanlah lagi tugas sebuah supervisor process yang tersembunyi di dalam kontainer.
|
||||
|
||||
Secara garis besar, penggunaan kontainer memiliki keuntungan sebagai berikut:
|
||||
|
||||
* **Mekanisme pembuatan aplikasi serta proses deployment yang lebih efektif**:
|
||||
Kontainer dapat meningkatkan kemudahan dan efisiensi jika dibandingkan dengan penggunaan VM.
|
||||
* **Continuous development, integration, and deployment**:
|
||||
Digunakan untuk melakukan proses <i>build</i> dan <i>deploy</i> yang sering dilakukan
|
||||
serta kemudahan mekanisme <i>rollback</i> karena image yang ada sifatnya <i>immutable</i>.
|
||||
* **Pemisahan kepentingan antara Dev dan Ops**:
|
||||
Pembuatan <i>image</i> container dilakukan pada saat rilis dan bukan pada saat <i>deploy</i>
|
||||
mengurangi ketergantungan aplikasi dan infrastruktur.
|
||||
* **Observabilitas**
|
||||
Tidak hanya informasi dan metriks pada level OS, tapi juga kesehatan aplikasi dan <i>signal</i> lain.
|
||||
* **Konsistensi <i>environment</i> pada masa pengembangan , <i>testing</i>, dan <i>production</i>**:
|
||||
Memiliki perilaku yang sama baik ketika dijalankan di mesin lokal maupun penyedia layanan <i>cloud</i>.
|
||||
* **Portabilitas antar penyedia layanan <i>cloud</i> maupun distribusi OS**:
|
||||
Dapat dijalankan pada Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine, dan dimanapun.
|
||||
* **Manajemen yang bersifat Aplikasi sentris**:
|
||||
Meningkatkan level abstraksi dari proses menjalankan OS pada perangkat keras virtual
|
||||
ke proses menjalankan aplikasi pada sebuah OS dengan menggunakan <i>resource</i> logis.
|
||||
* **[Mikroservis](https://martinfowler.com/articles/microservices.html) yang renggang (loosely coupled), terdistribusi, elastis, dan terliberasi**:
|
||||
Aplikasi dapat dipecah menjadi komponen yang lebih kecil yang independen dan dapat
|
||||
di-<i>deploy</i> dan diatur secara dinamis -- bukan sebuah sistem monolitik yang dijalankan pada
|
||||
sebuah mesin yang hanya punya satu tujuan.
|
||||
* **Isolasi <i>resource</i>**:
|
||||
Performa aplikasi yang bisa diprediksi.
|
||||
* **Utilisasi <i>resource</i>**:
|
||||
Efisiensi yang tinggi
|
||||
|
||||
## Apakah arti Kubernetes? K8s?
|
||||
|
||||
Nama **Kubernetes** berasal dari Bahasa Yunani, yang berarti *juru mudi* atau
|
||||
*pilot*, dan merupakan asal kata *gubernur* dan
|
||||
[cybernetic](http://www.etymonline.com/index.php?term=cybernetics). *K8s*
|
||||
merupakan sebuah singkatan yang didapat dengan mengganti 8 huruf "ubernete" dengan
|
||||
"8".
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture whatsnext %}}
|
||||
* Siap untuk [memulai](/docs/setup/)?
|
||||
* Untuk penjelasan lebih rinci, silahkan lihat [Dokumentasi Kubernetes](/docs/home/).
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: etcd
|
||||
id: etcd
|
||||
date: 2019-04-21
|
||||
full_link: /docs/tasks/administer-cluster/configure-upgrade-etcd/
|
||||
short_description: >
|
||||
Penyimpanan <i>key value</i> konsisten yang digunakan sebagai penyimpanan data kluster Kubernetes.
|
||||
|
||||
aka:
|
||||
tags:
|
||||
- architecture
|
||||
- storage
|
||||
---
|
||||
Penyimpanan <i>key value</i> konsisten yang digunakan sebagai penyimpanan data kluster Kubernetes.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Selalu perhatikan mekanisme untuk mem-<i>backup</i> data etcd pada kluster Kubernetes kamu. Untuk informasi lebih lanjut tentang etcd, lihat [dokumentasi etcd](https://github.com/coreos/etcd/blob/master/Documentation/docs.md).
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: kube-apiserver
|
||||
id: kube-apiserver
|
||||
date: 2019-04-21
|
||||
full_link: /docs/reference/generated/kube-apiserver/
|
||||
short_description: >
|
||||
Komponen di master yang mengekspos API Kubernetes. Merupakan <i> front-end </i> dari <i> kontrol plane </i> Kubernetes.
|
||||
|
||||
aka:
|
||||
tags:
|
||||
- architecture
|
||||
- fundamental
|
||||
---
|
||||
Komponen di master yang mengekspos API Kubernetes. Merupakan <i> front-end </i> dari <i> kontrol plane </i> Kubernetes.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Komponen ini didesain agar dapat di-<i>scale</i> secara horizontal. Lihat [Membangun Kluster HA](/docs/admin/high-availability/).
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: kube-controller-manager
|
||||
id: kube-controller-manager
|
||||
date: 2019-04-21
|
||||
full_link: /docs/reference/generated/kube-controller-manager/
|
||||
short_description: >
|
||||
Komponen di master yang menjalankan kontroler.
|
||||
|
||||
aka:
|
||||
tags:
|
||||
- architecture
|
||||
- fundamental
|
||||
---
|
||||
Komponen di master yang menjalankan kontroler.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Secara logis, setiap kontroler adalah sebuah proses yang berbeda, tetapi untuk mengurangi kompleksitas, kontroler-kontroler ini dikompilasi menjadi sebuah <i> binary </i> yang dijalankan sebagai satu proses.
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: kube-scheduler
|
||||
id: kube-scheduler
|
||||
date: 2019-04-21
|
||||
full_link: /docs/reference/generated/kube-scheduler/
|
||||
short_description: >
|
||||
Komponen di master yang bertugas mengamati pod yang baru dibuat dan belum di-<i>assign</i> ke suatu node dan kemudian akan memilih sebuah node dimana pod baru tersebut akan dijalankan.
|
||||
|
||||
aka:
|
||||
tags:
|
||||
- architecture
|
||||
---
|
||||
Komponen di master yang bertugas mengamati pod yang baru dibuat dan belum di-<i>assign</i> ke suatu node dan kemudian akan memilih sebuah node dimana pod baru tersebut akan dijalankan.
|
||||
|
||||
<!--more-->
|
||||
|
||||
Faktor-faktor yang diperhatikan dalam proses ini adalah kebutuhan <i>resource</i> secara individual dan kolektif, konstrain perangkat keras/perangkat lunak/peraturan, spesifikasi afinitas dan non-afinitas, lokalisasi data, interferensi <i>inter-workload</i> dan <i>deadlines</i>.
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Kubelet
|
||||
id: kubelet
|
||||
date: 2019-04-21
|
||||
full_link: /docs/reference/generated/kubelet
|
||||
short_description: >
|
||||
Agen yang dijalankan pada setiap <i>node</i> di kluster dan bertugas memastikan kontainer dijalankan di dalam pod.
|
||||
|
||||
aka:
|
||||
tags:
|
||||
- fundamental
|
||||
- core-object
|
||||
---
|
||||
Agen yang dijalankan pada setiap <i>node</i> di kluster dan bertugas memastikan kontainer dijalankan di dalam pod.
|
||||
|
||||
Reference in New Issue
Block a user