|
| 1 | +--- |
| 2 | +title: Mengatur Control Plane Kubernetes dengan Ketersediaan Tinggi (High-Availability) |
| 3 | +content_type: task |
| 4 | +--- |
| 5 | + |
| 6 | +<!-- overview --> |
| 7 | + |
| 8 | +{{< feature-state for_k8s_version="v1.5" state="alpha" >}} |
| 9 | + |
| 10 | +Kamu dapat mereplikasi _control plane_ Kubernetes dalam skrip `kube-up` atau `kube-down` untuk Google Compute Engine (GCE). |
| 11 | +Dokumen ini menjelaskan cara menggunakan skrip kube-up/down untuk mengelola _control plane_ dengan ketersedian tinggi atau _high_availability_ (HA) dan bagaimana _control plane_ HA diimplementasikan untuk digunakan dalam GCE. |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +## {{% heading "prerequisites" %}} |
| 16 | + |
| 17 | + |
| 18 | +{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} |
| 19 | + |
| 20 | + |
| 21 | + |
| 22 | +<!-- steps --> |
| 23 | + |
| 24 | +## Memulai klaster yang kompatibel dengan HA |
| 25 | + |
| 26 | +Untuk membuat klaster yang kompatibel dengan HA, kamu harus mengatur tanda ini pada skrip `kube-up`: |
| 27 | + |
| 28 | +* `MULTIZONE=true` - untuk mencegah penghapusan replika _control plane_ kubelet dari zona yang berbeda dengan zona bawaan server. |
| 29 | +Ini diperlukan jika kamu ingin menjalankan replika _control plane_ pada zona berbeda, dimana hal ini disarankan. |
| 30 | + |
| 31 | +* `ENABLE_ETCD_QUORUM_READ=true` - untuk memastikan bahwa pembacaan dari semua server API akan mengembalikan data terbaru. |
| 32 | +Jika `true`, bacaan akan diarahkan ke replika pemimpin dari etcd. |
| 33 | +Menetapkan nilai ini menjadi `true` bersifat opsional: pembacaan akan lebih dapat diandalkan tetapi juga akan menjadi lebih lambat. |
| 34 | + |
| 35 | +Sebagai pilihan, kamu dapat menentukan zona GCE tempat dimana replika _control plane_ pertama akan dibuat. |
| 36 | +Atur tanda berikut: |
| 37 | + |
| 38 | +* `KUBE_GCE_ZONE=zone` - zona tempat di mana replika _control plane_ pertama akan berjalan. |
| 39 | + |
| 40 | +Berikut ini contoh perintah untuk mengatur klaster yang kompatibel dengan HA pada zona GCE europe-west1-b: |
| 41 | + |
| 42 | +```shell |
| 43 | +MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh |
| 44 | +``` |
| 45 | + |
| 46 | +Perhatikan bahwa perintah di atas digunakan untuk membuat klaster dengan sebuah _control plane_; |
| 47 | +Namun, kamu bisa menambahkan replika _control plane_ baru ke klaster dengan perintah berikutnya. |
| 48 | + |
| 49 | + |
| 50 | +## Menambahkan replika _control plane_ yang baru |
| 51 | + |
| 52 | +Setelah kamu membuat klaster yang kompatibel dengan HA, kamu bisa menambahkan replika _control plane_ ke sana. |
| 53 | +Kamu bisa menambahkan replika _control plane_ dengan menggunakan skrip `kube-up` dengan tanda berikut ini: |
| 54 | + |
| 55 | +* `KUBE_REPLICATE_EXISTING_MASTER=true` - untuk membuat replika dari _control plane_ yang sudah ada. |
| 56 | + |
| 57 | +* `KUBE_GCE_ZONE=zone` - zona di mana replika _control plane_ itu berjalan. |
| 58 | +Region ini harus sama dengan region dari zona replika yang lain. |
| 59 | + |
| 60 | +Kamu tidak perlu mengatur tanda `MULTIZONE` atau `ENABLE_ETCD_QUORUM_READS`, |
| 61 | +karena tanda itu diturunkan pada saat kamu memulai klaster yang kompatible dengan HA. |
| 62 | + |
| 63 | +Berikut ini contoh perintah untuk mereplikasi _control plane_ pada klaster sebelumnya yang kompatibel dengan HA: |
| 64 | + |
| 65 | +```shell |
| 66 | +KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh |
| 67 | +``` |
| 68 | + |
| 69 | +## Menghapus replika _control plane_ |
| 70 | + |
| 71 | +Kamu dapat menghapus replika _control plane_ dari klaster HA dengan menggunakan skrip `kube-down` dengan tanda berikut: |
| 72 | + |
| 73 | +* `KUBE_DELETE_NODES=false` - untuk mencegah penghapusan kubelet. |
| 74 | + |
| 75 | +* `KUBE_GCE_ZONE=zone` - zona di mana replika _control plane_ akan dihapus. |
| 76 | + |
| 77 | +* `KUBE_REPLICA_NAME=replica_name` - (opsional) nama replika _control plane_ yang akan dihapus. |
| 78 | +Jika kosong: replika mana saja dari zona yang diberikan akan dihapus. |
| 79 | + |
| 80 | +Berikut ini contoh perintah untuk menghapus replika _control plane_ dari klaster HA yang sudah ada sebelumnya: |
| 81 | + |
| 82 | +```shell |
| 83 | +KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh |
| 84 | +``` |
| 85 | + |
| 86 | +## Mengatasi replika _control plane_ yang gagal |
| 87 | + |
| 88 | +Jika salah satu replika _control plane_ di klaster HA kamu gagal, |
| 89 | +praktek terbaik adalah menghapus replika dari klaster kamu dan menambahkan replika baru pada zona yang sama. |
| 90 | +Berikut ini contoh perintah yang menunjukkan proses tersebut: |
| 91 | + |
| 92 | +1. Menghapus replika yang gagal: |
| 93 | + |
| 94 | +```shell |
| 95 | +KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh |
| 96 | +``` |
| 97 | + |
| 98 | +2. Menambahkan replika baru untuk menggantikan replika yang lama |
| 99 | + |
| 100 | +```shell |
| 101 | +KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh |
| 102 | +``` |
| 103 | + |
| 104 | +## Praktek terbaik untuk mereplikasi _control plane_ untuk klaster HA |
| 105 | + |
| 106 | +* Usahakan untuk menempatkan replika _control plane_ pada zona yang berbeda. Pada saat terjadi kegagalan zona, semua _control plane_ yang ditempatkan dalam zona tersebut akan gagal pula. |
| 107 | +Untuk bertahan dari kegagalan pada sebuah zona, tempatkan juga Node pada beberapa zona yang lain |
| 108 | +(Lihatlah [multi-zona](/id/docs/setup/best-practices/multiple-zones/) untuk lebih detail). |
| 109 | + |
| 110 | +* Jangan gunakan klaster dengan dua replika _control plane_. Konsensus pada klaster dengan dua replika membutuhkan kedua replika tersebut berjalan pada saat mengubah keadaan yang persisten. |
| 111 | +Akibatnya, kedua replika tersebut diperlukan dan kegagalan salah satu replika mana pun mengubah klaster dalam status kegagalan mayoritas. |
| 112 | +Dengan demikian klaster dengan dua replika lebih buruk, dalam hal HA, daripada klaster dengan replika tunggal. |
| 113 | + |
| 114 | +* Ketika kamu menambahkan sebuah replika _control plane_, status klaster (etcd) disalin ke sebuah _instance_ baru. |
| 115 | +Jika klaster itu besar, mungkin butuh waktu yang lama untuk menduplikasi keadaannya. |
| 116 | +Operasi ini dapat dipercepat dengan memigrasi direktori data etcd, seperti yang dijelaskan [di sini](https://coreos.com/etcd/docs/latest/admin_guide.html#member-migration) |
| 117 | +(Kami sedang mempertimbangkan untuk menambahkan dukungan untuk migrasi direktori data etcd di masa mendatang). |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | +<!-- discussion --> |
| 122 | + |
| 123 | +## Catatan implementasi |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +### Ikhtisar |
| 128 | + |
| 129 | +Setiap replika _control plane_ akan menjalankan komponen berikut dalam mode berikut: |
| 130 | + |
| 131 | +* _instance_ etcd: semua _instance_ akan dikelompokkan bersama menggunakan konsensus; |
| 132 | + |
| 133 | +* server API : setiap server akan berbicara dengan lokal etcd - semua server API pada cluster akan tersedia; |
| 134 | + |
| 135 | +* pengontrol (_controller_), penjadwal (_scheduler_), dan _scaler_ klaster automatis: akan menggunakan mekanisme sewa - dimana hanya satu _instance_ dari masing-masing mereka yang akan aktif dalam klaster; |
| 136 | + |
| 137 | +* manajer tambahan (_add-on_): setiap manajer akan bekerja secara independen untuk mencoba menjaga tambahan dalam sinkronisasi. |
| 138 | + |
| 139 | +Selain itu, akan ada penyeimbang beban (_load balancer_) di depan server API yang akan mengarahkan lalu lintas eksternal dan internal menuju mereka. |
| 140 | + |
| 141 | + |
| 142 | +### Penyeimbang Beban |
| 143 | + |
| 144 | +Saat memulai replika _control plane_ kedua, penyeimbang beban yang berisi dua replika akan dibuat |
| 145 | +dan alamat IP dari replika pertama akan dipromosikan ke alamat IP penyeimbang beban. |
| 146 | +Demikian pula, setelah penghapusan replika _control plane_ kedua yang dimulai dari paling akhir, penyeimbang beban akan dihapus dan alamat IP-nya akan diberikan ke replika terakhir yang ada. |
| 147 | +Mohon perhatikan bahwa pembuatan dan penghapusan penyeimbang beban adalah operasi yang rumit dan mungkin perlu beberapa waktu (~20 menit) untuk dipropagasikan. |
| 148 | + |
| 149 | + |
| 150 | +### Service _control plane_ & kubelet |
| 151 | + |
| 152 | +Daripada sistem mencoba untuk menjaga daftar terbaru dari apiserver Kubernetes yang ada dalam Service Kubernetes, |
| 153 | +sistem akan mengarahkan semua lalu lintas ke IP eksternal: |
| 154 | + |
| 155 | +* dalam klaster dengan satu _control plane_, IP diarahkan ke _control plane_ tunggal. |
| 156 | + |
| 157 | +* dalam klaster dengan multiple _control plane_, IP diarahkan ke penyeimbang beban yang ada di depan _control plane_. |
| 158 | + |
| 159 | +Demikian pula, IP eksternal akan digunakan oleh kubelet untuk berkomunikasi dengan _control plane_. |
| 160 | + |
| 161 | + |
| 162 | +### Sertifikat _control plane_ |
| 163 | + |
| 164 | +Kubernetes menghasilkan sertifikat TLS _control plane_ untuk IP publik eksternal dan IP lokal untuk setiap replika. |
| 165 | +Tidak ada sertifikat untuk IP publik sementara (_ephemeral_) dari replika; |
| 166 | +Untuk mengakses replika melalui IP publik sementara, kamu harus melewatkan verifikasi TLS. |
| 167 | + |
| 168 | +### Pengklasteran etcd |
| 169 | + |
| 170 | +Untuk mengizinkan pengelompokkan etcd, porta yang diperlukan untuk berkomunikasi antara _instance_ etcd akan dibuka (untuk komunikasi dalam klaster). |
| 171 | +Untuk membuat penyebaran itu aman, komunikasi antara _instance_ etcd diotorisasi menggunakan SSL. |
| 172 | + |
| 173 | +## Bacaan tambahan |
| 174 | + |
| 175 | +[Dokumen desain - Penyebaran master HA automatis](https://git.k8s.io/community/contributors/design-proposals/cluster-lifecycle/ha_master.md) |
| 176 | + |
| 177 | + |
0 commit comments