Program
Jika Anda mengikuti perkembangan komputasi awan, Anda pasti pernah mendengar tentang Kubernetes. Dalam pengembangan aplikasi modern, ini adalah alat kunci untuk mempelajari cara mengelola berbagai setelan infrastruktur.
Dalam artikel pengantar ini, kami akan memberikan gambaran umum tentang Kubernetes dan komponennya, serta tutorial komprehensif untuk mengimplementasikannya secara lokal. Jika Anda mencari pengalaman belajar langsung untuk melengkapi tutorial ini, lihat kursus Introduction to Kubernetes kami.
Apa itu Kubernetes?
Kubernetes adalah platform orkestrasi kontainer open-source yang mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi terkontainerisasi. Awalnya dikembangkan oleh Google, Kubernetes telah menjadi standar de facto untuk menjalankan kontainer dalam skala besar.
Kubernetes menyederhanakan kompleksitas pengelolaan kontainer individual dan memungkinkan pengembang berfokus pada pembuatan dan penyebaran aplikasi mereka.
Mengapa Menggunakan Kubernetes?
Berikut beberapa manfaat utama menggunakan Kubernetes:
- Orkestrasi kontainer: Mengotomatiskan distribusi dan penjadwalan kontainer di seluruh klaster.
- Skalabilitas dan pemulihan mandiri: Menyederhanakan skala horizontal (mereplikasi kontainer) dan skala vertikal (menyesuaikan alokasi sumber daya) dengan kemampuan pemulihan mandiri.
- Ketersediaan tinggi: Memastikan kontainer (dan karenanya layanan Anda) tetap beroperasi meskipun beberapa node gagal.
- Portabilitas: Mengabstraksi infrastruktur yang mendasarinya, sehingga mudah dijalankan di lingkungan on-premise maupun di berbagai penyedia cloud.
- Pemanfaatan sumber daya yang efisien: Mengubah ukuran kontainer berdasarkan penggunaan sumber daya, mengoptimalkan alokasi dan menurunkan biaya.
Kubernetes bermanfaat dalam berbagai aplikasi seperti:
- DevOps: Mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi terkontainerisasi.
- Mikrolayanan: Memecah aplikasi monolitik besar menjadi layanan yang lebih kecil dan mudah dikelola untuk meningkatkan kelincahan dan skalabilitas.
- Big data: Menyederhanakan penyebaran dan pengelolaan sistem big data yang kompleks menggunakan kontainer.
- Komputasi tepi: Memungkinkan menjalankan Kubernetes pada perangkat edge untuk memproses dan menganalisis data lebih dekat ke sumbernya, mengurangi latensi dan meningkatkan kinerja.
- Pengiriman berkelanjutan: Terintegrasi dengan alat seperti Jenkins dan GitLab untuk pipeline pengiriman berkelanjutan otomatis.
- Pembelajaran mesin: Menyediakan platform yang dapat diskalakan untuk melatih dan menyebarkan model machine learning, menangani dataset besar dan komputasi kompleks.
Konsep Utama di Kubernetes
Untuk memahami cara kerja Kubernetes, Anda perlu memahami konsep-konsep kuncinya dengan baik.
Ini mencakup 4 konsep utama:
- Klaster
- Pod
- Namespace
- Operator
Kita akan membahas lebih lanjut di bawah ini.
Klaster
Klaster Kubernetes adalah kumpulan node, yaitu mesin individual yang menjalankan perangkat lunak Kubernetes. Klaster bertindak sebagai control plane untuk mengelola aplikasi dan layanan.
Dalam setelan umum, sebuah klaster memiliki satu master node dan beberapa worker node. Master node bertanggung jawab mengoordinasikan semua aktivitas di dalam klaster, sedangkan worker node menangani menjalankan dan mengelola kontainer.
Pod
Pod adalah unit penyebaran terkecil di Kubernetes. Pod dapat berisi satu atau lebih kontainer, beserta sumber daya penyimpanan bersama dan pengaturan jaringan.
Setiap pod memiliki alamat IP unik dan dapat berkomunikasi dengan pod lain dalam klaster yang sama melalui alamat ini. Hal ini memungkinkan komunikasi yang efisien antar komponen aplikasi.
Pod dapat berupa pod kontainer tunggal atau multi-kontainer dan masing-masing memiliki kegunaan tersendiri.
- Pod kontainer tunggal: Jenis pod yang paling umum, di mana hanya satu kontainer yang berjalan di dalamnya. Cocok untuk aplikasi sederhana atau mikrolayanan yang hanya memerlukan satu kontainer.
- Pod multi-kontainer: Beberapa kontainer ditempatkan bersama dan berjalan beriringan. Ini bermanfaat untuk aplikasi kompleks di mana berbagai kontainer perlu saling berkomunikasi dan berbagi sumber daya.
Namespace
Namespace menyediakan cara untuk membagi sumber daya secara logis dalam satu klaster. Ini memungkinkan pengorganisasian dan pengelolaan sumber daya yang lebih baik, serta kontrol keamanan yang lebih ketat.
Namespace juga dapat digunakan untuk mengelola lingkungan yang berbeda, seperti pengembangan, staging, dan produksi. Ini memastikan sumber daya terisolasi dan tidak terpengaruh oleh perubahan di lingkungan lain.
Untuk melihat namespace di klaster Anda, gunakan perintah berikut:
kubectl get namespaces
Untuk berpindah antar-namespace, gunakan perintah berikut
kubectl config set-context --current --namespace <namespace name>
Operator
Operator adalah ekstensi perangkat lunak yang membantu mengotomatiskan pengelolaan sumber daya Kubernetes. Operator menggunakan pengontrol kustom dan ekstensi API untuk mengelola tugas-tugas kompleks secara lebih efisien dan otomatis.
Beberapa operator populer antara lain:
- Prometheus untuk pemantauan
- Operator etcd untuk mengelola klaster etcd
Menggunakan operator dapat sangat menyederhanakan pengelolaan aplikasi dan sumber daya dalam klaster Anda. Dengan kemampuan mengotomatiskan tugas dan menyediakan fitur lanjutan, operator semakin populer di kalangan pengguna Kubernetes.
Komponen Inti Kubernetes
Di sebagian besar lingkungan Kubernetes terdapat satu set komponen inti.

