Bagikan :
Langkah Awal Menggunakan Kubernetes: Mengenal Pods, Services, dan Deployments
foto : Morfogenesis Teknologi Indonesia Creative Team
Kubernetes telah menjadi standar de facto untuk mengelola aplikasi berbasis kontainer di lingkungan produksi. Bagi pendatang baru, ekosistem Kubernetes mungkin terasa luas, namun memahami tiga komponen inti—Pod, Service, dan Deployment—adalah kunci awal untuk membangun arsitektur yang tangguh dan terukur. Ketiga objek ini bekerja secara harmonis untuk memastikan aplikasi Anda berjalan, dapat dijangkau, dan mudah dikelola sepanjang siklus hidupnya.
Pod adalah unit terkecil dalam Kubernetes yang menjalankan satu atau beberapa kontainer yang berbagi sumber daya jaringan dan penyimpanan. Anggap Pod sebagai mesin virtual mini yang berisi aplikasi Anda beserta dependensinya. Contoh sederhana: Pod untuk aplikasi web berbasis Node.js dapat berisi kontainer utama yang menjalankan aplikasi dan kontainer sidecar yang mengumpulkan log. Membuat Pod langsung melalui perintah kubectl run my-pod --image=nginx memang memungkinkan, tetapi pendekatan ini tidak menghasilkan efek heal yang otomatis jika Pod mengalami kegagalan.
Untuk mengatasi kelemahan Pod mandiri, Kubernetes menyediakan objek bernama Deployment. Deployment menjamin bahwa jumlah replika Pod tetap sesuai keinginan, melakukan rolling update, dan melakukan rollback otomatis jika terjadi kegagalan. Misalnya, Deployment berikut akan menjalankan tiga replikasi aplikasi nginx:
1. apiVersion: apps/v1
2. kind: Deployment
3. metadata: {name: nginx-deployment}
4. spec: {replicas: 3, selector: {matchLabels: {app: nginx}}, template: {metadata: {labels: {app: nginx}}, spec: {containers: [{name: nginx, image: nginx:1.25}]}}}
Menyimpan konfigurasi ini sebagai nginx-deployment.yaml lalu menerapkannya dengan kubectl apply -f nginx-deployment.yaml akan membuat Pod-Pod yang tersebar di berbagai node, memastikan ketersediaan tinggi.
Ketika Pod diperbarui atau digantikan, alamat IP-nya berubah. Tanpa mekanisme pengabstrakan, klien akan kesulitan menemukan Pod yang tepat. Di sinilah Service berperan. Service memberikan alamat IP tetap dan DNS yang stabil, serta melakukan load balancing ke Pod-pod yang memiliki label tertentu. Ada empat tipe Service:
1. ClusterIP – eksis hanya di dalam klaster, cocok untuk komunikasi internal microservice.
2. NodePort – membuka port di setiap node agar dapat diakses dari luar klaster melalui IP node.
3. LoadBalancer – memanfaatkan load balancer eksternal yang disediakan oleh cloud provider.
4. ExternalName – mengembalikan CNAME untuk layanan di luar klaster.
Contoh Service ClusterIP untuk aplikasi nginx:
apiVersion: v1
kind: Service
metadata: {name: nginx-service}
spec: {selector: {app: nginx}, ports: [{port: 80, targetPort: 80}], type: ClusterIP}
Dengan Service ini, Pod lain cukup menargetkan http://nginx-service untuk mengonsumsi API atau halaman web nginx.
Ketiga objek—Pod, Service, dan Deployment—berinteraksi melalui label dan selektor. Deployment memastikan replika Pod tersedia, Service menyediakan endpoint stabil, dan Pod menjalankan aplikasi aktual. Praktik terbaik untuk memulai adalah membuat namespace khusus eksperimen (kubectl create namespace latihan), menerapkan Deployment, mengeksposnya melalui Service, lalu memeriksa log dan resource usage. Gunakan perintah seperti kubectl get all -n latihan untuk memperoleh ringkasan objek, dan kubectl describe service nginx-service untuk melihat endpoint yang terdaftar.
Menguasai Pod, Service, dan Deployment adalah fondasi bagi eksplorasi lebih dalam ke Ingress, ConfigMap, Secret, StatefulSet, dan HorizontalPodAutoscaler. Dengan pemahaman yang kokoh, Anda dapat merancang aplikasi yang elastis, dapat diskalakan, dan siap untuk produksi. Mulailah dengan contoh sederhana, iterasi secara bertahap, dan manfaatkan fitur dry-run kubectl untuk memvalidasi manifest sebelum diterapkan.
Ingin fokus pada pengembangan aplikasi tanpa khawatir mengelola infrastruktur Kubernetes? Morfotech.id siap membantu merancang, menerapkan, dan memelihara solusi kontainerisasi yang disesuaikan dengan kebutuhan bisnis Anda. Diskusikan ide Anda melalui WhatsApp +62 811-2288-8001 atau kunjungi https://morfotech.id untuk melihat portofolio dan layanan lengkap kami.
Pod adalah unit terkecil dalam Kubernetes yang menjalankan satu atau beberapa kontainer yang berbagi sumber daya jaringan dan penyimpanan. Anggap Pod sebagai mesin virtual mini yang berisi aplikasi Anda beserta dependensinya. Contoh sederhana: Pod untuk aplikasi web berbasis Node.js dapat berisi kontainer utama yang menjalankan aplikasi dan kontainer sidecar yang mengumpulkan log. Membuat Pod langsung melalui perintah kubectl run my-pod --image=nginx memang memungkinkan, tetapi pendekatan ini tidak menghasilkan efek heal yang otomatis jika Pod mengalami kegagalan.
Untuk mengatasi kelemahan Pod mandiri, Kubernetes menyediakan objek bernama Deployment. Deployment menjamin bahwa jumlah replika Pod tetap sesuai keinginan, melakukan rolling update, dan melakukan rollback otomatis jika terjadi kegagalan. Misalnya, Deployment berikut akan menjalankan tiga replikasi aplikasi nginx:
1. apiVersion: apps/v1
2. kind: Deployment
3. metadata: {name: nginx-deployment}
4. spec: {replicas: 3, selector: {matchLabels: {app: nginx}}, template: {metadata: {labels: {app: nginx}}, spec: {containers: [{name: nginx, image: nginx:1.25}]}}}
Menyimpan konfigurasi ini sebagai nginx-deployment.yaml lalu menerapkannya dengan kubectl apply -f nginx-deployment.yaml akan membuat Pod-Pod yang tersebar di berbagai node, memastikan ketersediaan tinggi.
Ketika Pod diperbarui atau digantikan, alamat IP-nya berubah. Tanpa mekanisme pengabstrakan, klien akan kesulitan menemukan Pod yang tepat. Di sinilah Service berperan. Service memberikan alamat IP tetap dan DNS yang stabil, serta melakukan load balancing ke Pod-pod yang memiliki label tertentu. Ada empat tipe Service:
1. ClusterIP – eksis hanya di dalam klaster, cocok untuk komunikasi internal microservice.
2. NodePort – membuka port di setiap node agar dapat diakses dari luar klaster melalui IP node.
3. LoadBalancer – memanfaatkan load balancer eksternal yang disediakan oleh cloud provider.
4. ExternalName – mengembalikan CNAME untuk layanan di luar klaster.
Contoh Service ClusterIP untuk aplikasi nginx:
apiVersion: v1
kind: Service
metadata: {name: nginx-service}
spec: {selector: {app: nginx}, ports: [{port: 80, targetPort: 80}], type: ClusterIP}
Dengan Service ini, Pod lain cukup menargetkan http://nginx-service untuk mengonsumsi API atau halaman web nginx.
Ketiga objek—Pod, Service, dan Deployment—berinteraksi melalui label dan selektor. Deployment memastikan replika Pod tersedia, Service menyediakan endpoint stabil, dan Pod menjalankan aplikasi aktual. Praktik terbaik untuk memulai adalah membuat namespace khusus eksperimen (kubectl create namespace latihan), menerapkan Deployment, mengeksposnya melalui Service, lalu memeriksa log dan resource usage. Gunakan perintah seperti kubectl get all -n latihan untuk memperoleh ringkasan objek, dan kubectl describe service nginx-service untuk melihat endpoint yang terdaftar.
Menguasai Pod, Service, dan Deployment adalah fondasi bagi eksplorasi lebih dalam ke Ingress, ConfigMap, Secret, StatefulSet, dan HorizontalPodAutoscaler. Dengan pemahaman yang kokoh, Anda dapat merancang aplikasi yang elastis, dapat diskalakan, dan siap untuk produksi. Mulailah dengan contoh sederhana, iterasi secara bertahap, dan manfaatkan fitur dry-run kubectl untuk memvalidasi manifest sebelum diterapkan.
Ingin fokus pada pengembangan aplikasi tanpa khawatir mengelola infrastruktur Kubernetes? Morfotech.id siap membantu merancang, menerapkan, dan memelihara solusi kontainerisasi yang disesuaikan dengan kebutuhan bisnis Anda. Diskusikan ide Anda melalui WhatsApp +62 811-2288-8001 atau kunjungi https://morfotech.id untuk melihat portofolio dan layanan lengkap kami.
Sumber:
AI Morfotech - Morfogenesis Teknologi Indonesia AI Team
Sabtu, September 27, 2025 7:03 PM