
Saat ini, banyak tim beralih ke Kubernetes yang memiliki rangkaian fitur yang kompleks dan lengkap untuk membantu mereka mengatur dan mengelola Container. Baik digunakan untuk production, development atau testing environement. Kubernetes telah terpilih sebagai de facto standar untuk Orchestration dan Management Container, sehingga penting untuk organisasi memahami teknologi Kubernetes ini.
Apa itu Kubernetes?
Kubernetes adalah sebuah open source Orchestration platform yang membantu mengelola distributed Container dalam skala besar. Anda hanya perlu memberi instruksi kepada Kubernetes di mana Anda ingin aplikasi Anda dijalankan, maka platform ini akan menangani semua hal-hal yang lainnya.
Kubernetes menyediakan application programming interface (API) terpadu untuk mendeploy aplikasi web, batch task, dan database di dalamnya. Aplikasi di dalam Kubernetes dikemas dalam Container dan diisolasi dari lingkungannya. Kubernetes mengotomatisasi konfigurasi aplikasi Anda. Serta mencatat dan melacak semua pengalokasian resource di dalamnya.
Pengertian Container
Container mentransformasi cara kita memandang Architecture aplikasi dan bagaimana kecepatan programming team seharusnya dalam menghasilkan aplikasi yang dibutuhkan untuk mensupport bisnis. Architecture Container menjanjikan portabilitas aplikasi di lingkungan cloud hybrid dan memungkinkan programmer untuk fokus kepada pembuatan aplikasi yang hebat, tanpa khawatir dari gangguan Infrastructure atau hal-hal yang kecil lainnya.
Container dapat membantu menghilangkan kompleksnya sebuah aplikasi dengan cara meminimalisasi packaging image aplikasi dan meningkatkan portabilitasnya. Sebaliknya, mengelola Container deployment yang besar juga menghadirkan tantangan baru bagi tim operasi.
Container juga bisa di hidupkan dalam waktu yang singkat di banding dengan waktu yang di perlukan untuk menghidupkan Virtual Machine (VM). Selain itu juga di iringi dengan utilisasi penggunaan resource yang lebih efisien. Namun teknologi Container ini harus didukung dengan pengelolaan system yang lebih baik karena banyaknya objek yang bisa terpasang, terlebih dengan lifecycle yang lebih dinamis. Oleh karena itu, hal ini memerlukan Management yang lebih terotomatisasi dan policy-driven.
Baca lebih lanjut penjelasan Container & Microservices
Apa sajakah keuntungan dari Kubernetes?
Container mengubah bagaimana cara aplikasi modern dibuat. Beralih dari VM ke Container kelihatannya sangat merepotkan, tetapi manfaatnya sangat banyak dan nyata. Dibawah ini adalah keuntungan-keuntungan dari menerapkan Kubernetes:
1. Skalabilitas
Kubernetes secara otomatis men-scale cluster Anda berdasarkan kebutuhan. Hal ini akan menghemat biaya dan resource. Bayangkan Anda menjalankan layanan tiket acara online di mana pelanggan dapat membeli tiket 24 jam dalam sehari, 7 hari seminggu dengan beban yang bervariasi setiap saat.
Anda memiliki gambaran secara garis besar tentang beban dan trafik pegunjung saat tiket mulai dijual pada siang hari, dan Anda tahu bahwa malam hari pengunjung biasanya akan berkurang. Namun, ada beberapa peristiwa dan waktu-waktu tertentu yang menyebabkan lonjakan pengunjung bertambah secara eksponensial.
Dalam skenario ini, Anda ingin cluster Anda scale up atau membesar secara otomatis dan dinamis untuk memenuhi permintaan. Fitur Kubernetes Cluster Autoscaler dan Horizontal Pod Autoscaler, akan melakukan hal ini secara otomatis.
2. Portabilitas
Kubernetes Orchestration platform dapat di jalankan di atas berbagai Infrastructure termasuk di on-premise datacenter, public cloud, private cloud ataupun hybrid cloud. Kubernetes bukan saja dapat digunakan di mana saja, tetapi juga dapat di jalankan dengan perintah yang sama.
3. Deployment yang konsisten
Kubernetes dapat di deploy secara konsisten di seluruh Infrastructure. Container memungkinkan untuk menerapkan konsep immutable Infrastructure. Semua setup dan dependencies komponen yang di butuhkan untuk menjalankan aplikasi bisa dimasukkan dan digabungkan di dalam Container itu sendiri.
Anda mungkin tahu bahwa server berperilaku aneh, tetapi lupa namanya. Anda akhirnya terpaksa untuk menghabiskan waktu untuk patching. Lalu membuat environment yang disesuaikan untuk menjalankan production environment. Kemudian juga Anda mungkin takut untuk mematikan server ini dan menggantinya dengan yang lain. Ketakutan ini sering terjadi karena sulit untuk mengingat cara penyiapan server, atau apa yang berubah setelah initial setup.
Container didesain dan diproduksi secara massal dan identik. Container mengkonfigurasi diri mereka dengan cara yang sama setiap saat. Karena tidak dapat diubah, perubahan konfigurasi tambahan dilarang. Tidak ada rasa takut untuk meng-kill sebuah Container dan memulai yang baru. Konsistensi ini berarti programmer dapat menghabiskan lebih sedikit waktu untuk debugging dan lebih banyak waktu untuk memfokuskan pada fitur-fitur value added yang di butuhkan dalam bisnis.
4. Separated dan Automated Operation dan Development
Tim operasi dan tim programmer sering umumnya berbeda pendapat. Tim operasi menghargai stabilitas dan lebih konservatif terhadap perubahan. Sedangkan tim programmer mementingkan inovasi dan menghargai perubahan yang cepat
Kubernetes dapat menjembatani konflik ini. Berkat otomatisasi Kubernetes, tim operasi dapat merasa yakin dengan stabilitas sistem. Sebaliknya, Container menghemat waktu developer dengan memberikan kelonggaran dengan cara menerapkan teknik rapid iteration cycle.
Bagaimana Architecture dari Kubernetes?
Kubernetes merupakan platform yang handal, teruji dan terdiri dari ratusan komponen. Meskipun rumit tetapi memberikan serangkaian fitur-fitur yang luar biasa. Penting sekali bagi tim operasi untuk memahami cara kerja di bagian dalamnya, tetapi panduan ini akan hanya menyajikan versi Architecture yang disederhanakan untuk memudahkan pengertian Architecturenya.

