From c0612aed8de782f385b69d2b7ecb03c9a190a033 Mon Sep 17 00:00:00 2001 From: Kurnianto Trilaksono Date: Fri, 14 Jun 2019 11:44:20 +0700 Subject: [PATCH] Translate "Garbage Collection" page to Bahasa Indonesia (#14513) * add pod preset page for language/id * fix formatting * fix typos and wording * fix formatting and add few missed lines * fix note formatting * add Garbage Collection page in Bahasa Indonesia and minor fix on Pod Preset page * remove replication.yaml * add controllers/replicaset.yaml to example * fix formatting error * change dependent to dependen and fix note translation * delete trailing space in heading --- .../concepts/workloads/controllers/_index.md | 4 + .../controllers/garbage-collection.md | 135 ++++++++++++++++++ .../docs/concepts/workloads/pods/podpreset.md | 2 +- .../id/examples/controllers/replicaset.yaml | 17 +++ 4 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 content/id/docs/concepts/workloads/controllers/_index.md create mode 100644 content/id/docs/concepts/workloads/controllers/garbage-collection.md create mode 100644 content/id/examples/controllers/replicaset.yaml diff --git a/content/id/docs/concepts/workloads/controllers/_index.md b/content/id/docs/concepts/workloads/controllers/_index.md new file mode 100644 index 0000000000000..9d5dae4e32309 --- /dev/null +++ b/content/id/docs/concepts/workloads/controllers/_index.md @@ -0,0 +1,4 @@ +--- +title: "Controllers" +weight: 20 +--- \ No newline at end of file diff --git a/content/id/docs/concepts/workloads/controllers/garbage-collection.md b/content/id/docs/concepts/workloads/controllers/garbage-collection.md new file mode 100644 index 0000000000000..2c160b3b44d64 --- /dev/null +++ b/content/id/docs/concepts/workloads/controllers/garbage-collection.md @@ -0,0 +1,135 @@ +--- +title: Garbage Collection +content_template: templates/concept +weight: 60 +--- + +{{% capture overview %}} + +Peran dari _garbage collector_ Kubernetes adalah untuk menghapus objek tertentu yang sebelumnya mempunyai pemilik, tetapi tidak lagi mempunyai pemilik. + +{{% /capture %}} + +{{% capture body %}} + +## Pemilik dan dependen + +Beberapa objek Kubernetes adalah pemilik dari objek lainnya. Sebagai contoh, sebuah ReplicaSet adalah pemilik dari sekumpulan Pod. Objek-objek yang dimiliki disebut *dependen* dari objek pemilik. Setiap objek dependen memiliki sebuah kolom `metadata.ownerReferences` yang menunjuk ke objek pemilik. + +Terkadang, Kubernetes menentukan nilai dari `ownerReference` secara otomatis. Sebagai contoh, ketika kamu membuat sebuah ReplicaSet, Kubernetes secara otomatis akan menentukan tiap kolom `ownerReference` dari tiap Pod di dalam ReplicaSet. Pada versi 1.8, Kubernetes secara otomatis menentukan nilai dari `ownerReference` untuk objek yang diciptakan atau diadopsi oleh ReplicationController, ReplicaSet, StatefulSet, DaemonSet, Deployment, Job dan CronJob. + +Kamu juga bisa menspesifikasikan hubungan antara pemilik dan dependen dengan cara menentukan kolom `ownerReference` secara manual. + +Berikut adalah berkas untuk sebuah ReplicaSet yang memiliki tiga Pod: + +{{< codenew file="controllers/replicaset.yaml" >}} + +Jika anda membuat ReplicaSet tersebut dan kemudian melihat metadata Pod, kamu akan melihat kolom OwnerReferences: + +```shell +kubectl apply -f https://k8s.io/examples/controllers/replicaset.yaml +kubectl get pods --output=yaml +``` + +Keluaran menunjukkan bahwa pemilik Pod adalah sebuah ReplicaSet bernama `my-repset`: + +```shell +apiVersion: v1 +kind: Pod +metadata: + ... + ownerReferences: + - apiVersion: apps/v1 + controller: true + blockOwnerDeletion: true + kind: ReplicaSet + name: my-repset + uid: d9607e19-f88f-11e6-a518-42010a800195 + ... +``` +{{< note >}} +Referensi pemilik lintas _namespace_ tidak diperbolehkan oleh desain. Artinya: +1) Dependen dengan cakupan _namespace_ hanya bisa menspesifikasikan pemilik jika berada di _namespace_ yang sama, dan pemilik memiliki cakupan kluster. +2) Dependen dengan cakupan kluster hanya bisa menspesifikasikan pemilik yang memiliki cakupan kluster, tetapi tidak berlaku untuk pemilik yang memiliki cakupan kluster. +{{< /note >}} + +## Mengontrol bagaimana _garbage collector_ menghapus dependen + +Ketika kamu menghapus sebuah objek, kamu bisa menspesifikasi apakah dependen objek tersebut juga dihapus secara otomatis. Menghapus dependen secara otomatis disebut _cascading deletion_. _Cascading deletion_ memiliki dua mode: _background_ dan _foreground_. + + + +### Foreground cascading deletion + +Pada *foreground cascading deletion*, pertama objek utama akan memasuki keadaan "_deletion in progress_". Pada saat keadaan "_deletion in progress_", kondisi-kondisi berikut bernilai benar: + + * Objek masih terlihat via REST API + * `deletionTimestamp` objek telah ditentukan + * `metadata.finalizers` objek memiliki nilai `foregroundDeletion`. + + Ketika dalam keadaan "_deletion in progress_", _garbage collector_ menghapus dependen dari objek. Ketika _garbage collector_ telah menghapus semua "_blocking_" dependen (objek dengan `ownerReference.blockOwnerDeleteion=true`), _garbage collector_ menghapus objek pemilik. + + Jika kolom `ownerReferences` sebuah objek ditentukan oleh sebuah _controller_ (seperti Deployment atau Replicaset), `blockOwnerDeletion` akan ditentukan secara otomatis dan kamu tidak perlu memodifikasi kolom ini secara manual. + +### Background cascading deletion + + Pada *background cascading deletion*, Kubernetes segera menghapus objek pemilik dan _garbage collector_ kemudian menghapus dependen pada _background_. + +### Mengatur kebijakan _cascading deletion_ + + Untuk mengatur kebijakan _cascading deletion_, tambahkan kolom `propagationPolicy` pada argumen `deleteOptions` ketika menghapus sebuah Object. Nilai yang dapat digunakan adalah "Orphan", "Foreground", atau "Background". + + Sebelum Kubernetes 1.9, kebijakan _default_ dari _garbage collection_ untuk banyak _resource controller_ adalah **orphan**. Ini meliputi ReplicationController, ReplicaSet, StatefulSet, DaemonSet, dan Deployment. Untuk jenis pada kelompok versi `extensions/v1beta1`, `apps/v1beta1`, dan `apps/v1beta2`, kecuali kamu menspesifikasikan dengan cara lain, objek dependen adalah _orphan_ secara _default_. Pada Kubernetes 1.9, untuk semua jenis pada kelompok versi `apps/v1`, objek dependen dihapus secara _default_. + + Berikut sebuah contoh yang menghapus dependen di _background_: + +```shell +kubectl proxy --port=8080 +curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/replicasets/my-repset \ +-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Background"}' \ +-H "Content-Type: application/json" +``` + +Berikut adalah sebuah contoh yang mengapus dependen di _foreground_: + +```shell +kubectl proxy --port=8080 +curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/replicasets/my-repset \ +-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Foreground"}' \ +-H "Content-Type: application/json" +``` + +Berikut adalah contoh _orphan_ yang dependen: + +```shell +kubectl proxy --port=8080 +curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/replicasets/my-repset \ +-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Orphan"}' \ +-H "Content-Type: application/json" +``` + +kubectl juga mendukung _cascading deletion_. Untuk menghapus dependen secara otomatis dengan menggunakan kubectl, Ubah nilai `--cascade` menjadi _true_. Untuk _orphan_ yang dependen, ubah nilai `--cascade` menjadi _false_. Nilai _default_ untuk `--cascade` adalah _true_. + +Berikut adalah contoh yang membuat dependen ReplicaSet menjadi _orphan_: + +```shell +kubectl delete replicaset my-repset --cascade=false +``` + +### Catatan tambahan untuk Deployment + +Sebelum versi 1.7, ketika menggunakan _cascading delete_ dengan Deployment, kamu *harus* menggunakan `propagationPolicy: Foreground` untuk menghapus tidak hanya ReplicaSet yang telah diciptakan, tetapi juga Pod yang mereka miliki. Jika tipe _propagationPolicy_ tidak digunakan, hanya ReplicaSet yag akan dihapus, dan Pod akan menjadi _orphan_. Lihat [kubeadm/#149](https://github.com/kubernetes/kubeadm/issues/149#issuecomment-284766613) untuk informasi lebih lanjut. + +## Isu yang diketahui + +Ditemukan pada [#26120](https://github.com/kubernetes/kubernetes/issues/26120) + +{{% /capture %}} + +{{% capture whatsnext %}} + +[Dokumen Desain 1](https://git.k8s.io/community/contributors/design-proposals/api-machinery/garbage-collection.md) + +[Dokumen Desain 2](https://git.k8s.io/community/contributors/design-proposals/api-machinery/synchronous-garbage-collection.md) + +{{% /capture %}} \ No newline at end of file diff --git a/content/id/docs/concepts/workloads/pods/podpreset.md b/content/id/docs/concepts/workloads/pods/podpreset.md index 066c712c21043..281d84d89437c 100644 --- a/content/id/docs/concepts/workloads/pods/podpreset.md +++ b/content/id/docs/concepts/workloads/pods/podpreset.md @@ -32,7 +32,7 @@ Kubernetes menyediakan sebuah _admission controller_ (`PodPreset`) dimana, ketik Tiap Pod akan bisa dipasangkan oleh nol atau lebih PodPreset; dan tiap PodPreset bisa diterapkan ke nol atau lebih Pod. Ketika sebuah PodPreset diterapkan ke satu atau lebih Pod, Kubernetes memodifikasi Pod Spec. Untuk perubahan terhadap `Env`,`EnvFrom`, dan `VolumeMount`, Kubernetes memodifikasi spesifikasi kontainer untuk semua kontainer di dalam Pod; Untuk perubahan terhadap `Volume`, Kubernetes memodifikasi Pod Spec. {{< note >}} -Catatan: Sebuah Pod Preset mampu memodifikasi kolom `.spec.containers` pada sebuah Pod Spec jika sesuai. Tidak ada definisi resource dari Pod Preset yang akan diterapkan kepada kolom `initContainer`. +Sebuah Pod Preset mampu memodifikasi kolom `.spec.containers` pada sebuah Pod Spec jika sesuai. Tidak ada definisi resource dari Pod Preset yang akan diterapkan kepada kolom `initContainer`. {{< /note >}} ### Menonaktifkan Pod Preset untuk sebuah Pod Spesifik diff --git a/content/id/examples/controllers/replicaset.yaml b/content/id/examples/controllers/replicaset.yaml new file mode 100644 index 0000000000000..88caba44ac677 --- /dev/null +++ b/content/id/examples/controllers/replicaset.yaml @@ -0,0 +1,17 @@ +apiVersion: apps/v1 +kind: ReplicaSet +metadata: + name: my-repset +spec: + replicas: 3 + selector: + matchLabels: + pod-is-for: garbage-collection-example + template: + metadata: + labels: + pod-is-for: garbage-collection-example + spec: + containers: + - name: nginx + image: nginx \ No newline at end of file