Apa itu klaster Kubernetes?
Klaster Kubernetes (K8s) adalah sekelompok simpul komputasi, atau mesin pekerja, yang menjalankan aplikasi kontainer. Kontainerisasi adalah proses deployment dan runtime perangkat lunak yang menyatukan kode aplikasi dengan semua file serta pustaka yang dibutuhkan untuk berjalan di infrastruktur. Kubernetes adalah perangkat lunak orkestrasi kontainer sumber terbuka yang dengannya Anda dapat mengelola, mengoordinasikan, dan menjadwalkan kontainer dalam skala besar. Kubernetes menempatkan kontainer ke dalam pod dan menjalankannya di simpul. Klaster Kubernetes memiliki, minimal, simpul utama yang menjalankan pod kontainer dan bidang kontrol yang mengelola klaster. Saat Anda menerapkan Kubernetes, pada dasarnya Anda menjalankan klaster Kubernetes.
Apa dasar-dasar Kubernetes?
Untuk memahami klaster Kubernetes, pertama-tama Anda perlu memahami dasar-dasar kontainerisasi dengan Kubernetes.
Kontainer adalah aplikasi tunggal atau layanan mikro yang dikemas dengan dependensinya, dapat dijalankan sebagai lingkungan mandiri dan aplikasi dalam satu. Aplikasi modern mengadopsi arsitektur layanan mikro terdistribusi di mana setiap aplikasi mencakup ratusan atau bahkan ribuan komponen perangkat lunak diskret yang berjalan secara independen. Setiap komponen (atau layanan mikro) melakukan fungsi independen tunggal untuk meningkatkan modularitas kode. Dengan membuat kontainer independen untuk setiap layanan, aplikasi dapat digunakan dan didistribusikan di sejumlah mesin. Anda dapat menskalakan beban kerja layanan mikro individual dan kemampuan komputasi ke atas atau ke bawah untuk memaksimalkan efisiensi aplikasi.
Kubernetes adalah perangkat lunak orkestrasi kontainer open source yang menyederhanakan pengelolaan kontainer dalam skala besar. Ini dapat menjadwalkan, menjalankan, memulai dan mematikan kontainer, dan mengotomatiskan fungsi manajemen. Pengembang mendapatkan manfaat dari kontainerisasi dalam skala besar tanpa biaya administrasi.
Selanjutnya, mari kita lihat beberapa konsep inti Kubernetes.
Pod
Pod adalah unit standar yang dapat digunakan di bawah Kubernetes. Pod berisi satu atau lebih wadah dan, di dalam pod, kontainer berbagi sumber daya sistem yang sama seperti penyimpanan dan jaringan. Setiap pod mendapatkan alamat IP yang unik.
Kontainer di dalam pod tidak diisolasi. Pikirkan pod mirip dengan mesin virtual (VM), dengan kontainer yang mirip dengan aplikasi yang berjalan di VM. Pod dan grup pod dapat diatur dengan melampirkan label atribut padanya, seperti memberi label 'dev' atau 'prod' untuk jenis lingkungan.
Simpul
Simpul adalah mesin yang menjalankan pod. Ini bisa berupa server fisik atau virtual, seperti instans Amazon EC2. Komponen pada simpul meliputi:
- Kubelet untuk manajemen simpul dan kontainer
- Kube-proxy untuk proxy jaringan
- Runtime kontainer
Runtime kontainer yang kompatibel harus diinstal pada simpul untuk menjalankan kontainer. Kubernetes mendukung beberapa runtime kontainer, seperti Kubernetes Container Runtime Interface dan kontainer.
Set replika dan deployment
Pod adalah artefak mandiri dan ketika simpul-nya turun, itu tidak secara otomatis memulai kembali. Jika pod, atau pod, dikelompokkan ke dalam kumpulan replika, di Kubernetes, Anda dapat menetapkan kumpulan replika yang akan selalu berjalan di seluruh simpul. Ini sangat penting untuk meningkatkan dan menurunkan skala dan memastikan kelangsungan aplikasi dan layanan.
Deployment adalah objek manajemen Kubernetes untuk menerapkan aplikasi, serta memperbarui atau memutar kembali aplikasi tanpa membuatnya offline.
Layanan dan masuknya
Gunakan layanan Kubernetes untuk mengekspos pod atau grup pod di jaringan, melalui titik akhir, untuk interaktivitas yang mengikuti aturan komunikasi jaringan standar. Untuk akses lalu lintas internet publik, masuk Kubernetes dilampirkan ke layanan, yang kemudian ditautkan ke pod atau pod.
Apa saja komponen klaster Kubernetes?
Klaster Kubernetes adalah sekelompok satu atau lebih simpul dengan pod yang sedang berjalan. Di dalam klaster, bidang kontrol Kubernetes mengelola simpul dan pod.
Komponen bidang kontrol meliputi:
- Kubernetes API server (kube-apiserver) yang mengelola komunikasi di dalam dan ke klaster
- Penyimpanan (etcd) untuk merekam status persisten klaster
Penjadwal (kube-scheduler) untuk mengelola simpul dan sumber daya Kubernetes pod berikutnya
Komponen lain termasuk manajer pengontrol untuk simpul dan kontrol pekerjaan (kube-controller-manager), dan manajer pengontrol cloud untuk integrasi dengan infrastruktur cloud publik khusus penyedia (cloud-controller-manager).
Karena kontainer tidak memiliki penyimpanan persisten, aplikasi perlu menyimpan data yang tetap ada. Pod juga mungkin memerlukan akses ke data bersama. Volume persisten dapat ditambahkan ke klaster sebagai penyimpanan, direferensikan dalam klaster mirip dengan simpul.
Bagaimana pengembang bekerja dengan klaster Kubernetes?
Pengembang harus terlebih dahulu mengunduh dan menginstal Kubernetes pada simpul utama dan simpul pekerjanya. Mereka kemudian dapat menerapkan klaster pada mesin fisik atau virtual, secara lokal, di pusat data, atau di cloud.
Instalasi
Untuk memulai yang sederhana dengan mesin virtual Linux, pada simpul utama pilihan Anda (mesin virtual), instal terlebih dahulu:
- Docker atau perangkat lunak kontainerisasi lainnya.
- Kunci repositori dan repositori kode Kubernetes.
- Paket kubeadm untuk bootstrap klaster.
- Paket kubelet untuk koordinasi simpul.
- Paket kubectl untuk baris perintah klaster.
Lakukan proses pada masing-masing simpul pekerja yang ditunjuk lainnya.
Inisialisasi klaster
Untuk menginisialisasi klaster, jalankan perintah kubeadm init pada simpul utama. Anda harus menambahkan file konfigurasi kube dan menerapkan jaringan pod, biasanya dengan file YAML, sebelum klaster siap untuk bekerja. Perintah kubeadm init mengeluarkan perintah join, yang dapat disalin dan ditempelkan ke baris perintah simpul pekerja mesin virtual lainnya. Hal ini memungkinkan setiap simpul pekerja untuk bergabung dengan klaster.
Bekerja dengan Kubernetes
Dengan dasbor UI Kubernetes, penyebar dapat membuat dan menerapkan aplikasi di klaster. Untuk dasbor UI Kubernetes, jalankan perintah kubectl proxy pada mesin utama. UI kemudian akan tersedia di http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/.
Apa itu manajemen klaster Kubernetes?
Manajemen klaster Kubernetes adalah istilah untuk mengelola beberapa klaster Kubernetes dalam skala besar. Sebagai contoh, pertimbangkan lingkungan pengembangan—tim mungkin memerlukan klaster pengujian, pengembangan, dan produksi yang masing-masing berjalan di beberapa mesin fisik dan virtual di lokasi dan berbasis cloud yang terdistribusi.
Untuk mengelola beberapa jenis klaster secara bersamaan, Anda harus dapat melakukan operasi klaster seperti pembuatan dan penghancuran, pembaruan in-situ, pemeliharaan, konfigurasi ulang, keamanan, pelaporan data klaster, dan sebagainya. Manajemen multi-klaster dapat dicapai melalui kombinasi layanan Kubernetes, alat khusus, konfigurasi, dan praktik terbaik.
Bagaimana AWS dapat membantu persyaratan klaster Kubernetes Anda?
AWS menyediakan layanan cloud untuk mengonfigurasi, menjalankan, dan mengelola klaster Kubernetes Anda:
- Amazon Elastic Compute Cloud (EC2) membantu Anda menyediakan dan menjalankan Kubernetes pada jenis instans pilihan Anda.
- Amazon Elastic Kubernetes Service (EKS) membantu Anda memulai, menjalankan, dan menskalakan Kubernetes—tanpa perlu menyediakan atau mengelola instans utama dengan bidang kontrol dan etcd. EKS dilengkapi dengan alat manajemen klaster dan integrasi yang berguna dengan layanan jaringan dan keamanan AWS.
Mulailah dengan klaster Kubernetes di AWS dengan membuat akun gratis hari ini.