Kubernetes diciptakan untuk mengelola aplikasi yang dimasukkan dan digabungkan di dalam Container di atas server cluster. Server-server ini bisa di kategorikan menjadi dua fungsi node master atau node worker. Secara bersama-sama mereka menjalankan aplikasi-aplikasi di atasnya.
Control Plane
Control Plane secara kasar setara dengan konsep node master. Dia bertindak sebagai otak dari cluster Kubernetes. Penjadwalan, penemuan layanan, load balancing, dan resource Management semua fungsi ini disediakan oleh Control Plane. Untuk pembahasan high level Architecture, kita tidak akan membahas fungsi ini secara detil. Tetapi akan ditampilkannya bagian-bagian dari Control Plane.
- API Server: Kubernetes API server adalah titik sentral poin yang berfungsi untuk menghubungkan semua aplikasi dan service yang berjalan. Setiap permintaan komunikasi baik untuk internal atau eksternal harus melalui API server. Kemudian server menentukan apakah permintaan itu valid dan meneruskan permintaan jika pemohon memiliki akses yang benar.
- etcd: Jika Control Plane bisa di analogikan sebagai otak, maka etcd adalah tempat penyimpanan informasi. Server Kubernetes tanpa etcd akan seperti otak yang tidak dapat menyimpan informasi. Sebagai tempat penyimpanan key-value terdistribusi dan fault-tolerant, etcd merupakan komponen sangat penting bagi Kubernetes. Dia bertindak sebagai ultimate source of truth untuk menyimpan informasi-informasi tentang cluster, status cluster dan konfigurasinya.
- Worker Node: Di dalam Kubernetes cluster, worker node menjalankan semua aplikasi dan layanan. Ada banyak worker node dalam sebuah cluster, dan menambahkan node baru adalah cara Anda scale-up Kubernetes.
- Kubelet: Kubelet adalah aplikasi kecil yang terdapat di setiap worker node. Tugas Kubelet adalah berkomunikasi dengan Control Plane, kemudian menjalankan perintah yang diminta pada worker node. Jika Control Plane seperti otak, kubelet seperti lengan. Control Plane mengirimkan perintah, dan kubelet menjalankan aksinya.
- Container runtime engine: Container runtime menjalankan image aplikasi yang terdapat di dalam Container. Juga merupakan penghubung antara Container dan Linux kernel yang berada di bawah nya.
Container, Microservices dan Cloud Native Application
Container sangat populer karena memungkinkan aplikasi berjalan sebagai proses yang terisolasi dengan resource terpisah. Berbeda dengan operasi pada VM yang melakukan virtualisasi secara hardware yang menyebabkan biaya operasi menjadi mahal, Container dapat mengatur komputasi resource di level Linux Kernel. Sifat ini membuat setiap aplikasi mendapatkan Container sendiri-sendiri, sehingga mencegah konflik dependency yang di butukan untuk menjalankan aplikasi.
Secara sederhananya, Container bisa di lihat sebagai tar, sejenis tipe file zip. Dengan konsep ini, Container adalah cara untuk memasukkan dan mempaketkan programing code, konfigurasi, dan dependensi aplikasi. Pemaketan ini menghilangkan masalah “Ini berjalan di komputer saya; kenapa tidak berjalan di sistem-mu? ”
Idealnya, aplikasi menghasilkan hasil yang sama terlepas dari system yang di pakai, dan containerisation membuat ini lebih mudah dicapai. Aplikasi di dalam Container akan mulai berjalan, berhenti, membuat request, dan menghasilkan log yang sama walaupun dalam environment yang berbeda-beda.
Untuk bisnis, Container dapat membantu hal-hal berikut:
- Faster time to market karena developer menghabiskan waktu lebih sedikit untuk men-debug environment dan lebih banyak waktu untuk menulis program kode.
- Biaya server lebih rendah karena Container dapat memperbaiki utilisasi resource yang lebih baik.
- Memberikan fleksibilitas untuk mendeploy berbagai-bagai macam tipe Infrastructure karena Container dapat di jalankan di atas Infrastructure dimana saja.
Untuk aplikasi kompleks yang terdiri dari beberapa komponen yang banyak, Container sangat menyederhanakan proses peng-upgrade-an. Menempatkan setiap komponen dalam Container memudahkan untuk melakukan perubahan tanpa harus khawatir dengan efek yang di sebabkan kepada bagian-bagian yang lain. Kesederhanaan ini telah membuat Container menjadi pilihan terbaik dalam mengembangkan dan mengimplementasikan microservices. Aplikasi Microservices yang fokus pada satu fungsi, secara alami, dapat memanfaatkan Container karena tersedianya pemisahan yang jelas antara komponen dan layanan.
Kubernetes sebagai Container Management dan Orchestration
Aplikasi semakin sering dibangun sebagai bagian fungsional yang terpisah, yang masing-masing dapat dibungkus dalam sebuah Container. Artinya, untuk setiap aplikasi, ada lebih banyak bagian yang harus dikelola. Selain itu, Container memiliki masa pakai yang lebih pendek daripada penerapan VM tradisional. Kompleksitas dalam mengelola aplikasi dengan lebih banyak objek dan churn yang lebih besar menghadirkan tantangan baru: konfigurasi, penemuan layanan, load balancing, scale resource, serta menemukan dan memperbaiki kegagalan. Mengelola kompleksitas ini secara manual tidak memungkinkan. Cluster biasanya dapat menjalankan lebih dari 1.000 Container; updating cluster yang sebesar ini tidak mungkin dapat dilakukan tanpa otomatisasi.
Kubernetes memberikan Orchestration Container tingkat produksi dengan mengotomatiskan konfigurasi Container, menyederhanakan scale up, dan mengelola alokasi resource. Kubernetes bisa berjalan dimana saja dan dapat menyediakannya dalam skala besar. Kubernetes mencari tahu di mana dan bagaimana menjalankan container Anda. Lebih eksplisit lagi, ini menyediakan tiga fungsi utama.
- Schedulers and scheduling
Scheduling dengan cerdas membandingkan kebutuhan Container dengan kesehatan cluster Anda, dan menyarankan tempat penampung baru mungkin cocok. Scheduler adalah semacam asisten yang mengelola kalender yang sangat besar. Pengontrol berkonsultasi dengan scheduler dan kemudian menetapkan pekerjaan dan monitor Container.
- Service discovery and load balancing
Dalam sistem apa pun, penemuan service discovery bisa menjadi tantangan. Tidak terkecuali Kubernetes. Semakin banyak layanan yang membentuk aplikasi Anda, semakin sulit aplikasi Anda untuk dilacak dan dikelola.
Untungnya, Kubernetes secara otomatis mengelola penemuan layanan. Kami mungkin meminta Kubernetes untuk menjalankan layanan seperti database atau RESTful API. Kubernetes membuat catatan tentang layanan ini dan dapat mengembalikan daftar jika kita bertanya tentang mereka nanti.
Kubernetes juga memeriksa kesehatan layanan individu. Jika Kubernetes mendeteksi kerusakan pada layanan Anda, Kubernetes akan secara otomatis mencoba untuk memulai ulang. Selain pemeriksaan dasar ini, Kubernetes memungkinkan Anda menambahkan health check yang lebih halus. Misalnya, mungkin database Anda tidak rusak. Tetapi bagaimana jika sangat lambat? Kubernetes dapat melacak ini dan mengarahkan lalu lintas ke cadangan.
- Detects Slowness
Kubernetes juga menggabungkan load balancing. Layanan modern berskala horizontal — dengan menjalankan duplikat layanan. Load Balancing adalah bagian penting yang mendistribusikan dan mengkoordinasikan lalu lintas di seluruh container duplikat ini.
- Resource Management
Setiap komputer memiliki central processing unit (CPU) dan memori yang terbatas. Aplikasi yang mentranskode video mungkin membebankan ke CPU, dan aplikasi yang mengurai teks mungkin memerlukan banyak memori. Artinya aplikasi video akan kehabisan daya CPU terlebih dahulu, sedangkan aplikasi pengurai teks akan kehabisan memori terlebih dahulu. Kehabisan resource akan menyebabkan ketidakstabilan dan crash pada sistem.
Management resource yang tepat adalah hasil dari penjadwalan yang cerdas. Kubernetes menjadwalkan aplikasi untuk menggunakan resource dengan tepat seperti CPU dan memori sambil tetap berhati-hati terhadap penggunaan berlebih-lebih yang dapat menyebabkan ketidakstabilan pada sistem.
Datacomm Cloud Business – Cloud Service Provider
Datacomm Cloud Business merupakan salah satu penyedia layanan cloud yang memiliki data center yang berlokasi di Indonesia dan telah sukses mendapatkan sertifikasi berskala global, seperti TIA-942 Rated 3 untuk datacenter, PCI DSS terkait layanan kartu kredit, DCOS-4 untuk operasi dan perawatan, ISO 27001 terkait manajemen keam
anan, ISO 20000-1 terkait manajemen layanan teknologi informasi, ISO 9001 terkait manajemen kualitas, serta telah resmi terdaftar di Kementerian Komunikasi dan Informatika RI. Pelajari lebih lanjut mengenai Datacomm Cloud dan jangan ragu untuk menghubungi kami melalui email sales@datacommcloud.co.id atau WhatsApp +62877 0008 2888.
Hubungi kami untuk diskusi Kubernetes deployment & konsultasi
- Hands On Kubernetes WorkshopMengatur dan mengelola container memang bukanlah sebuah hal yang mudah, dibutuhkan skill yang memumpuni, serta management container yang lebih terotomisasi dan policy-driven untuk dapat melakukannya. Maka dari itu K8S hadir …
- Perbandingan Zerto Site Recovery Manager & Replikasi vSphereDisaster Recovery di Era Virtualisasi Virtualisasi telah membuat Disaster Recovery menjadi sangat tidak rumit bagi perusahaan, besar dan kecil. Faktanya, bukanlah hal yang berlebihan untuk mengatakan bahwa virtualisasi telah membuat …
- Microservices Adalah dan Perbedaan Monolithic ArchitectureMemanfaatkan Teknologi Microservice & Container untuk memodernisasi aplikasi menuju Cloud Native Arsitektur di Era Digital. Microservices adalah suatu framework Architecture yang dipakai sebagai model dalam pembuatan aplikasi cloud yang modern. Di …
- Monolithic to Cloud Native – Microservices Migration StrategyLangkah yang harus di ambil untuk bisa memigrasikan Monolitik aplikasi ke Cloud Native arsitektur. Sebelum memulai dalam memodernisasi aplikasi Monolithic anda yang lama, sebaiknya anda memulai dulu dari mendalami lebih …
- Apakah itu Kubernetes POD?POD adalah sebuah kumpulan yang terdiri dari satu atau lebih Container yang saling bekerja sama. Kubernetes POD adalah unit Computing terkecil yang bisa dibuat di dalam Kubernetes. POD dibuat di …