Kubernetes merupakan platform open-source yang digunakan untuk melakukan manajemen workloads aplikasi yang dikontainerisasi, serta menyediakan konfigurasi dan otomatisasi secara deklaratif. Kubernetes berada di dalam ekosistem yang besar dan berkembang cepat. Service, support, dan perkakas Kubernetes tersedia secara meluas.
Google membuka Kubernetes sebagai proyek open source pada tahun 2014. Kubernetes dibangun berdasarkan pengalaman Google selama satu setengah dekade dalam menjalankan workloads bersamaan dengan kontribusi berupa ide-ide terbaik yang diberikan oleh komunitas.
Dalam Kubernetes ada beberapa istilah yang harus dipahami oleh pengguna, supaya bisa menggunakan aplikasi ini dengan baik:
- Pod merupakan salah satu grub pada container instance. Dengan ini Anda dapat menjalankan tidak hanya satu container saja (misalkan aplikasi redis cache + web + longing service pada satu pod. Dimana satu container dengan container yang lain yang berada dalam satu pod mampu mengakses menggunakan alamat localhost. Anda bisa menganggap pod merupakan laptop yang biasa Anda gunakan untuk coding. Alamat localhost sendiri sangat umum digunakan untuk melakukan akses database pada aplikasi Anda.
- Node merupakan representasi dalam satu mesin dan bisa saja mesin yang digunakan adalah mesin jenis virtual (misalkan dropletnya DigitalOcean atau VPS) maupun fisik.
- Service Istilah service ini di Kubernetes adalah mekanisme yang digunakan mengekspos pod ke dunia luar. Tidak adanya alamat IP jelas pada aplikasi yang berjalan pada pod, sehingga supaya bisa akses pada aplikasi lain maupun oleh user, wajib menggunakan alamat IP yang tepat. Maka di service inilah akan ditemukan alamat IP tetap dan nantinya bisa diarahkan ke pod Anda dengan menggunakan selector.
- Label dalam Kubernetes merupakan seperangkat informasi yang berupa metadata dengan tujuan mencari pod khusus. Selain itu juga mempunyai banyak fungsi lain yang bisa digunakan pada kubernetes.
- App-Belajar Anda bisa membuat label app dengan isinya nama aplikasi dan container, service, dan Pod yang merupakan bagian aplikasi belajar tersebut Anda beri label app=belajar.
- Strage-Production Label stage umumnya digunakan dalam menentukan konfigurasi environment deployment pada aplikasi Anda. Misalkan testing, development, performance test, production, serta security est.
- Jenis-frontend Disini Anda bisa menciptakan sebuah label jenis aplikasi, misalkan cache, fileserver, database, froontend, dan lain sebagainya.
- Selector Selector merupakan filtering yang menggunakan label, contohnya saat Anda mencari banyak instance database dengan menggunakan aplikasi belajar yang dijalankan pada production.
Kubenernetes memberikan keuntungan yang bisa dirasakan oleh penggunaannya, yaitu:
1. Service discovery and Load Balancing
Kubernetes bisa mengekspose container yang digunakan dengan nama DNS atau IP address server sendiri. Ketika trafik berada di container besar, aplikasi ini secara otomatis bisa melakukan load balancing trafik atau penyeimbang beban serta distribusi trafik dengan demikian aplikasi yang dijalankan bisa stabil.
Storage orchestration. Aplikasi ini dapat juga me-mount di system storage yang digunakan, misalkan storage, local storage dari cloud provider misalkan alicloud dan aws.
2. Automated Rollouts and Rollbacks
Deployment dapat menggunakan jenis file YAML. Dengan demikian bisa mendeskripsikan dahulu deployment yang diinginkan. Anda dapat menggunakan jenis file YAML agar dapat melakukan deployment lain serta untuk merubah deployment yang sudah ada. Lebih dalam lagi Anda bisa melaksanakan rollback dengan menggunakan fike YAML dahulu. Dengan demikian semuanya bisa terdokumentasi serta bisa dilakukan secara otomatis.
3. Self-healing
Adanya Kubernetes dapat merestart container yang gagal, mengganti, serta memastikan container yang sudah tidak bisa menanggapi request serta tidak mungkin memberikan adanya trafik ke container hingga container benar siap dalam menerima request.
4. Secret and configuration management
Kubernetes mempunyai kelebihan dapat menyimpang data sensitive yang Anda miliki, misalkan password, ssh keys, auth token. Anda bisa juga membangun serta mengupdate berbagai macam secret dengan tidak harus membangun ulang container image, serta tidak harus mengekspose secret pada konfigurasi Anda. Lebih jelasnya Kubernetes (K8s) adalah orkestrasi container open source dan dikembangkan oleh Google.
Keberadaan aplikasi ini bisa memudahkan Anda dalam hal membangun berbagai ekosistem pada komponen serta alat yang dapat mempermudahkan penerapan, pengelolaan pada aplikasi, serta skala. Ada banyak intilah yang harus dimengerti oleh para penggunaan aplikasi ini, supaya dapat menggunakan dengan mudah. Selain itu Kubernetes memiliki kelebihan yang banyak dan hanya bisa dirasakan bagi mereka yang benar-benar menerapkan.
Arsitektur Kubernetes
Pada diagram arsitektur kubernetes diatas terdapat beberapa komponen berbeda yang saling terintegrasi diantaranya adalah :
- Kubelet
- Kubernetes controller manager
- Kubernetes API server
1. Master Components
Komponen Master menyediakan cluster control plane. komponen master berfungsi untuk mengatur penjadwalan, memulai pembuatan pod dengan replicate.
2. Node Componentes
komponen node jalan pada setiap node / worker, menjaga pod yang berjalan dan menyediakan runtime untuk kubernetes. berikuti komponen node.
- kubelet
- kube-proxy
- container runtime
3. Addons
Addons adalah pod dan layanan yang mengimplementasikan fitur cluster. Pod dapat dikelola oleh Deployment, ReplicationControllers, dan sebagainya. beirkut adalah bagian dari addons.
- DNS
- Web UI (Dashboard)
- Container Resource Monitoring
- Cluster Level Logging