Skip to content

Commit b889275

Browse files
author
Evan Adi
committed
Translate high-availability into Bahasa Indonesia
nits: - typos - leftover translation - use bertumpuk for stacked - update reference to id docs - fix the title of directory's index - update title to match index - remove - in control plane - unitalicize cloud - remove non inclusive word - correct anchor links - fix typos - leftover translation - remove alias anchor - adopt bootstrapping - add index - translate bootstrap to menyiapkan - add index for /setup/production-environment/tools/ fix: Moved page to correct path
1 parent 44db078 commit b889275

File tree

4 files changed

+376
-0
lines changed

4 files changed

+376
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Menginstal Kubernetes dengan perkakas penyebaran
3+
weight: 30
4+
---
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: "Menyiapkan klaster dengan kubeadm"
3+
weight: 10
4+
---
Lines changed: 364 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
---
2+
title: Membangun Klaster dengan Ketersediaan Tinggi menggunakan kubeadm
3+
content_type: task
4+
weight: 60
5+
---
6+
7+
<!-- overview -->
8+
9+
Laman ini menjelaskan dua pendekatan yang berbeda untuk membuat klaster Kubernetes dengan ketersediaan tinggi menggunakan kubeadm:
10+
11+
- Dengan Node _control plane_ yang bertumpuk (_stacked_). Pendekatan ini membutuhkan sumber daya infrastruktur yang lebih sedikit. Anggota-anggota etcd dan Node _control plane_ diletakkan pada tempat yang sama (_co-located_).
12+
- Dengan klaster etcd eksternal. Pendekatan ini membutuhkan lebih banyak sumber daya infrastruktur. Node _control plane_ dan anggota etcd berada pada tempat yang berbeda.
13+
14+
Sebelum memulai, kamu harus memikirkan dengan matang pendekatan mana yang paling sesuai untuk kebutuhan aplikasi dan _environment_-mu. [Topik perbandingan berikut](/id/docs/setup/production-environment/tools/kubeadm/ha-topology/) menguraikan kelebihan dan kekurangan dari masing-masing pendekatan.
15+
16+
Jika kamu menghadapi masalah dalam pembuatan klaster dengan ketersediaan tinggi, silakan berikan umpan balik
17+
pada [pelacak isu](https://github.com/kubernetes/kubeadm/issues/new) kubeadm.
18+
19+
Lihat juga [dokumentasi pembaruan](/id/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-15).
20+
21+
{{< caution >}}
22+
Laman ini tidak menunjukkan cara untuk menjalankan klastermu pada penyedia layanan cloud. Pada _environment_ cloud, kedua pendekatan yang didokumentasikan di sini tidak akan bekerja untuk objek Service dengan tipe LoadBalancer maupun PersistentVolume dinamis.
23+
{{< /caution >}}
24+
25+
26+
27+
## {{% heading "prerequisites" %}}
28+
29+
30+
Untuk kedua metode kamu membutuhkan infrastruktur seperti berikut:
31+
32+
- Tiga mesin yang memenuhi [kebutuhan minimum kubeadm](/id/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#sebelum-mulai) untuk
33+
Node _control plane_
34+
- Tiga mesin yang memenuhi [kebutuhan minimum kubeadm](/id/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#sebelum-mulai) untuk Node _worker_
35+
- Konektivitas internet pada seluruh mesin di dalam klaster (baik jaringan publik maupun jaringan pribadi)
36+
- Hak akses sudo pada seluruh mesin
37+
- Akses SSH dari satu perangkat ke seluruh Node pada sistem
38+
- Perkakas `kubeadm` dan `kubelet` diinstal pada seluruh mesin. Perkakas `kubectl` bersifat opsional.
39+
40+
Untuk klaster etcd eksternal saja, kamu juga membutuhkan:
41+
42+
- Tiga mesin tambahan untuk anggota-anggota etcd
43+
44+
45+
46+
<!-- steps -->
47+
48+
## Langkah pertama untuk kedua metode
49+
50+
### Membuat _load balancer_ untuk kube-apiserver
51+
52+
{{< note >}}
53+
Akan ada banyak konfigurasi untuk _load balancer_. Contoh berikut ini hanyalah salah satu
54+
opsi. Kebutuhan klastermu mungkin membutuhkan konfigurasi berbeda.
55+
{{< /note >}}
56+
57+
1. Buat sebuah _load balancer_ kube-apiserver dengan sebuah nama yang yang akan mengubah ke dalam bentuk DNS.
58+
59+
- Pada _environment_ cloud kamu harus meletakkan Node _control plane_ di belakang _load balancer_ yang meneruskan TCP. _Load balancer_ ini mendistribusikan trafik ke seluruh Node _control plane_ pada daftar tujuan. _Health check_ untuk
60+
apiserver adalah pengujian TCP pada porta yang didengarkan oleh kube-apiserver
61+
(nilai semula `:6443`).
62+
63+
- Tidak direkomendasikan untuk menggunakan alamat IP secara langsung pada _environment_ cloud.
64+
65+
- _Load balancer_ harus dapat berkomunikasi dengan seluruh Node _control plane_
66+
pada porta yang digunakan apiserver. _Load balancer_ tersebut juga harus mengizinkan trafik masuk pada porta yang didengarkannya.
67+
68+
- Pastikan alamat _load balancer_ sesuai
69+
dengan alamat `ControlPlaneEndpoint` pada kubeadm.
70+
71+
- Baca panduan [Opsi untuk _Software Load Balancing_](https://github.com/kubernetes/kubeadm/blob/master/id/docs/ha-considerations.md#options-for-software-load-balancing)
72+
untuk detail lebih lanjut.
73+
74+
2. Tambahkan Node _control plane_ pertama pada _load balancer_ dan lakukan pengujian koneksi:
75+
76+
```sh
77+
nc -v LOAD_BALANCER_IP PORT
78+
```
79+
80+
- Kegalatan koneksi yang ditolak memang diantisipasi karena apiserver belum
81+
berjalan. Namun jika mendapat _timeout_, berarti _load balancer_ tidak dapat berkomunikasi
82+
dengan Node _control plane_. Jika terjadi _timeout_, lakukan pengaturan ulang pada _load balancer_ agar dapat berkomunikasi dengan Node _control plane_.
83+
84+
3. Tambahkan Node _control plane_ lainnya pada grup tujuan _load balancer_.
85+
86+
## Node _control plane_ dan etcd bertumpuk (_stacked_)
87+
88+
### Langkah-langkah untuk Node _control plane_ pertama
89+
90+
1. Inisialisasi _control plane_:
91+
92+
```sh
93+
sudo kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs
94+
```
95+
96+
- Kamu bisa menggunakan opsi `--kubernetes-version` untuk mengatur versi Kubernetes yang akan digunakan.
97+
Direkomendasikan untuk menggunakan versi kubeadm, kubelet, kubectl, dan Kubernetes yang sama.
98+
99+
- Opsi `--control-plane-endpoint` harus diatur menuju alamat atau DNS dan porta dari _load balancer_.
100+
101+
- Opsi `--upload-certs` digunakan untuk mengunggah sertifikat-sertifikat yang harus dibagikan ke seluruh
102+
Node _control plane_ pada klaster. Jika sebaliknya, kamu memilih untuk menyalin sertifikat ke
103+
seluruh Node _control plane_ sendiri atau menggunakan perkakas automasi, silakan hapus opsi ini dan merujuk ke bagian [Distribusi sertifikat manual](#distribusi-sertifikat-manual) di bawah.
104+
105+
{{< note >}}
106+
Opsi `--config` dan `--certificate-key` pada `kubeadm init` tidak dapat digunakan secara bersamaan, maka dari itu jika kamu ingin menggunakan
107+
[konfigurasi kubeadm](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2)
108+
kamu harus menambahkan _field_ `certificateKey` pada lokasi pengaturan yang sesuai
109+
(berada di bawah `InitConfiguration` dan `JoinConfiguration: controlPlane`).
110+
{{< /note >}}
111+
112+
{{< note >}}
113+
Beberapa _plugin_ jaringan CNI membutuhkan pengaturan tambahan, seperti menentukan CIDR IP untuk Pod, meski beberapa lainnya tidak.
114+
Lihat [dokumentasi jaringan CNI](/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#jaringan-pod).
115+
Untuk menambahkan CIDR Pod, tambahkan opsi `--pod-network-cidr`, atau jika kamu menggunakan berkas konfigurasi kubeadm
116+
pasang _field_ `podSubnet` di bawah objek `networking` dari `ClusterConfiguration`.
117+
{{< /note >}}
118+
119+
- Keluaran yang dihasilkan terlihat seperti berikut ini:
120+
121+
```sh
122+
...
123+
You can now join any number of control-plane node by running the following command on each as a root:
124+
kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
125+
126+
Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
127+
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use kubeadm init phase upload-certs to reload certs afterward.
128+
129+
Then you can join any number of worker nodes by running the following on each as root:
130+
kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866
131+
```
132+
133+
- Salin keluaran ini pada sebuah berkas teks. Kamu akan membutuhkannya nanti untuk menggabungkan Node _control plane_ dan _worker_ ke klaster.
134+
- Ketika opsi `--upload-certs` digunakan dengan `kubeadm init`, sertifikat dari _control plane_ utama
135+
akan dienkripsi dan diunggah ke Secret `kubeadm-certs`.
136+
- Untuk mengunggah ulang sertifikat dan membuat kunci dekripsi baru, gunakan perintah berikut pada Node _control plane_
137+
yang sudah tergabung pada klaster:
138+
139+
```sh
140+
sudo kubeadm init phase upload-certs --upload-certs
141+
```
142+
143+
- Kamu juga dapat menentukan `--certificate-key` _custom_ pada saat `init` yang nanti dapat digunakan pada saat `join`.
144+
Untuk membuat kunci tersebut kamu dapat menggunakan perintah berikut:
145+
146+
```sh
147+
kubeadm alpha certs certificate-key
148+
```
149+
150+
{{< note >}}
151+
Secret `kubeadm-certs` dan kunci dekripsi akan kadaluarsa setelah dua jam.
152+
{{< /note >}}
153+
154+
{{< caution >}}
155+
Seperti yang tertera pada keluaran perintah, kunci sertifikat memberikan akses ke data klaster yang bersifat sensitif, jaga kerahasiaannya!
156+
{{< /caution >}}
157+
158+
2. Pasang _plugin_ CNI pilihanmu:
159+
[Ikuti petunjuk berikut](/id/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#jaringan-pod)
160+
untuk menginstal penyedia CNI. Pastikan konfigurasinya sesuai dengan CIDR Pod yang ditentukan pada berkas konfigurasi kubeadm jika diterapkan.
161+
162+
Pada contoh berikut kami menggunakan Weave Net:
163+
164+
```sh
165+
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
166+
```
167+
168+
3. Tulis perintah berikut dan saksikan Pod komponen-komponen _control plane_ mulai dinyalakan:
169+
170+
```sh
171+
kubectl get pod -n kube-system -w
172+
```
173+
174+
### Langkah-langkah selanjutnya untuk Node _control plane_
175+
176+
{{< note >}}
177+
Sejak kubeadm versi 1.15 kamu dapat menggabungkan beberapa Node _control plane_ secara bersamaan.
178+
Pada versi sebelumnya, kamu harus menggabungkan Node _control plane_ baru secara berurutan, setelah
179+
Node pertama selesai diinisialisasi.
180+
{{< /note >}}
181+
182+
Untuk setiap Node _control plane_ kamu harus:
183+
184+
1. Mengeksekusi perintah untuk bergabung yang sebelumnya diberikan pada keluaran `kubeadm init` pada Node pertama.
185+
Perintah tersebut terlihat seperti ini:
186+
187+
```sh
188+
sudo kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866 --control-plane --certificate-key f8902e114ef118304e561c3ecd4d0b543adc226b7a07f675f56564185ffe0c07
189+
```
190+
191+
- Opsi `--control-plane` menunjukkan `kubeadm join` untuk membuat _control plane_ baru.
192+
- Opsi `--certificate-key ...` akan membuat sertifikat _control plane_ diunduh
193+
dari Secret `kubeadm-certs` pada klaster dan didekripsi menggunakan kunci yang diberikan.
194+
195+
## Node etcd eksternal
196+
197+
Membangun sebuah klaster dengan Node etcd eksternal memiliki prosedur yang mirip dengan etcd bertumpuk
198+
dengan pengecualian yaitu kamu harus setup etcd terlebih dulu, dan kamu harus memberikan informasi etcd
199+
pada berkas konfigurasi kubeadm.
200+
201+
### Memasang klaster etcd
202+
203+
1. Ikuti [petunjuk berikut](/docs/setup/production-environment/tools/kubeadm/setup-ha-etcd-with-kubeadm/) untuk membangun klaster etcd.
204+
205+
2. Lakukan pengaturan SSH seperti yang dijelaskan [di sini](#distribusi-sertifikat-manual).
206+
207+
3. Salin berkas-berkas berikut dari Node etcd manapun pada klaster ke Node _control plane_ pertama:
208+
209+
```sh
210+
export CONTROL_PLANE="[email protected]"
211+
scp /etc/kubernetes/pki/etcd/ca.crt "${CONTROL_PLANE}":
212+
scp /etc/kubernetes/pki/apiserver-etcd-client.crt "${CONTROL_PLANE}":
213+
scp /etc/kubernetes/pki/apiserver-etcd-client.key "${CONTROL_PLANE}":
214+
```
215+
216+
- Ganti nilai `CONTROL_PLANE` dengan `user@host` dari mesin _control plane_ pertama.
217+
218+
### Mengatur Node _control plane_ pertama
219+
220+
1. Buat sebuah berkas bernama `kubeadm-config.yaml` dengan konten sebagai berikut:
221+
222+
apiVersion: kubeadm.k8s.io/v1beta2
223+
kind: ClusterConfiguration
224+
kubernetesVersion: stable
225+
controlPlaneEndpoint: "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT"
226+
etcd:
227+
external:
228+
endpoints:
229+
- https://ETCD_0_IP:2379
230+
- https://ETCD_1_IP:2379
231+
- https://ETCD_2_IP:2379
232+
caFile: /etc/kubernetes/pki/etcd/ca.crt
233+
certFile: /etc/kubernetes/pki/apiserver-etcd-client.crt
234+
keyFile: /etc/kubernetes/pki/apiserver-etcd-client.key
235+
236+
{{< note >}}
237+
Perbedaan antara etcd bertumpuk dan etcd eksternal yaitu etcd eksternal membutuhkan
238+
sebuah berkas konfigurasi dengan _endpoint_ etcd di bawah objek `external`untuk `etcd`.
239+
Pada kasus ini topologi etcd bertumpuk dikelola secara otomatis.
240+
{{< /note >}}
241+
242+
- Ganti variabel-variabel berikut pada templat konfigurasi dengan nilai yang sesuai untuk klastermu:
243+
244+
- `LOAD_BALANCER_DNS`
245+
- `LOAD_BALANCER_PORT`
246+
- `ETCD_0_IP`
247+
- `ETCD_1_IP`
248+
- `ETCD_2_IP`
249+
250+
Langkah-langkah berikut sama dengan pengaturan pada etcd bertumpuk:
251+
252+
1. Jalankan `sudo kubeadm init --config kubeadm-config.yaml --upload-certs` pada Node ini.
253+
254+
2. Tulis perintah untuk bergabung yang didapat dari keluaran ke dalam sebuah berkas teks untuk digunakan nanti.
255+
256+
3. Pasang _plugin_ CNI pilihanmu. Contoh berikut ini untuk Weave Net:
257+
258+
```sh
259+
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
260+
```
261+
262+
### Langkah selanjutnya untuk Node _control plane_ lainnya
263+
264+
Langkah-langkah selanjutnya sama untuk pengaturan etcd bertumpuk:
265+
266+
- Pastikan Node _control plane_ pertama sudah diinisialisasi dengan sempurna.
267+
- Gabungkan setiap Node _control plane_ dengan perintah untuk bergabung yang kamu simpan dalam berkas teks. Direkomendasikan untuk
268+
menggabungkan Node _control plane_ satu persatu.
269+
- Jangan lupakan bahwa kunci dekripsi dari `--certificate-key` akan kadaluarsa setelah dua jam, pada pengaturan semula.
270+
271+
## Tugas-tugas umum setelah menyiapkan _control plane_
272+
273+
### Menginstal _worker_
274+
275+
Node _worker_ bisa digabungkan ke klaster menggunakan perintah yang kamu simpan sebelumnya
276+
dari keluaran perintah `kubeadm init`:
277+
278+
```sh
279+
sudo kubeadm join 192.168.0.200:6443 --token 9vr73a.a8uxyaju799qwdjv --discovery-token-ca-cert-hash sha256:7c2e69131a36ae2a042a339b33381c6d0d43887e2de83720eff5359e26aec866
280+
```
281+
282+
## Distribusi sertifikat manual
283+
284+
Jika kamu memilih untuk tidak menggunakan `kubeadm init` dengan opsi `--upload-certs` berarti kamu harus
285+
menyalin sertifikat dari Node _control plane_ utama secara manual ke
286+
Node _control plane_ yang akan bergabung.
287+
288+
Ada beberapa cara untuk melakukan hal ini. Pada contoh berikut ini kami menggunakan `ssh` dan `scp`:
289+
290+
SSH dibutuhkan jika kamu ingin mengendalikan seluruh Node dari satu mesin.
291+
292+
1. Nyalakan ssh-agent pada perangkat utamamu yang memiliki akses ke seluruh Node pada
293+
sistem:
294+
295+
```
296+
eval $(ssh-agent)
297+
```
298+
299+
2. Tambahkan identitas SSH milikmu ke dalam sesi:
300+
301+
```
302+
ssh-add ~/.ssh/path_to_private_key
303+
```
304+
305+
3. Lakukan SSH secara bergantian ke setiap Node untuk memastikan koneksi bekerja dengan baik.
306+
307+
- Ketika kamu melakukan SSH ke Node, pastikan untuk menambahkan opsi `-A`:
308+
309+
```
310+
ssh -A 10.0.0.7
311+
```
312+
313+
- Jika kamu menggunakan sudo pada Node, pastikan kamu menyimpan _environment_ yang ada sehingga penerusan SSH
314+
dapat bekerja dengan baik:
315+
316+
```
317+
sudo -E -s
318+
```
319+
320+
4. Setelah mengatur SSH pada seluruh Node kamu harus menjalankan skrip berikut pada Node _control plane_ pertama setelah
321+
menjalankan `kubeadm init`. Skrip ini akan menyalin sertifikat dari Node _control plane_ pertama ke Node
322+
_control plane_ lainnya:
323+
324+
Pada contoh berikut, ganti `CONTROL_PLANE_IPS` dengan alamat IP dari
325+
Node _control plane_ lainnya.
326+
```sh
327+
USER=ubuntu # dapat disesuaikan
328+
CONTROL_PLANE_IPS="10.0.0.7 10.0.0.8"
329+
for host in ${CONTROL_PLANE_IPS}; do
330+
scp /etc/kubernetes/pki/ca.crt "${USER}"@$host:
331+
scp /etc/kubernetes/pki/ca.key "${USER}"@$host:
332+
scp /etc/kubernetes/pki/sa.key "${USER}"@$host:
333+
scp /etc/kubernetes/pki/sa.pub "${USER}"@$host:
334+
scp /etc/kubernetes/pki/front-proxy-ca.crt "${USER}"@$host:
335+
scp /etc/kubernetes/pki/front-proxy-ca.key "${USER}"@$host:
336+
scp /etc/kubernetes/pki/etcd/ca.crt "${USER}"@$host:etcd-ca.crt
337+
# Kutip baris berikut jika kamu menggunakan etcd eksternal
338+
scp /etc/kubernetes/pki/etcd/ca.key "${USER}"@$host:etcd-ca.key
339+
done
340+
```
341+
342+
{{< caution >}}
343+
Salinlah hanya sertifikat yang berada pada daftar di atas saja. Perkakas kubeadm akan mengambil alih pembuatan sertifikat lainnya
344+
dengan SANs yang dibutuhkan untuk Node _control plane_ yang akan bergabung. Jika kamu menyalin seluruh sertifikat tanpa sengaja,
345+
pembuatan Node tambahan dapat gagal akibat tidak adanya SANs yang dibutuhkan.
346+
{{< /caution >}}
347+
348+
5. Lalu, pada setiap Node _control plane_ yang bergabung kamu harus menjalankan skrip berikut sebelum menjalankan `kubeadm join`.
349+
Skrip ini akan memindahkan sertifikat yang telah disalin sebelumnya dari direktori _home_ ke `/etc/kubernetes/pki`:
350+
351+
```sh
352+
USER=ubuntu # dapat disesuaikan
353+
mkdir -p /etc/kubernetes/pki/etcd
354+
mv /home/${USER}/ca.crt /etc/kubernetes/pki/
355+
mv /home/${USER}/ca.key /etc/kubernetes/pki/
356+
mv /home/${USER}/sa.pub /etc/kubernetes/pki/
357+
mv /home/${USER}/sa.key /etc/kubernetes/pki/
358+
mv /home/${USER}/front-proxy-ca.crt /etc/kubernetes/pki/
359+
mv /home/${USER}/front-proxy-ca.key /etc/kubernetes/pki/
360+
mv /home/${USER}/etcd-ca.crt /etc/kubernetes/pki/etcd/ca.crt
361+
# Kutip baris berikut jika kamu menggunakan etcd eksternal
362+
mv /home/${USER}/etcd-ca.key /etc/kubernetes/pki/etcd/ca.key
363+
```
364+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: "Membangun klaster menggunakan kubeadm"
3+
weight: 10
4+
---

0 commit comments

Comments
 (0)