Written By Rania Naura
Published on
Kubernetes 101: Dasar-dasar Kubernetes
Kubernetes: Pendahuluan
Kubernetes (sering disingkat K8s) adalah sistem sumber terbuka yang handal untuk mengelola aplikasi dalam container di berbagai host.
Perkenalan
Dalam dunia pengembangan perangkat lunak yang terus berkembang, containerisasi dan aplikasi cloud-native adalah hal yang sangat penting. Menguasai teknologi ini dan orkestrasinya, terutama melalui Kubernetes, akan sangat berguna bagi pengembang dan organisasi.
Artikel komprehensif ini menggali seluk-beluk teknis yang rumit dan menawarkan pemahaman topik mengenai Kubernetes dengan cermat.
Memahami Container
Container dalam istilah perangkat lunak mengacu pada paket ringan, mandiri, dan dapat dieksekusi yang mencakup semua yang diperlukan untuk menjalankan perangkat lunak, termasuk kode, runtime, dependencies, environment variable, serta file konfigurasi. Ini adalah abstraksi pada lapisan aplikasi yang merangkum kode aplikasi, konfigurasi, dan dependensi ke dalam satu objek.
Container memanfaatkan virtualisasi dalam tingkat sistem operasi di mana kernel mengizinkan beberapa instance di dalam komputer pengguna yang terisolasi, dibandingkan meniru keseluruhan sistem operasi.
Hasilnya, container lebih portabel dan efisien dibandingkan virtual machine, dengan waktu start-up yang cepat dan mengurangi overheat sistem.
Aplikasi di dalam Container
Aplikasi dalam container telah merevolusi pengembangan, pengemasan, dan penerapan perangkat lunak. Aplikasi dalam container mengemas kode aplikasi dan semua dependensinya ke dalam unit standar untuk pengembangan perangkat lunak.
Pendekatan ini sesuai dengan gaya arsitektur layanan mikro, di mana setiap fungsi aplikasi dikemas sebagai layanan independen dan dapat diskalakan yang berjalan dalam tempatnya sendiri.
Layanan berkomunikasi melalui API yang terdefinisi dengan baik dan dapat diperbarui secara independen, sehingga dapat meningkatkan ketahanan sistem dan kemampuan beradaptasi.
Aplikasi Cloud-Native
Aplikasi cloud-native mewakili pendekatan inovatif terhadap pengembangan dan penerapan perangkat lunak, yang dioptimalkan untuk lingkungan cloud computing.
Aplikasi ini dirancang untuk memanfaatkan model cloud computing sepenuhnya dan pengiriman sesuai permintaan melalui internet. Mengikuti prinsip-prinsip metodologi 12 Factor App, aplikasi cloud-native sering kali diatur berdasarkan microservices, diterapkan dalam container, dan dikelola melalui proses DevOps yang agile.
Aplikasi-aplikasi ini dibuat untuk keperluan scaling (horizontal scaling), memanfaatkan sifat elastis cloud untuk mengelola sumber daya dan permintaan.
Orkestrasi Container
Seiring dengan meningkatnya skala aplikasi dan layanan mikro dalam container, kompleksitas pengelolaan dan penerapan layanan ini meningkat secara proporsional. Orkestrasi container hadir sebagai solusi untuk tantangan tersebut, dengan menyediakan manajemen siklus hidup container otomatis.
Alat orkestrasi menangani penjadwalan, penemuan layanan, penyeimbangan beban, perutean jaringan, manajemen rahasia, penskalaan, pembaruan, dan toleransi kesalahan di seluruh armada container. Otomatisasi ini secara dramatis menyederhanakan pengelolaan sistem terdistribusi yang kompleks.
Orkestrasi container mengacu pada proses pengelolaan siklus hidup container, terutama di lingkungan yang besar dan dinamis. Ini penting bagi bisnis karena mengotomatiskan banyak tugas seperti penerapan, penskalaan, jaringan, dan ketersediaan container.
Orkestrasi container dapat digunakan di lingkungan mana pun di mana kamu menggunakan container, khususnya diperlukan dalam lingkungan multi-container yang memerlukan koordinasi dan otomatisasi banyak tugas operasional termasuk:
- Scheduling: Alat orkestrasi dapat secara otomatis mengelola alokasi sumber daya dan penjadwalan container ke host tertentu berdasarkan kebijakan yang telah ditentukan sebelumnya.
Alat ini juga dapat menangani proses penerapan, termasuk mengambil image dari registry, menerapkannya sebagai container di host, dan kemudian mengelola siklus hidupnya.
- Health Monitoring: Salah satu fitur utama orkestrasi container adalah kemampuannya untuk terus memantau kesehatan container dan aplikasi yang berjalan di dalamnya.
Alat orkestrasi dapat secara otomatis mengganti atau memulai ulang container yang gagal, menonaktifkan container yang tidak merespons pemeriksaan kesehatan yang ditentukan pengguna, dan memberikan informasi mengenai perubahan apa pun dalam status container secara keseluruhan.
- Service Discovery dan Load Balancing: Dengan potensi ratusan container yang berpindah, menemukan dan terhubung dengan container yang menyediakan layanan tertentu sering kali menjadi sebuah tantangan.
Platform orkestrasi container sering kali menyertakan kemampuan penemuan layanan dan penyeimbangan beban. Platform ini dapat merutekan lalu lintas ke layanan dalam container secara otomatis, memberikan alamat IP unik untuk setiap container, dan mendistribusikan lalu lintas jaringan untuk menyeimbangkan beban di antara sekumpulan contoh aplikasi.
- Scaling: Seiring dengan perubahan tuntutan aplikasi, kamu perlu menskalakan jumlah container. Orkestrasi container memungkinkan horizontal scaling secara otomatis (meningkatkan atau mengurangi jumlah instance container) berdasarkan penggunaan CPU atau metrik lain yang disediakan aplikasi.
- Konfigurasi dan Manajemen Secret: Aplikasi memerlukan cara untuk menyimpan dan mengelola informasi sensitif seperti kata sandi, token OAuth, dan kunci SSH. Solusi orkestrasi container dapat mengelola informasi sensitif tersebut dan menyediakan akses terkontrol ke dalamnya.
- Networking: Kontainer perlu berkomunikasi satu sama lain dengan aplikasi eksternal. Alat orkestrasi menyediakan kemampuan jaringan yang memungkinkan komunikasi antara layanan berbeda dalam cluster yang sama dan mengekspos layanan ke internet.
- Manajemen Storage: Penyimpanan yang persisten sangat penting untuk aplikasi yang bersifat stateful. Platform orkestrasi container dapat secara otomatis memasang sistem penyimpanan pilihanmu, baik dari penyimpanan lokal, penyedia cloud publik seperti GCP atau AWS, atau sistem penyimpanan jaringan seperti NFS, Ceph, Glusterfs, atau lainnya.
Pengenalan Kubernetes
Kubernetes (sering disingkat K8s) adalah sistem sumber terbuka yang kuat untuk mengelola aplikasi dalam container di beberapa host. Kubernetes menyediakan platform yang dirancang untuk mengelola siklus hidup aplikasi dan layanan dalam container secara menyeluruh dengan menggunakan metode yang memberikan prediktabilitas, skalabilitas, dan ketersediaan tinggi.
Arsitektur Kubernetes dirancang berdasarkan sekumpulan komponen yang dapat dicolokkan yang mencakup Pod (unit terkecil dan paling sederhana), Services (mendefinisikan sekumpulan Pod yang logis dan kebijakan yang digunakan untuk mengaksesnya), Volumes (penyimpanan disk), dan Namespaces (beberapa cluster virtual yang didukung oleh cluster fisik yang sama).
Sejarah dan Evolusi Kubernetes
Kubernetes pada awalnya dikembangkan oleh Google, berdasarkan pengalaman satu dekade dalam menjalankan beban kerja produksi dalam skala besar menggunakan sistem yang disebut Borg.
Google menjadikan proyek Kubernetes sebagai sumber terbuka pada tahun 2014. Menyadari nilai proyek ini bagi komunitas TI yang lebih luas, Google mendonasikan Kubernetes ke Cloud Native Computing Foundation (CNCF) pada tahun 2015.
Selama bertahun-tahun, Kubernetes telah menjadi standar industri untuk orkestrasi container karena rangkaian fiturnya yang komprehensif, didukung oleh komunitas kontributor yang dinamis dan ekosistem alat pelengkap yang luas.
Kubernetes, Container, dan Docker: Bagaimana Keterkaitannya
Kubernetes dan Docker sering disebut secara bersamaan, namun keduanya memiliki peran yang berbeda di dunia aplikasi dalam container. Docker adalah sebuah platform yang memungkinkan pengembang untuk mengemas aplikasi dan dependensinya ke dalam unit standar untuk pengembangan perangkat lunak, yang dikenal sebagai container.
Docker menyederhanakan proses pengelolaan dependensi di lingkungan yang terisolasi dan dengan demikian mengurangi masalah “it works on my machine”.
Di sisi lain, Kubernetes adalah platform orkestrasi yang mengelola container. Platform ini menangani otomatisasi, penskalaan, dan pengelolaan aplikasi dalam container.
Meskipun Kubernetes mendukung berbagai runtime container, Docker adalah salah satu yang paling populer. Sebuah Pod Kubernetes, unit terkecil dan paling sederhana dalam model objek Kubernetes, dapat menjalankan berbagai container di dalamnya.
Dalam arsitektur ini, Docker digunakan untuk menjalankan container sebenarnya, sementara Kubernetes mengelola Pod dan memastikan semuanya berjalan sesuai harapan.
Kubernetes sebagai Sistem Operasi Cloud
Mengingat peran penting Kubernetes dalam mengelola beban kerja di cloud, Kubernetes sering dijuluki sebagai 'sistem operasi cloud'. Perlu dicatat bahwa, sama seperti sistem operasi yang mengelola sumber daya, proses, dan komunikasi antar-proses pada satu mesin, Kubernetes mengelola aspek-aspek ini pada sekelompok mesin di cloud.
Kubernetes juga menangani penjadwalan aplikasi (mirip dengan penjadwalan proses), mengelola sumber daya (seperti kernel), dan menangani komunikasi antar aplikasi. Kubernetes menyediakan teknologi dasar yang memungkinkan pengguna untuk mengelola layanan seolah-olah mereka berjalan pada satu sistem, meskipun mereka berjalan pada sekelompok mesin dalam lingkungan terdistribusi.
Dengan pemahaman yang mendalam tentang Kubernetes, kini kamu memiliki dasar yang kuat untuk memasuki dunia yang dinamis dan berkembang pesat dari manajemen container. Mari terus belajar dan menjelajahi fitur-fitur canggih yang ditawarkan oleh Kubernetes dengan ONXP!