Skip to content

Commit b04647b

Browse files
authored
Merge pull request #24356 from ariscahyadi/id-local-admin-cluster-mgmt
ID localization for administrator cluster - cluster management
2 parents 3d23e42 + c06c6b7 commit b04647b

File tree

1 file changed

+221
-0
lines changed

1 file changed

+221
-0
lines changed
Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
---
2+
title: Manajemen Klaster
3+
content_type: concept
4+
---
5+
6+
<!-- overview -->
7+
8+
Dokumen ini menjelaskan beberapa topik yang terkait dengan siklus hidup sebuah klaster: membuat klaster baru,
9+
memperbarui Node _control plane_ dan Node pekerja dari klaster kamu,
10+
melakukan pemeliharaan Node (misalnya pembaruan kernel), dan meningkatkan versi API Kubernetes dari
11+
klaster yang berjalan.
12+
13+
<!-- body -->
14+
15+
16+
## Membuat dan mengonfigurasi klaster
17+
18+
Untuk menginstal Kubernetes dalam sekumpulan mesin, konsultasikan dengan salah satu [Panduan Memulai](/id/docs/setup) tergantung dengan lingkungan kamu.
19+
20+
## Memperbarui klaster
21+
22+
Status saat ini pembaruan klaster bergantung pada penyedia, dan beberapa rilis yang mungkin memerlukan perhatian khusus saat memperbaruinya. Direkomendasikan agar admin membaca [Catatan Rilis](https://git.k8s.io/kubernetes/CHANGELOG/README.md), serta catatan khusus pembaruan versi sebelum memperbarui klaster mereka.
23+
24+
### Memperbarui klaster Azure Kubernetes Service (AKS)
25+
26+
Azure Kubernetes Service memungkinkan pembaruan layanan mandiri yang mudah dari _control plane_ dan Node pada klaster kamu. Prosesnya adalah
27+
saat ini dimulai oleh pengguna dan dijelaskan dalam [Azure AKS documentation](https://docs.microsoft.com/en-us/azure/aks/upgrade-cluster).
28+
29+
### Memperbarui klaster Google Compute Engine
30+
31+
Google Compute Engine Open Source (GCE-OSS) mendukung pembaruan _control plane_ dengan menghapus dan
32+
membuat ulang _control plane_, sambil mempertahankan _Persistent Disk_ (PD) yang sama untuk memastikan bahwa data disimpan pada berkas
33+
untuk setiap kali pembaruan.
34+
35+
Pembaruan Node untuk GCE menggunakan [grup _instance_ yang di-_manage_](https://cloud.google.com/compute/docs/instance-groups/), dimana setiap Node
36+
dihancurkan secara berurutan dan kemudian dibuat ulang dengan perangkat lunak baru. Semua Pod yang berjalan di Node tersebut harus
37+
dikontrol oleh pengontrol replikasi (_Replication Controller_), atau dibuat ulang secara manual setelah peluncuran.
38+
39+
Pembaruan versi pada klaster open source Google Compute Engine (GCE) yang dikontrol oleh skrip `cluster/gce/upgrade.sh`.
40+
41+
Dapatkan penggunaan dengan menjalankan `cluster/gce/upgrade.sh -h`.
42+
43+
Misalnya, untuk meningkatkan hanya _control plane_ kamu ke versi tertentu (v1.0.2):
44+
45+
```shell
46+
cluster/gce/upgrade.sh -M v1.0.2
47+
```
48+
49+
Sebagai alternatif, untuk meningkatkan seluruh klaster kamu ke rilis yang stabil terbaru gunakan:
50+
51+
```shell
52+
cluster/gce/upgrade.sh release/stable
53+
```
54+
55+
### Memperbarui klaster Google Kubernetes Engine
56+
57+
Google Kubernetes Engine secara otomatis memperbarui komponen _control plane_ (misalnya, `kube-apiserver`, ` kube-scheduler`) ke versi yang terbaru. Ini juga menangani pembaruan sistem operasi dan komponen lain yang dijalankan oleh _control plane_.
58+
59+
Proses pembaruan Node dimulai oleh pengguna dan dijelaskan dalam [Dokumentasi Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/clusters/upgrade).
60+
61+
### Memperbarui klaster Amazon EKS
62+
63+
Komponen _control plane_ klaster pada Amazon EKS dapat diperbarui dengan menggunakan eksctl, AWS Management Console, atau AWS CLI. Prosesnya dimulai oleh pengguna dan dijelaskan di [Dokumentasi Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/update-cluster.html).
64+
65+
### Memperbarui klaster Oracle Cloud Infrastructure Container Engine untuk Kubernetes (OKE)
66+
67+
Oracle membuat dan mengelola sekumpulan Node _control plane_ pada _control plane_ Oracle atas nama kamu (dan infrastruktur Kubernetes terkait seperti Node etcd) untuk memastikan kamu memiliki Kubernetes _control plane_ yang terkelola dengan ketersedian tinggi. Kamu juga dapat memperbarui Node _control plane_ ini dengan mulus ke versi Kubernetes baru tanpa berhenti. Tindakan ini dijelaskan dalam [Dokumentasi OKE](https://docs.cloud.oracle.com/iaas/Content/ContEng/Tasks/contengupgradingk8smasternode.htm).
68+
69+
### Memperbarui klaster pada platform yang lain
70+
71+
Penyedia dan alat yang berbeda akan mengelola pembaruan secara berbeda. Kamu disarankan untuk membaca dokumentasi utama mereka terkait pembaruan.
72+
73+
* [kops](https://github.com/kubernetes/kops)
74+
* [kubespray](https://github.com/kubernetes-incubator/kubespray)
75+
* [CoreOS Tectonic](https://coreos.com/tectonic/docs/latest/admin/upgrade.html)
76+
* [Digital Rebar](https://provision.readthedocs.io/en/tip/doc/content-packages/krib.html)
77+
* ...
78+
79+
Untuk memperbarukan sebuah klaster pada platform yang tidak disebutkan dalam daftar di atas, periksa urutan pembaruan komponen pada
80+
halaman [Versi Skewed](/docs/setup/release/version-skew-policy/#supported-component-upgrade-order).
81+
82+
## Merubah ukuran klaster
83+
84+
Jika klaster kamu kekurangan sumber daya, kamu dapat dengan mudah menambahkan lebih banyak mesin ke klaster tersebut jika klaster kamu
85+
menjalankan [Mode Node Registrasi Sendiri](/docs/concepts/architecture/nodes/#self-registration-of-nodes).
86+
Jika kamu menggunakan GCE atau Google Kubernetes Engine, itu dilakukan dengan mengubah ukuran grup _instance_ yang mengelola Node kamu.
87+
Ini dapat dilakukan dengan mengubah jumlah _instance_ pada
88+
`Compute > Compute Engine > Instance groups > your group > Edit group`
89+
[Laman Google Cloud Console](https://console.developers.google.com) atau dengan baris perintah gcloud:
90+
91+
```shell
92+
gcloud compute instance-groups managed resize kubernetes-node-pool --size=42 --zone=$ZONE
93+
```
94+
95+
Grup _instance_ akan menangani penempatan _image_ yang sesuai pada mesin baru dan memulainya,
96+
sedangkan Kubelet akan mendaftarkan Node-nya ke server API agar tersedia untuk penjadwalan.
97+
Jika kamu menurunkan skala grup _instance_, sistem akan secara acak memilih Node untuk dimatikan.
98+
99+
Di lingkungan lain kamu mungkin perlu mengonfigurasi mesin sendiri dan memberi tahu Kubelet di mana server API mesin itu berjalan.
100+
101+
### Merubah ukuran klaster Azure Kubernetes Service (AKS)
102+
103+
Azure Kubernetes Service memungkinkan perubahan ukuran klaster yang dimulai oleh pengguna dari CLI atau
104+
portal Azure dan dijelaskan dalam [Dokumentasi Azure AKS](https://docs.microsoft.com/en-us/azure/aks/scale-cluster).
105+
106+
107+
### Penyekalaan otomatis klaster
108+
109+
Jika kamu menggunakan GCE atau Google Kubernetes Engine, kamu dapat mengonfigurasi klaster kamu sehingga secara otomatis diskalakan berdasarkan
110+
kebutuhan Pod.
111+
112+
Seperti yang dideskripsikan dalam [Sumber daya komputasi](/id/docs/concepts/configuration/manage-resources-containers/),
113+
pengguna dapat memesan berapa banyak CPU dan memori yang dialokasikan ke Pod.
114+
Informasi ini digunakan oleh penjadwal Kubernetes untuk menemukan tempat menjalankan Pod. Jika
115+
tidak ada Node yang memiliki kapasitas kosong yang cukup (atau tidak sesuai dengan persyaratan Pod yang lainnya) maka Pod
116+
menunggu sampai beberapa Pod dihentikan atau Node baru ditambahkan.
117+
118+
Penyekala otomatis klaster mencari Pod yang tidak dapat dijadwalkan dan memeriksa apakah perlu menambahkan Node baru, yang serupa
119+
dengan Node yang lain dalam klaster untuk membantu. Jika ya, maka itu mengubah ukuran klaster agar dapat mengakomodasi Pod yang menunggu.
120+
121+
Penyekala otomatis klaster juga menurunkan skala klaster jika mengetahui bahwa satu atau beberapa Node tidak diperlukan lagi untuk
122+
periode waktu tambahan (selama 10 menit tetapi dapat berubah di masa mendatang).
123+
124+
Penyekala otomatis klaster dikonfigurasikan untuk per grup _instance_ (GCE) atau kumpulan Node (Google Kubernetes Engine).
125+
126+
Jika kamu menggunakan GCE, kamu dapat mengaktifkannya sambil membuat klaster dengan skrip kube-up.sh.
127+
Untuk mengonfigurasi penyekala otomatis klaster, kamu harus menyetel tiga variabel lingkungan:
128+
129+
* `KUBE_ENABLE_CLUSTER_AUTOSCALER` - mengaktifkan penyekala otomatis klaster kalau di setel menjadi _true_.
130+
* `KUBE_AUTOSCALER_MIN_NODES` - minimal jumlah Node dalam klaster.
131+
* `KUBE_AUTOSCALER_MAX_NODES` - maksimal jumlah Node dalam klaster.
132+
133+
Contoh:
134+
135+
```shell
136+
KUBE_ENABLE_CLUSTER_AUTOSCALER=true KUBE_AUTOSCALER_MIN_NODES=3 KUBE_AUTOSCALER_MAX_NODES=10 NUM_NODES=5 ./cluster/kube-up.sh
137+
```
138+
139+
Pada Google Kubernetes Engine, kamu mengonfigurasi penyekala otomatis klaster baik saat pembuatan atau pembaruan klaster atau saat membuat kumpulan Node tertentu
140+
(yang ingin kamu skalakan secara otomatis) dengan meneruskan _flag_ `--enable-autoscaling`, `--min-nodes` dan `--max-nodes`
141+
yang sesuai dengan perintah `gcloud`.
142+
143+
Contoh:
144+
145+
```shell
146+
gcloud container clusters create mytestcluster --zone=us-central1-b --enable-autoscaling --min-nodes=3 --max-nodes=10 --num-nodes=5
147+
```
148+
149+
```shell
150+
gcloud container clusters update mytestcluster --enable-autoscaling --min-nodes=1 --max-nodes=15
151+
```
152+
153+
**Penyekala otomatis klaster mengharapkan bahwa Node belum dimodifikasi secara manual (misalnya dengan menambahkan label melalui kubectl) karena properti tersebut tidak akan disebarkan ke Node baru dalam grup _instance_ yang sama.**
154+
155+
Untuk detail selengkapnya tentang cara penyekala otomatis klaster memutuskan apakah, kapan dan bagaimana
156+
melakukan penyekalaan sebuah klaster, silahkan lihat dokumentasi [FAQ](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md)
157+
dari proyek penyekala otomatis klaster.
158+
159+
## Memelihara dalam Node
160+
161+
Jika kamu perlu memulai ulang Node (seperti untuk pembaruan kernel, pembaruan libc, pembaruan perangkat keras, dll.) dan waktu kegagalan (_downtime_) yang
162+
singkat, lalu ketika Kubelet memulai ulang, maka ia akan mencoba untuk memulai ulang Pod yang dijadwalkan. Jika mulai ulang membutuhkan waktu yang lebih lama
163+
(waktu bawaan adalah 5 menit, yang dikontrol oleh `--pod-eviction-timeout` pada _controller-manager_),
164+
maka pengontrol Node akan menghentikan Pod yang terikat ke Node yang tidak tersedia. Jika ada yang sesuai dengan
165+
kumpulan replika (atau pengontrol replikasi), maka salinan baru dari Pod akan dimulai pada Node yang berbeda. Jadi, dalam kasus di mana semua
166+
Pod direplikasi, pembaruan dapat dilakukan tanpa koordinasi khusus, dengan asumsi bahwa tidak semua Node akan mati pada saat yang bersamaan.
167+
168+
Jika kamu ingin lebih mengontrol proses pembaruan, kamu dapat menggunakan alur kerja berikut ini:
169+
170+
Gunakan `kubectl drain` untuk meghentikan perlahan-lahan semua Pod dalam Node ketika menandai Node sebagai _unschedulable_:
171+
172+
```shell
173+
kubectl drain $NODENAME
174+
```
175+
176+
Ini mencegah Pod baru mendarat pada Node saat kamu mencoba melepaskannya.
177+
178+
Untuk Pod dengan sebuah kumpulan replika, Pod tersebut akan diganti dengan Pod baru yang akan dijadwalkan ke Node baru. Selain itu, jika Pod adalah bagian dari layanan, maka klien akan secara otomatis dialihkan ke Pod baru.
179+
180+
Untuk Pod yang tidak memiliki replika, kamu perlu memunculkan salinan baru dari Pod tersebut, dan menganggapnya bukan bagian dari layanan, alihkan klien ke Pod tersebut.
181+
182+
Lakukan pekerjaan pemeliharaan pada Node.
183+
184+
Buat Node dapat dijadwal lagi:
185+
186+
187+
```shell
188+
kubectl uncordon $NODENAME
189+
```
190+
191+
Jika kamu menghapus Node dari _instance_ VM dan membuat yang baru, maka sumber daya Node baru yang dapat dijadwalkan akan
192+
dibuat secara otomatis (jika kamu menggunakan penyedia cloud yang mendukung
193+
pencarian Node; saat ini hanya Google Compute Engine, tidak termasuk CoreOS di Google Compute Engine menggunakan kube-register).
194+
Lihatlah [Node](/docs/concepts/architecture/nodes/) untuk lebih detail.
195+
196+
## Topik lebih lanjut
197+
198+
### Mengaktifkan atau menonaktifkan versi API untuk klaster kamu
199+
200+
Versi API spesifik dapat dinyalakan dan dimatikan dengan meneruskan _flag_ `--runtime-config=api/<version>` ketika menjalankan server API. Sebagai contoh: untuk menyalakan APIv1, teruskan `--runtime-config=api/v1=false`.
201+
_runtime-config_ juga mendukung 2 kunci khusus: api/all dan api/legacy yang masing-masing untuk mengontrol semua dan API lama.
202+
Sebagai contoh, untuk mematikan versi API semua kecuali v1, teruskan `--runtime-config=api/all=false,api/v1=true`.
203+
Untuk tujuan _flag_ ini, API lama adalah API yang sudah tidak digunakan lagi secara eksplisit (misalnya, `v1beta3`).
204+
205+
### Mengalihkan versi API penyimpanan dari klaster kamu
206+
207+
Objek yang disimpan ke diska untuk representasi internal klaster dari sumber daya Kubernetes yang aktif dalam klaster ditulis menggunakan versi API tertentu.
208+
Saat API yang didukung berubah, objek ini mungkin perlu ditulis ulang dalam API yang lebih baru. Kegagalan melakukan ini pada akhirnya akan menghasilkan sumber daya yang tidak lagi dapat didekodekan atau digunakan
209+
oleh server API Kubernetes.
210+
211+
### Mengalihkan berkas konfigurasi kamu ke versi API baru
212+
213+
Kamu dapat menggunakan perintah `kubectl convert` untuk mengubah berkas konfigurasi di antara versi API berbeda.
214+
215+
```shell
216+
kubectl convert -f pod.yaml --output-version v1
217+
```
218+
219+
Untuk opsi yang lainnya, silakan merujuk pada penggunaan dari perintah [kubectl convert](/docs/reference/generated/kubectl/kubectl-commands#convert).
220+
221+

0 commit comments

Comments
 (0)