Kubernetes adalah platform orkestrasi kontainer sumber terbuka yang dirancang untuk mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi yang dikemas dalam kontainer. Kubernetes dapat digunakan bersama dengan Docker atau runtime kontainer lainnya untuk mengelola aplikasi dalam lingkungan yang terdistribusi dan terukur. Dalam artikel ini, kita akan membahas secara rinci tentang Kubernetes dan bagaimana cara menggunakannya melalui tutorial langkah-demi-langkah.
Apa itu Kubernetes?
Kubernetes, juga dikenal sebagai K8s, adalah sistem sumber terbuka yang dikembangkan oleh Google untuk mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi kontainer. Kubernetes memungkinkan Anda untuk mengelola aplikasi yang terdiri dari beberapa kontainer dan menjalankannya pada kluster mesin fisik atau virtual.
Beberapa fitur utama Kubernetes meliputi:
- Penyebaran Aplikasi: Kubernetes memungkinkan penyebaran aplikasi kontainer yang mudah dan cepat menggunakan konsep seperti pod, replika, dan layanan.
- Penskalaan: Kubernetes mendukung penskalaan horizontal dan vertikal aplikasi kontainer untuk menyesuaikan dengan beban kerja yang berubah-ubah.
- Manajemen Sumber Daya: Kubernetes menyediakan mekanisme untuk mengalokasikan dan mengelola sumber daya seperti CPU, memori, dan penyimpanan untuk aplikasi kontainer.
- Ketersediaan Tinggi: Kubernetes memastikan ketersediaan dan ketahanan aplikasi kontainer dengan mendeteksi kegagalan dan menggantikan kontainer yang rusak.
- Layanan dan Jaringan: Kubernetes menyediakan abstraksi jaringan tingkat tinggi untuk menghubungkan aplikasi kontainer, seperti layanan dan ingress.
Kubernetes Tutorial
Dalam tutorial ini, kita akan membahas langkah-demi-langkah cara menggunakan Kubernetes untuk mengelola aplikasi kontainer. Tutorial ini mencakup:
- Persiapan
- Instalasi Kubernetes
- Menggunakan kubectl
- Mengelola Pod
- Mengelola Layanan
- Penskalaan Aplikasi
- Menggunakan Label dan Anotasi
- Penyebaran
- Mengelola Ketersediaan Tinggi
- Menggunakan Jaringan
-
Persiapan
Sebelum kita mulai, pastikan Anda memiliki akses ke kluster Kubernetes yang sudah diatur, atau ikuti panduan resmi Kubernetes untuk mengatur kluster sendiri: https://kubernetes.io/docs/setup/
-
Instalasi Kubernetes
Untuk menginstal Kubernetes pada sistem Anda, ikuti petunjuk resmi Kubernetes untuk menginstal kubectl, CLI Kubernetes, pada sistem operasi Anda: https://kubernetes.io/docs/tasks/tools/install-kubectl/
-
Menggunakan kubectl
Setelah menginstal kubectl, Anda dapat mulai menggunakannya untuk mengelola kluster Kubernetes Anda. Untuk memulai, coba jalankan perintah berikut untuk memeriksa versi kubectl dan kluster Anda:
kubectl version
Jika Anda melihat versi klien dan server yang dicetak, artinya kubectl telah berhasil diinstal dan dikonfigurasi.
-
Mengelola Pod
Pod adalah unit dasar dalam Kubernetes yang mengelompokkan satu atau lebih kontainer bersama. Untuk membuat pod baru, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan pod dan kontainer di dalamnya. Berikut adalah contoh file konfigurasi pod sederhana:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Simpan file ini sebagai my-nginx-pod.yaml dan jalankan perintah berikut untuk membuat pod baru:
kubectl apply -f my-nginx-pod.yaml
Anda dapat melihat pod yang telah dibuat dengan perintah:
kubectl get pods
-
Mengelola Layanan
Layanan adalah abstraksi tingkat tinggi yang digunakan untuk mengekspos aplikasi yang berjalan dalam pod ke jaringan eksternal atau internal. Untuk membuat layanan baru, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan layanan dan selektor yang digunakan untuk menargetkan pod. Berikut adalah contoh file konfigurasi layanan sederhana:
apiVersion: v1
kind: Service
metadata:
name: my-nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Simpan file ini sebagai my-nginx-service.yaml dan jalankan perintah berikut untuk membuat layanan baru:
kubectl apply -f my-nginx-service.yaml
Anda dapat melihat layanan yang telah dibuat dengan perintah:
kubectl get services
-
Penskalaan Aplikasi
Kubernetes mendukung penskalaan horizontal aplikasi dengan menggunakan konsep replika. Untuk menskalakan aplikasi Anda, Anda dapat menggunakan file konfigurasi YAML yang mendefinisikan Deployment dengan jumlah replika yang diinginkan. Berikut adalah contoh file konfigurasi Deployment sederhana:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Simpan file ini sebagai my-nginx-deployment.yaml dan jalankan perintah berikut untuk membuat Deployment baru:
kubectl apply -f my-nginx-deployment.yaml
Anda dapat melihat Deployment yang telah dibuat dengan perintah:
kubectl get deployments
Untuk mengubah jumlah replika, Anda dapat mengubah nilai replicas dalam file konfigurasi dan menjalankan kubectl apply lagi, atau Anda dapat menggunakan perintah berikut untuk mengubah jumlah replika secara langsung:
kubectl scale deployment my-nginx-deployment --replicas=5
-
Menggunakan Label dan Anotasi
Label dan anotasi adalah cara untuk menambahkan metadata ke objek Kubernetes, seperti pod, layanan, dan Deployment. Label adalah pasangan kunci-nilai yang dapat digunakan untuk mengorganisir, mengelompokkan, dan memilih objek, sementara anotasi adalah pasangan kunci-nilai yang dapat digunakan untuk menyimpan informasi tambahan yang tidak digunakan secara langsung oleh Kubernetes.
Untuk menambahkan label atau anotasi ke objek, Anda dapat mengedit file konfigurasi YAML dan menambahkannya ke bagian metadata. Berikut adalah contoh bagaimana cara menambahkan label dan anotasi ke pod:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
labels:
app: nginx
environment: production
annotations:
description: "A sample nginx pod"
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Anda dapat menggunakan label untuk memilih objek dengan perintah kubectl, seperti berikut:
kubectl get pods -l app=nginx
-
Penyebaran
Kubernetes mendukung penyebaran aplikasi dengan menggunakan konsep Deployment, yang memungkinkan Anda untuk mengelola versi aplikasi dan menggulirkan pembaruan tanpa downtime. Untuk menggulirkan pembaruan aplikasi, Anda dapat mengubah file konfigurasi Deployment dengan menggantikan versi kontainer yang digunakan, kemudian menjalankan perintah kubectl apply.
Selain itu, Anda dapat menggunakan perintah berikut untuk melihat riwayat penyebaran dan menggulung kembali ke versi sebelumnya jika diperlukan:
kubectl rollout history deployment my-nginx-deployment
kubectl rollout undo deployment my-nginx-deployment
-
Mengelola Ketersediaan Tinggi
Kubernetes menyediakan mekanisme untuk memastikan ketersediaan tinggi aplikasi dengan mendeteksi kegagalan dan menggantikan kontainer yang rusak. Untuk mengelola ketersediaan tinggi, Anda dapat menggunakan konsep seperti liveness probe dan readiness probe yang memeriksa kesehatan aplikasi dan menggantikan kontainer yang rusak jika diperlukan.
Berikut adalah contoh cara menambahkan liveness probe ke pod:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
-
Menggunakan Jaringan
Kubernetes menyediakan abstraksi jaringan tingkat tinggi untuk menghubungkan aplikasi kontainer, seperti layanan dan ingress. Layanan memungkinkan Anda untuk mengekspos aplikasi ke jaringan eksternal atau internal, sementara ingress menyediakan aturan untuk merutekan lalu lintas eksternal ke layanan dalam kluster.
Berikut adalah contoh cara menambahkan ingress ke layanan:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-nginx-ingress
spec:
rules:
- host: my-nginx.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-nginx-service
port:
number: 80
Simpan file ini sebagai my-nginx-ingress.yaml dan jalankan perintah berikut untuk membuat ingress baru:
kubectl apply -f my-nginx-ingress.yaml
Anda dapat melihat ingress yang telah dibuat dengan perintah:
kubectl get ingress
Dalam contoh ini, kita membuat sebuah Ingress untuk merutekan lalu lintas dari domain my-nginx.example.com ke layanan yang bernama my-nginx-service pada port 80. Ingress ini menggunakan aturan berbasis path dengan tipe Prefix yang berarti semua permintaan dengan path yang diawali dengan / akan diteruskan ke layanan yang ditentukan.
Dengan menggunakan ingress, Anda dapat mengontrol akses ke layanan dalam kluster Kubernetes Anda dan mengoptimalkan pengelolaan lalu lintas jaringan. Selain itu, Anda juga dapat mengintegrasikan fitur tambahan seperti SSL/TLS dan load balancing melalui konfigurasi Ingress yang lebih kompleks atau penggunaan kontroler Ingress pihak ketiga.
Kesimpulan
Dalam artikel ini, kita telah membahas secara rinci tentang Kubernetes dan cara menggunakannya melalui tutorial langkah-demi-langkah. Kubernetes adalah platform orkestrasi kontainer yang sangat kuat yang memungkinkan Anda untuk mengelola aplikasi dalam lingkungan yang terdistribusi dan terukur. Dengan memahami konsep dasar Kubernetes dan cara menggunakannya, Anda akan dapat mengotomatiskan penyebaran, penskalaan, dan pengelolaan aplikasi kontainer dengan mudah. Melalui penggunaan komponen seperti pod, layanan, Deployment, serta Label dan Anotasi, Anda dapat mengelola aplikasi dengan fleksibilitas dan kontrol yang lebih baik. Selain itu, fitur seperti penyebaran, ketersediaan tinggi, dan abstraksi jaringan membantu memastikan aplikasi Anda dapat beradaptasi dengan kebutuhan yang berubah-ubah dan selalu tersedia untuk pengguna.