Sumber: Kubernetes
Berikut daftar komponen dan fungsinya:
- API Server: Komponen ini bertindak sebagai titik pengelolaan pusat untuk semua sumber daya Kubernetes. API Server menerima permintaan dari pengguna dan komponen lain lalu menerapkan kebijakan untuk mengelola klaster.
- Controller manager: Bertanggung jawab mempertahankan state klaster yang diinginkan dengan terus memantau dan merekonsiliasi perubahan pada objek di dalam klaster.
- etcd: Penyimpanan key-value terdistribusi yang menjadi datastore utama Kubernetes. Menyimpan seluruh data klaster dan memastikan konsistensi serta ketersediaan data.
- kubelet: Agen yang berjalan pada setiap node di klaster dan bertanggung jawab mengelola kontainer, memastikan kontainer berjalan sesuai konfigurasi yang ditentukan.
- Kube Proxy: Komponen yang berjalan pada setiap node dan bertanggung jawab merutekan lalu lintas jaringan ke kontainer yang tepat.
Cara Kerja Kubernetes
Seperti telah dibahas, Kubernetes mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi terkontainerisasi di seluruh klaster. Kubernetes memastikan ketersediaan tinggi, pemanfaatan sumber daya yang efisien, dan pemulihan mandiri tanpa intervensi manual.
Alih-alih mengelola kontainer satu per satu, Kubernetes mengelompokkannya ke dalam Pod dan mendistribusikannya ke worker node, yang berkomunikasi dengan control plane untuk mempertahankan state sistem yang diinginkan.
Berikut ringkasan cara kerja Kubernetes:
- Mendefinisikan penyebaran aplikasi: Anda menentukan state yang diinginkan dalam berkas YAML, termasuk replika, batas sumber daya, dan aturan jaringan.
- Menjadwalkan beban kerja: Scheduler menetapkan Pod ke worker node berdasarkan ketersediaan sumber daya.
- Mengelola state klaster: Controller Manager memastikan sistem mempertahankan jumlah Pod yang benar, mengganti yang gagal.
- Menangani jaringan: Kubernetes mengelola komunikasi antar layanan dan akses eksternal melalui Service dan Ingress controller.
- Skala dan pemulihan mandiri: Kubernetes menyesuaikan jumlah Pod yang berjalan berdasarkan permintaan dan otomatis memulai ulang kontainer yang gagal.
Dengan menangani kompleksitas infrastruktur, Kubernetes memungkinkan tim berfokus membangun aplikasi alih-alih mengelola penyebaran, sehingga menjadi esensial untuk beban kerja yang skalabel dan tangguh di berbagai industri.
Istilah dan Konsep Umum
Mari lihat beberapa istilah kunci yang perlu Anda ketahui beserta definisinya:
- Manifest YAML: Berkas konfigurasi yang mendefinisikan state aplikasi atau infrastruktur yang diinginkan. Dapat digunakan untuk membuat, memperbarui, dan menghapus sumber daya di Kubernetes.
- StatefulSet vs. Deployment: Dua jenis controller di Kubernetes yang mengelola siklus hidup pod. Deployment biasanya digunakan untuk aplikasi stateless, sedangkan StatefulSet untuk aplikasi stateful.
- Service: Memberikan alamat IP dan nama DNS yang stabil untuk mengakses aplikasi Anda di dalam klaster. Juga memungkinkan komunikasi antar pod.
- ConfigMap: Digunakan untuk menyimpan data konfigurasi dalam pasangan key-value yang dapat diakses oleh aplikasi Anda.
- Secret: Mirip dengan ConfigMap, tetapi digunakan untuk menyimpan informasi sensitif seperti kata sandi atau kunci API.
Mulai Menggunakan Kubernetes
Bekerja dengan Kubernetes bisa terasa menakutkan, terutama saat memahami berbagai istilah dan konsep. Namun, setelah Anda memahami istilah-istilah penting ini dengan baik, menavigasi platform akan menjadi jauh lebih mudah.
Mari mulai dengan melihat beberapa alat yang digunakan bersama Kubernetes.
Alat untuk pemula
Sebagai pemula Kubernetes, keharusan menyebarkan aplikasi di cloud bisa terasa berat. Karena itu, Anda dapat menggunakan beberapa alat umum untuk menyebarkannya secara lokal.
Berikut 2 alat yang paling umum digunakan:
1. Minikube
Minikube adalah implementasi Kubernetes yang ringan dan dapat dijalankan pada satu mesin host. Biasanya menjalankan klaster node tunggal dalam mesin virtual (VM) di laptop atau workstation Anda.
Alasan menggunakannya:
- Mudah dipasang dan dibongkar.
- Sangat cocok untuk pengembangan lokal dan proof-of-concept.
- Penggunaan sumber daya minimal dibandingkan klaster penuh.
Cara memasang Minikube (contoh di Windows):
# Install via Windows Package Manager
winget install Kubernetes.minikube
Anda akan melihat pesan pemasangan berikut. Setujui syarat dan ketentuan jika diminta dengan menekan “Y”.

