From f1a8462407b25aeb35f9c079f20032fb76ef8078 Mon Sep 17 00:00:00 2001 From: Irvi Aini <7439590+irvifa@users.noreply.github.com> Date: Sun, 21 Apr 2019 18:41:45 +0700 Subject: [PATCH] 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. --- content/id/docs/concepts/overview/_index.md | 5 + .../id/docs/concepts/overview/components.md | 152 ++++++++++++++ .../docs/concepts/overview/kubernetes-api.md | 156 +++++++++++++++ .../concepts/overview/what-is-kubernetes.md | 189 ++++++++++++++++++ content/id/docs/reference/glossary/etcd.md | 19 ++ .../docs/reference/glossary/kube-apiserver.md | 19 ++ .../glossary/kube-controller-manager.md | 19 ++ .../docs/reference/glossary/kube-scheduler.md | 18 ++ content/id/docs/reference/glossary/kubelet.md | 15 ++ 9 files changed, 592 insertions(+) create mode 100644 content/id/docs/concepts/overview/_index.md create mode 100644 content/id/docs/concepts/overview/components.md create mode 100644 content/id/docs/concepts/overview/kubernetes-api.md create mode 100644 content/id/docs/concepts/overview/what-is-kubernetes.md create mode 100644 content/id/docs/reference/glossary/etcd.md create mode 100644 content/id/docs/reference/glossary/kube-apiserver.md create mode 100644 content/id/docs/reference/glossary/kube-controller-manager.md create mode 100644 content/id/docs/reference/glossary/kube-scheduler.md create mode 100644 content/id/docs/reference/glossary/kubelet.md diff --git a/content/id/docs/concepts/overview/_index.md b/content/id/docs/concepts/overview/_index.md new file mode 100644 index 0000000000..2ace52ae1a --- /dev/null +++ b/content/id/docs/concepts/overview/_index.md @@ -0,0 +1,5 @@ +--- +title: "Ikhtisar" +weight: 20 +--- + diff --git a/content/id/docs/concepts/overview/components.md b/content/id/docs/concepts/overview/components.md new file mode 100644 index 0000000000..bbdf5edbc4 --- /dev/null +++ b/content/id/docs/concepts/overview/components.md @@ -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 Master + +Komponen master menyediakan control plane bagi kluster. +Komponen ini berperan dalam proses pengambilan secara global +pada kluster (contohnya, mekanisme schedule), serta berperan dalam proses +deteksi serta pemberian respons terhadap events yang berlangsung di dalam kluster +(contohnya, penjadwalan pod baru apabila jumlah replika yang ada pada +replication controller tidak terpenuhi). + +Komponen master dapat dijalankan di mesin manapun yang ada di kluster. Meski begitu, +untuk memudahkan proses yang ada, script inisiasi awal yang dijalankan +biasanya memulai komponen master pada mesin yang sama, serta tidak menjalankan +kontainer bagi pengguna di mesin ini. Contoh konfigurasi multi-master VM +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 Node : Bertanggung jawab untuk mengamati dan memberikan + respons apabila jumlah node berkurang. + * Kontroler Replikasi : Bertanggung jawab untuk menjaga jumlah pod agar + jumlahnya sesuai dengan kebutuhan setiap objek kontroler replikasi yang ada di sistem. + * Kontroler Endpoints : Menginisiasi objek Endpoints + (yang merupakan gabungan Pods dan Services). + * Kontroler Service Account & Token: Membuat akun dan + akses token API standar untuk setiap namespaces yang dibuat. + + +### cloud-controller-manager + +[Cloud-controller-manager](/en/docs/tasks/administer-cluster/running-cloud-controller/) merupakan kontroler yang berinteraksi dengan penyedia layanan cloud. +Kontroler ini merupakat fitur alfa yang diperkenalkan pada Kubernetes versi 1.6. + +Cloud-controller-manager hanya menjalankan iterasi kontroler cloud-provider-specific . +Kamu harus menonaktifkan iterasi kontroler ini pada kube-controller-manager. +Kamu dapat menonaktifka iterasi kontroler ini dengan mengubah nilai argumen `--cloud-provider` dengan `external` +ketika menginisiasi kube-controller-manager. + +Adanya cloud-controller-manager memungkinkan kode yang dimiliki oleh penyedia layanan cloud +dan kode yang ada pada Kubernetes saling tidak bergantung selama masa development. +Pada versi sebelumnya, Kubernetes bergantung pada fungsionalitas spesifik yang disediakan oleh +penyedia layanan cloud. Di masa mendatang, kode yang secara spesifik dimiliki oleh +penyedia layanan cloud akan dipelihara oleh penyedia layanan cloud itu sendiri, +kode ini selanjutnya akan dihubungkan dengan cloud-controller-manager ketika Kubernetes dijalankan. + +Kontroler berikut ini memiliki keterkaitan dengan penyedia layanan cloud: + + * Kontroler Node : Melakukan pengecekan pada penyedia layanan cloud ketika menentukan apakah sebuah node telah dihapus pada cloud apabila node tersebut berhenti memberikan respons. + * Kontroler Route : Melakukan pengaturan awal route yang ada pada penyedia layanan cloud + * Kontroler Service : Untuk membuat, memperbaharui, menghapus load balancer yang disediakan oleh penyedia layanan cloud + * Kontroler Volume : Untuk membuat, meng-attach, dan melakukan mount volume serta melakukan inetraksi dengan penyedia layanan cloud untuk melakukan orkestrasi volume + + +## Komponen Node + +Komponen ini ada pada setiap node, fungsinya adalah melakukan pemeliharaan terhadap pod serta menyediakan environment runtime 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. + + +### Container Runtime + +Container runtime adalah perangkat lunak yang bertanggung jawab dalam menjalankan kontainer. +Kubernetes mendukung beberapa runtime, 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). + + +## Addons + +Addons merupakan pod dan service yang mengimplementasikan fitur-fitur yang diperlukan kluster. + +Beberapa addons akan dijelaskan selanjutnya. + + +### DNS + +Meskipun tidak semua addons 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 +environment kamu, yang berfungsi sebagai catatan DNS bagi Kubernetes services + +Kontainer yang dimulai oleh kubernetes secara otomatis akan memasukkan server DNS ini +ke dalam mekanisme pencarian DNS yang dimilikinya. + + +### Web UI (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 troubleshooting kluster maupun +aplikasi yang ada pada kluster itu sendiri. + + +### Container Resource Monitoring + +[Container Resource Monitoring](/en/docs/tasks/debug-application-cluster/resource-usage-monitoring/) mencatat metrik time-series yang diperoleh +dari kontainer ke dalam basis data serta menyediakan antar muka yang dapat digunakan +untuk melakukan pencarian data yang dibutuhkan. + + +### Cluster-level Logging + +[Cluster-level logging](/en/docs/concepts/cluster-administration/logging/) bertanggung jawab mencatat log kontainer pada +penyimpanan log terpusat dengan antar muka yang dapat digunakan untuk melakukan +pencarian. + +{{% /capture %}} + + diff --git a/content/id/docs/concepts/overview/kubernetes-api.md b/content/id/docs/concepts/overview/kubernetes-api.md new file mode 100644 index 0000000000..0a8256e7b3 --- /dev/null +++ b/content/id/docs/concepts/overview/kubernetes-api.md @@ -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). + +Endpoints API, resource types serta contoh penggunaan dijelaskan di dalam [API Reference](/en/docs/reference). + +Akses remote 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 command-line 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 resource API atau suatu field, 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 OpenAPI melalui endpoint `/openapi/v2`. +Format request dapat diterapkan dengan cara menambahkan header HTTP: + +Header | Opsi +------ | --------------- +Accept | `application/json`, `application/com.github.proto-openapi.spec.v2@v1.0+protobuf` (content-type standar yang digunakan adalah `application/json` untuk `*/*`) +Accept-Encoding | `gzip` + +Sebelum versi 1.14, terdapat 4 buah endpoint yang menyediakan spesifikasi OpenAPI +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`). +Endpoint ini bersifat deprecated dan akan dihapus pada Kubernetes versi 1.14. + +**Cara mendapatkan spesifikasi OpenAPI**: + +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 Protobuf, 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 package Go + +Sebelum Kubernetes versi 1.14, apiserver Kubernetes juga mengekspos API +yang dapat digunakan untuk mendapatkan spesifikasi [Swagger v1.2](http://swagger.io/) pada endpoint `/swaggerapi`. +Endpoint ini akan sudah bersifat deprecated 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 path yang berbeda, +misalnya `/api/v1` atau `/apis/extensions/v1beta1`. + +Kita dapat memilih versi yang akan digunakan pada tingkatan API +dan bukan pada tingkatan field atau resource untuk memastikan +API yang digunakan memperlihatkan gambaran yang jelas serta konsisten +mengenai resoure 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 Alpha: + - Nama dari versi ini mengandung string `alpha` (misalnya, `v1alpha1`). + - Bisa jadi terdapat bug. Secara default 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 testing. +- Tingkatan Beta: + - Nama dari versi ini mengandung string `beta` (misalnya `v2beta3`). + - Kode yang ada sudah melalui mekanisme testing yang cukup baik. Menggunakan fitur ini dianggap cukup aman. Fitur ini diekspos secara default. + - 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 beta 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 downtime 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 beta yang kami sediakan dan berikan masukan terhadap fitur yang kamu pakai! Apabila fitur tersebut sudah tidak lagi berada di dalam tingkatan beta 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. + +## API groups + +Untuk memudahkan proses ekstensi suatu API Kubernetes, kami mengimplementasikan [*API groups*](https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md). +API group ini dispesifikasikan di dalam path REST serta di dalam field `apiVersion` dari sebuah obyek yang sudah diserialisasi. + +Saat ini, terdapat beberapa API groups yang digunakan: + +1. Kelompok *core*, seringkali disebut sebagai *legacy group*, berada pada path REST `/api/v1` serta menggunakan `apiVersion: v1`. + +1. Named groups berada pada path REST `/apis/$GROUP_NAME/$VERSION`, serta menggunakan `apiVersion: $GROUP_NAME/$VERSION` + (misalnya `apiVersion: batch/v1`). Daftar menyeluruh mengenai apa saja API groups 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 apiserver mereka sendiri. + dengan menggunakan [aggregator]() + untuk membuat integrasi dengan klien menjadi lebih mudah. + + +## Mengaktifkan API groups + +Beberapa resources dan API groups sudah diaktifkan secara default. +Resource dan API groups ini dapat diaktifkan dan dinonaktifkan dengan mengatur penanda `--runtime-config` +pada apiserver. `--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 runtime pada apiserver. + +PENTING: Melakukan proses mengaktifkan atau menonaktifkan groups atau resources +membutuhkan mekanisme restart apiserver dan controller-manager +agar apiserver dapat menerima perubahan `--runtime-config`. + +## Mengaktifkan resources di dalam groups + +DaemonSets, Deployments, HorizontalPodAutoscalers, +Ingresses, Jobs, dan ReplicaSets diaktifkan secara default. +Ekstensi lain dapat diaktifkan penanda `--runtime-config` pada apiserver. Penanda `--runtime-config` menerima nilai yang dipisahkan oleh koma. + Sebagai contoh untuk menonaktifkan deployments dan ingress, tetapkan. +`--runtime-config=extensions/v1beta1/deployments=false,extensions/v1beta1/ingresses=false` + +{{% /capture %}} diff --git a/content/id/docs/concepts/overview/what-is-kubernetes.md b/content/id/docs/concepts/overview/what-is-kubernetes.md new file mode 100644 index 0000000000..7d91265dda --- /dev/null +++ b/content/id/docs/concepts/overview/what-is-kubernetes.md @@ -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 platform open-source yang digunakan untuk melakukan +manajemen workloads aplikasi yang dikontainerisasi, serta menyediakan +konfigurasi dan otomatisasi secara deklaratif. Kubernetes berada di dalam ekosistem +yang besar dan berkembang cepat. Service, support, dan perkakas +Kubernetes tersedia secara meluas. + +Google membuka Kubernetes sebagai proyek open source 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: + +- platform kontainer +- platform microservices +- platform cloud yang tidak mudah dipindahkan + +Kubernetes menyediakan manajemen environment yang berpusat pada kontainer. +Kubernetes melakukan orkestrasi terhadap computing, networking, +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. Workflow spesifik yang terkait dengan +proses pengembangan aplikasi dapat ditambahkan pada streamline untuk meningkatkan +produktivitas developer. Orkestrasi ad-hoc yang dapat diterima biasanya membutuhkan desain +otomatisasi yang kokoh agar bersifat scalable. Hal inilah yang membuat +Kubernetes juga didesain sebagai platform untuk membangun ekosistem komponen dan +dan perkakas untuk memudahkan proses deployment, scale, dan juga manajemen +aplikasi. + +[Labels]() memudahkan pengguna mengkategorisasikan resources yang mereka miliki +sesuai dengan kebutuhan. [Annotations]() memungkinkan pengguna untuk menambahkan informasi +tambahan pada resource 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 PaaS (Platform as a +Service) yang biasanya. Meskipun Kubernetes dijalankan pada tingkatan kontainer +dan bukan pada tingkatan perangkat keras, Kubernetes menyediakan beberapa fitur +yang biasanya disediakan oleh Paas, seperti deployment, scaling, +load balancing, logging, dan monitoring. Akan tetapi, +Kubernetes bukanlah sistem monolitik, melainkan suatu sistem yang bersifat sebagai +bulding block dan pluggable 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 workloads, termasuk + stateless, stateful, dan data-processing. Jika sebuah + aplikasi dapat dijalankan di atas kontainer, maka aplikasi tersebut juga dapat + dijalankan di atas Kubernetes. +* Tidak menyediakan mekanisme untuk melakukan deploy kode sumber + maupun mekanisme build sebuah aplikasi. Continuous Integration, Delivery, and Deployment + (CI/CD) workflows ditentukan oleh preferensi serta kebutuhan teknis organisasi. +* Tidak menyediakan application-level services, seperti middleware + (e.g., message buses), data-processing frameworks (for example, + Spark), databases (e.g., mysql), caches, maupun cluster storage systems (e.g., + Ceph) sebagai suatu built-in services. 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 Open Service Broker. +* Tidak membatasi penyedia layanan logging, monitoring, maupun alerting yang digunakan. + Kubernetes menyediakan proof of concept dan mekanisme integrasi yang dapat digunakan + untuk mengumpulkan serta mengekspor metriks yang ada. +* Tidak menyediakan atau mengharuskan penggunaan configuration language/system (e.g., + [jsonnet](https://github.com/google/jsonnet)). Kubernetes menyediakan suatu API deklaratif + yang dapat digunakan oleh berbagai jenis spesifikasi deklaratif. +* Tidak menyediakan atau mengadaptasi sebuah konfigurasi, maintenance, manajemen, atau + self-healing 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 state yang ada +saat ini hingga sesuai dengan state 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 extensible. + +## Mengapa kontainer? + +Mencari alasan kenapa kita harus menggunakan kontainer? + +![Mengapa kontainer?](/images/docs/why_containers.svg) + +*Cara Lama* untuk melakukan mekanisme deploy suatu aplikasi +adalah dengan cara instalasi aplikasi tersebut pada sebuah mesin +dengan menggunakan package manager yang dimiliki oleh sistem operasi +mesin tersebut. Hal ini menciptakan suatu ketergantungan antara executables, +konfigurasi, serta ketergantungan lain yang dibutuhkan aplikasi dengan sistem operasi +yang digunakan oleh mesin. Untuk mengatasi hal ini, tentunya bisa saja kita melakukan +mekanisme build suatu image VM yang immutable untuk mendapatkan +mekanisme rollouts dan rollback yang dapat diprediksi. +Meskipun demikian, VM masih dianggap "berat" dan tidak tidak mudah dipindahkan. + +*Cara Baru* adalah dengan melakukan mekanisme deploy 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 filesystems masing-masing. +Selain itu, setiap kontainer tidak dapat "melihat" process yang sedang dijalankan di +kontainer lain. Selain itu resource komputasi yang digunakan oleh kontainer +ini juga dapat dibatasi. Kontainer juga dapat dengan lebih mudah di-build jika +dibandingkan dengan VM, karena kontainer tidak bergantung pada filesystem +yang dimiliki mesin, serta dengan mudah dapat didistribusikan. + +Karena kontainer ukurannya kecil dan lebih cepat, sebuah aplikasi dapat dibangun di setiap +image kontainer. Mekanisme pemetaan satu-satu antara kontainer dan aplikasi +inilah yang membuka keuntungan secara meyeluruh yang dapat diberikan oleh kontainer. +Dengan menggunakan kontainer, image kontainer dapat dibuat diwaktu rilis aplikasi. +Pembuatan image ini memungkinkan aplikasi secara konsisten dirilis pada +environment development maupun production. 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 build dan deploy yang sering dilakukan + serta kemudahan mekanisme rollback karena image yang ada sifatnya immutable. +* **Pemisahan kepentingan antara Dev dan Ops**: + Pembuatan image container dilakukan pada saat rilis dan bukan pada saat deploy + mengurangi ketergantungan aplikasi dan infrastruktur. +* **Observabilitas** + Tidak hanya informasi dan metriks pada level OS, tapi juga kesehatan aplikasi dan signal lain. +* **Konsistensi environment pada masa pengembangan , testing, dan production**: + Memiliki perilaku yang sama baik ketika dijalankan di mesin lokal maupun penyedia layanan cloud. +* **Portabilitas antar penyedia layanan cloud 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 resource 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-deploy dan diatur secara dinamis -- bukan sebuah sistem monolitik yang dijalankan pada + sebuah mesin yang hanya punya satu tujuan. +* **Isolasi resource**: + Performa aplikasi yang bisa diprediksi. +* **Utilisasi resource**: + 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 %}} + + diff --git a/content/id/docs/reference/glossary/etcd.md b/content/id/docs/reference/glossary/etcd.md new file mode 100644 index 0000000000..2c625277ee --- /dev/null +++ b/content/id/docs/reference/glossary/etcd.md @@ -0,0 +1,19 @@ +--- +title: etcd +id: etcd +date: 2019-04-21 +full_link: /docs/tasks/administer-cluster/configure-upgrade-etcd/ +short_description: > + Penyimpanan key value konsisten yang digunakan sebagai penyimpanan data kluster Kubernetes. + +aka: +tags: +- architecture +- storage +--- + Penyimpanan key value konsisten yang digunakan sebagai penyimpanan data kluster Kubernetes. + + + +Selalu perhatikan mekanisme untuk mem-backup 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). + diff --git a/content/id/docs/reference/glossary/kube-apiserver.md b/content/id/docs/reference/glossary/kube-apiserver.md new file mode 100644 index 0000000000..0f6ec92103 --- /dev/null +++ b/content/id/docs/reference/glossary/kube-apiserver.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 front-end dari kontrol plane Kubernetes. + +aka: +tags: +- architecture +- fundamental +--- + Komponen di master yang mengekspos API Kubernetes. Merupakan front-end dari kontrol plane Kubernetes. + + + +Komponen ini didesain agar dapat di-scale secara horizontal. Lihat [Membangun Kluster HA](/docs/admin/high-availability/). + diff --git a/content/id/docs/reference/glossary/kube-controller-manager.md b/content/id/docs/reference/glossary/kube-controller-manager.md new file mode 100644 index 0000000000..1e8b2392f0 --- /dev/null +++ b/content/id/docs/reference/glossary/kube-controller-manager.md @@ -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. + + + +Secara logis, setiap kontroler adalah sebuah proses yang berbeda, tetapi untuk mengurangi kompleksitas, kontroler-kontroler ini dikompilasi menjadi sebuah binary yang dijalankan sebagai satu proses. + diff --git a/content/id/docs/reference/glossary/kube-scheduler.md b/content/id/docs/reference/glossary/kube-scheduler.md new file mode 100644 index 0000000000..c48f911624 --- /dev/null +++ b/content/id/docs/reference/glossary/kube-scheduler.md @@ -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-assign 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-assign ke suatu node dan kemudian akan memilih sebuah node dimana pod baru tersebut akan dijalankan. + + + +Faktor-faktor yang diperhatikan dalam proses ini adalah kebutuhan resource secara individual dan kolektif, konstrain perangkat keras/perangkat lunak/peraturan, spesifikasi afinitas dan non-afinitas, lokalisasi data, interferensi inter-workload dan deadlines. + diff --git a/content/id/docs/reference/glossary/kubelet.md b/content/id/docs/reference/glossary/kubelet.md new file mode 100644 index 0000000000..0ca31fdb63 --- /dev/null +++ b/content/id/docs/reference/glossary/kubelet.md @@ -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 node di kluster dan bertugas memastikan kontainer dijalankan di dalam pod. + +aka: +tags: +- fundamental +- core-object +--- + Agen yang dijalankan pada setiap node di kluster dan bertugas memastikan kontainer dijalankan di dalam pod. +