Selanjutnya, untuk menjalankan klaster sederhana di minikube, gunakan perintah start berikut:
# Start a single-node cluster
minikube start
Untuk memeriksa apakah node klaster telah berhasil dimulai, jalankan perintah get:
# Verify the cluster is running
kubectl get nodes
Catatan: Anda perlu memasang server API kubectl di mesin lokal Anda (sering kali dipasang otomatis bersama Minikube).
2. Kind (Kubernetes in Docker)
Kind singkatan dari Kubernetes in Docker. Kind menggunakan kontainer Docker sebagai "node" dalam klaster Kubernetes, menyediakan lingkungan klaster lokal berbasis kontainer yang sederhana.
Alasan menggunakannya:
- Waktu mulai lebih cepat dibandingkan Minikube dalam banyak skenario.
- Mudah menjalankan beberapa klaster uji sekaligus, ideal untuk pipeline CI/CD.
- Sering digunakan di lingkungan pengujian otomatis karena overhead yang lebih rendah.
Cara memasang Kind (contoh di Windows):
# Install Kind with Windows Package Manager
winget install Kubernetes.kind
Setelah terpasang, Anda dapat membuat klaster sederhana menggunakan perintah create cluster dan berikan namanya.
# Create a basic cluster
kind create cluster --name example-cluster
Untuk memeriksa apakah klaster kind Kubernetes Anda telah berjalan, gunakan perintah get berikut.
# Check running clusters
kind get clusters
Anda juga dapat berinteraksi dengan klaster melalui antarmuka kubectl:
# Interact with your Kind cluster using kubectl
kubectl get nodes
Catatan: Pastikan Docker telah terpasang dan berjalan.
Penyedia Cloud (EKS, GKE, AKS)
Saat menjalankan Kubernetes di cloud, berikut beberapa penyedia cloud yang dapat dipilih:
1. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS adalah layanan terkelola yang memudahkan menjalankan Kubernetes di AWS tanpa perlu mengelola control plane atau worker node sendiri. EKS terintegrasi dengan layanan AWS lain untuk fitur tambahan seperti load balancing, penyimpanan, penskalaan otomatis, dan pemantauan.
Beberapa fitur tambahan meliputi:
- Integrasi dengan layanan AWS lain (mis., IAM, CloudWatch, ECR).
- Skalabilitas dan ketersediaan tinggi sudah tersemat pada platform.
2. Google GKE (Google Kubernetes Engine)
Google GKE adalah layanan terkelola penuh untuk menjalankan Kubernetes di Google Cloud Platform. Menawarkan penskalaan otomatis, kemampuan pemulihan mandiri, dan integrasi dengan layanan Google Cloud lainnya.
Beberapa fitur tambahan meliputi:
- Integrasi mendalam dengan layanan GCP seperti Cloud Logging, Cloud Monitoring, dan Container Registry.
- Menawarkan mode autopilot, yang secara otomatis mengelola infrastruktur klaster.
3. Azure AKS (Azure Kubernetes Service)
Azure AKS menyediakan klaster Kubernetes tanpa server yang sepenuhnya terintegrasi dengan layanan Azure lain seperti Storage, Networking, dan Load Balancing. AKS juga memiliki dukungan bawaan untuk alat DevOps seperti Helm dan Prometheus.
Beberapa fitur tambahan meliputi:
- Terintegrasi dengan Azure Active Directory, Azure Monitor, Container Registry, dll.
- Menawarkan Kubernetes tanpa server (Virtual Nodes) menggunakan Azure Container Instances.
Sumber belajar Kubernetes
Mempelajari Kubernetes untuk pertama kali bisa terasa berat, tetapi ada banyak sumber yang tersedia untuk membantu Anda memulai.
Berikut beberapa sumber yang direkomendasikan:
- Kursus dan sumber DataCamp: Kursus Introduction to Kubernetes dan tutorial Containerization kami adalah tempat yang bagus untuk memulai.
- Tutorial pemula Kubernetes khusus kami: Disusun untuk memberikan dasar-dasarnya.
Contoh Deployment Kubernetes
Untuk menjalankan aplikasi di Kubernetes, Anda mengikuti alur kerja terstruktur yang mencakup menyiapkan klaster, menyebarkan aplikasi terkontainerisasi, mengeksposnya sebagai layanan, dan melakukan penskalaan sesuai kebutuhan.
Kami telah membahas proses ini secara rinci di tutorial Kubernetes kami, tetapi berikut ringkasan tingkat tingginya:
Siapkan klaster Kubernetes
Gunakan Minikube untuk membuat klaster lokal guna pengujian dan pengembangan. Pasang Minikube dan mulai klaster Anda dengan:
minikube start --driver=docker
kubectl get nodes
Sebarkan aplikasi
Definisikan state aplikasi yang diinginkan dalam berkas YAML Deployment. Sebagai contoh, menyebarkan server web Nginx terlihat seperti ini:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello-container
image: nginx:latest
ports:
- containerPort: 80
Terapkan deployment dengan:
kubectl apply -f hello-deployment.yaml
Ekspos aplikasi sebagai layanan
Agar aplikasi dapat diakses, buat Service menggunakan:
kubectl expose deployment hello-deployment --type=NodePort --port=80 --name=hello-service
Ambil URL eksternal dan buka aplikasi di peramban Anda:
minikube service hello-service
Skalakan dan pantau aplikasi
Kubernetes memungkinkan Anda menskalakan aplikasi dengan mudah. Untuk menambah replika:
kubectl scale deployment hello-deployment --replicas=3
Periksa Pod yang berjalan:
kubectl get pods
Lihat log untuk debug:
kubectl logs -f <pod-name>
Berikut beberapa contoh untuk eksplorasi lebih lanjut pada proyek lanjutan:
- Jalankan pekerjaan streaming dalam kontainer (mis., Spark di Kubernetes, Kafka di Kubernetes).
- Gunakan Persistent Volume untuk me-mount solusi penyimpanan eksternal seperti AWS EBS, Azure Disk, atau NFS.
- Sebarkan aplikasi yang lebih kompleks (mis., mikrolayanan multi-tier dengan basis data).
- Jelajahi fitur lanjutan seperti Ingress controller, Service Mesh (mis., Istio), chart Helm untuk manajemen paket.
Penutup
Kubernetes adalah platform yang kuat untuk menyebarkan dan mengelola aplikasi terkontainerisasi dalam skala besar, menjadikannya alat esensial bagi data engineer yang memerlukan lingkungan elastis dan andal untuk pemrosesan data.
Jika Anda tertarik mempelajari lebih lanjut tentang Kubernetes, kursus Introduction to Kubernetes kami adalah tempat yang tepat untuk memulai.
FAQ Kubernetes
Apakah Kubernetes sama dengan Docker?
Tidak, Kubernetes adalah alat orkestrasi kontainer sedangkan Docker adalah platform kontainerisasi. Keduanya bekerja sama untuk mengelola dan menyebarkan kontainer, tetapi memiliki tujuan yang berbeda.
Apa manfaat menggunakan Kubernetes?
Kubernetes memudahkan pengelolaan dan penyebaran kontainer, meningkatkan skalabilitas dan ketersediaan aplikasi, serta mendukung pembaruan dan rollback otomatis.
Apakah Kubernetes bisa digunakan di semua jenis lingkungan?
Ya, Kubernetes dapat digunakan di lingkungan on-premise maupun cloud. Kubernetes sangat fleksibel dan dapat beradaptasi dengan berbagai setelan infrastruktur.
Apakah sulit mempelajari cara menggunakan Kubernetes?
Meskipun ada kurva pembelajaran, tersedia banyak sumber daya daring seperti DataCamp dan panduan pemula dari Kubernetes sendiri.
Apa arsitektur Kubernetes?
Kubernetes mengikuti arsitektur klien-server, dengan master node mengendalikan klaster dan worker node menjalankan beban kerja aplikasi. Ini memungkinkan komunikasi dan pengelolaan seluruh sistem yang efisien.

Saya Austin, seorang blogger dan penulis teknologi dengan pengalaman bertahun-tahun sebagai data scientist dan analis data di bidang kesehatan. Memulai perjalanan teknologi dengan latar belakang biologi, kini saya membantu orang lain melakukan transisi yang sama melalui blog teknologi saya. Ketertarikan saya pada teknologi mendorong kontribusi tulisan saya untuk puluhan perusahaan SaaS, menginspirasi orang lain dan membagikan pengalaman saya.
