Cara Setup Kubernetes Cluster di Baremetal Server
Kubernetes adalah platform open-source yang digunakan untuk mengotomatisasi deployment, scaling, dan manajemen aplikasi containerized. Di dunia yang serba cepat ini, aplikasi yang menggunakan container menjadi pilihan utama karena kemudahan pengelolaannya dan skalabilitas yang ditawarkan. Kubernetes menyederhanakan manajemen aplikasi berbasis container dengan cara mengotomatiskan berbagai tugas penting, seperti load balancing, auto-scaling, dan pengelolaan jaringan antar-container.
Kenapa Memilih Baremetal untuk Kubernetes Cluster?
Menggunakan baremetal untuk Kubernetes menawarkan beberapa keuntungan penting:
- Performa yang lebih tinggi dibandingkan cloud. Kubernetes di baremetal memungkinkan Anda memaksimalkan performa aplikasi tanpa batasan virtualisasi.
- Kontrol penuh terhadap perangkat keras, yang memberikan fleksibilitas lebih dalam pengaturan dan optimisasi aplikasi.
- Biaya yang lebih rendah untuk aplikasi berkapasitas tinggi, karena penggunaan sumber daya yang lebih efisien dan tidak terbagi-bagi dengan pelanggan lain seperti pada cloud.
Dengan kata lain, baremetal memberikan dedicated hardware untuk aplikasi Anda yang membutuhkan performa maksimal.
Persiapan Sebelum Install Kubernetes di Baremetal
Persyaratan Perangkat Keras/Hardware
Untuk menjalankan Kubernetes di baremetal, ada beberapa persyaratan perangkat keras yang perlu dipersiapkan:
- CPU: Minimal 2 vCPU per node untuk menghindari bottleneck dalam pengelolaan workload.
- RAM: Minimal 4GB RAM per node (lebih baik 8GB atau lebih untuk cluster yang lebih besar).
- Storage: Minimal 20GB SSD atau HDD per node, dengan pemilihan SSD lebih dianjurkan untuk performa lebih cepat.
- Jaringan: IP statis untuk setiap node, serta pengaturan DNS yang tepat untuk memudahkan komunikasi antar node di dalam cluster.
Sistem Operasi yang Tepat
Sistem operasi yang umum digunakan untuk Kubernetes adalah:
- Ubuntu (versi terbaru atau LTS)
- CentOS
- Debian
Ubuntu sering dipilih karena dokumentasinya yang lengkap dan kompatibilitasnya dengan banyak alat Kubernetes. Namun, CentOS dan Debian juga bisa menjadi pilihan yang baik.
Pastikan setiap node dalam cluster memiliki IP statis agar lebih mudah dikelola. Jika Anda menggunakan multiple subnets untuk meningkatkan keamanan atau manajemen, pastikan pengaturan jaringan antara node bisa berjalan dengan baik.
Langkah 1: Instalasi Kubernetes Dependencies
Install Docker
Kubernetes menggunakan Docker sebagai container runtime. Untuk menginstal Docker di server baremetal, lakukan langkah-langkah berikut:
1. Update package list:
sudo apt-get update
2. Install Docker:
sudo apt-get install docker.io
3. Set Docker untuk otomatis start:
sudo systemctl enable docker
sudo systemctl start docker
4. Verifikasi Docker:
sudo docker --version
Install Kubernetes Components
Untuk menjalankan Kubernetes, kita perlu menginstal beberapa komponen, yaitu kubeadm, kubelet, dan kubectl. Anda dapat menginstal ketiganya menggunakan perintah berikut:
1. Add Kubernetes repository:
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update
2. Install kubeadm, kubelet, kubectl:
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Disable Swap
Kubernetes membutuhkan swap dimatikan agar bisa berjalan dengan lancar. Untuk menonaktifkan swap:
1. Nonaktifkan swap:
sudo swapoff -a
2. Untuk menonaktifkan swap secara permanen, buka file /etc/fstab dan komentar atau hapus entri swap.
Langkah 2: Setup Kubernetes Master Node
Inisialisasi Cluster
Untuk memulai cluster Kubernetes, jalankan perintah kubeadm init pada master node:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
Perintah ini akan menginisialisasi cluster dan menampilkan token untuk menambahkan worker node.
Konfigurasi kubectl
Setelah master node berhasil diinisialisasi, kita perlu mengonfigurasi kubectl agar bisa digunakan oleh user biasa:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Install Network Plugin
Kubernetes membutuhkan network plugin untuk komunikasi antar pod. Misalnya, kita dapat menggunakan Calico atau Flannel. Berikut adalah cara install Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Verifikasi Cluster
Setelah semua langkah selesai, verifikasi status cluster menggunakan perintah:
kubectl get nodes
kubectl get pods --all-namespaces
Langkah 3: Setup Worker Nodes
Menambahkan Worker Node
Pada setiap worker node, jalankan perintah kubeadm join yang didapatkan dari master node setelah inisialisasi:
kubeadm join <MASTER_NODE_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
Verifikasi Worker Node
Setelah worker node bergabung, periksa status node:
kubectl get nodes
Semua node harus terdaftar dengan status Ready.
Langkah 4: Install dan Konfigurasi Pod Networking
Pastikan pod dapat saling berkomunikasi dengan mengonfigurasi plugin jaringan. Beberapa plugin jaringan yang dapat digunakan adalah:
- Flannel
- Calico
- Weave
Instalasi dilakukan menggunakan perintah kubectl, seperti yang telah dijelaskan sebelumnya.
Langkah 5: Verifikasi Cluster Kubernetes
Setelah semua langkah di atas selesai, lakukan verifikasi cluster Kubernetes dengan perintah:
kubectl get nodes
kubectl get pods --all-namespaces
Testing pod dengan perintah:
kubectl run myapp --image=nginx --restart=Never
kubectl get pods
Jika pod berhasil dijalankan, maka cluster Kubernetes siap digunakan.
Langkah 6: Pengelolaan dan Pengaturan Cluster
Scaling Cluster
Menambah kapasitas cluster Kubernetes di lingkungan baremetal dapat dilakukan dengan dua cara utama, yaitu menambahkan node baru atau menambah jumlah replika dari pod yang sudah ada. Menambahkan node berarti memperluas sumber daya fisik cluster, sehingga aplikasi dapat menangani beban kerja yang lebih besar tanpa mengalami penurunan performa. Proses ini biasanya melibatkan konfigurasi ulang jaringan dan sinkronisasi node baru dengan control plane agar tetap konsisten dan stabil.
Selain itu, Anda juga dapat melakukan scaling secara horizontal dengan menambah jumlah replika pod melalui konfigurasi Deployment. Pendekatan ini sangat efektif untuk menangani lonjakan trafik sementara tanpa perlu menambah perangkat keras baru. Dengan menggunakan auto-scaling berbasis CPU atau memory usage, Kubernetes dapat secara otomatis menyesuaikan jumlah replika sesuai kebutuhan, memastikan efisiensi sumber daya sekaligus menjaga ketersediaan layanan.
Upgrade Kubernetes Cluster
Melakukan upgrade pada cluster Kubernetes merupakan langkah penting untuk menjaga keamanan, kompatibilitas, dan performa sistem. Dengan menggunakan perintah kubeadm upgrade, administrator dapat memperbarui versi Kubernetes control plane dan node secara bertahap tanpa mengganggu layanan yang sedang berjalan. Proses upgrade ini juga memberikan akses ke fitur-fitur baru serta peningkatan stabilitas dari versi sebelumnya.
Namun, sebelum melakukan upgrade, sangat disarankan untuk melakukan backup terhadap semua komponen penting, termasuk konfigurasi, data persistent, dan file manifest. Langkah ini memastikan bahwa jika terjadi kendala selama proses upgrade, cluster dapat dipulihkan dengan cepat tanpa kehilangan data. Selain itu, selalu pastikan versi kubelet dan kubectl pada setiap node juga disesuaikan dengan versi terbaru agar cluster tetap berjalan secara optimal.
Keamanan dan Monitoring
Keamanan menjadi salah satu aspek paling krusial dalam pengelolaan cluster Kubernetes. Penggunaan RBAC (Role-Based Access Control) memungkinkan administrator mengatur hak akses berdasarkan peran pengguna atau aplikasi. Dengan cara ini, setiap entitas hanya memiliki izin sesuai kebutuhan operasionalnya, sehingga mengurangi risiko kebocoran data atau perubahan konfigurasi yang tidak sah. Selain RBAC, penggunaan network policy juga sangat disarankan untuk membatasi komunikasi antar pod berdasarkan aturan yang spesifik dan aman.
Selain aspek keamanan, monitoring merupakan elemen penting dalam menjaga stabilitas dan kinerja cluster. Tools seperti Prometheus dan Grafana dapat digunakan untuk memantau penggunaan CPU, memori, jaringan, serta status pod secara real-time. Dengan visualisasi data dari Grafana, administrator dapat dengan mudah mendeteksi anomali atau potensi bottleneck sebelum menimbulkan masalah yang lebih besar. Monitoring yang baik juga membantu dalam melakukan perencanaan kapasitas dan optimasi sumber daya di masa depan.
Membangun dan mengelola Kubernetes di baremetal server memberikan keuntungan yang signifikan bagi organisasi dengan kebutuhan performa tinggi dan kontrol penuh terhadap infrastruktur. Dengan mengoptimalkan pengelolaan scaling, upgrade, keamanan, dan monitoring, cluster yang dibangun akan lebih stabil, efisien, dan siap menangani berbagai beban kerja aplikasi modern.
Pendekatan ini tidak hanya meningkatkan efisiensi biaya karena tidak bergantung pada layanan cloud, tetapi juga memberikan fleksibilitas lebih besar dalam konfigurasi dan manajemen sumber daya. Dengan langkah-langkah yang tepat, Kubernetes di baremetal dapat menjadi fondasi kuat bagi sistem produksi berskala besar dan berkelanjutan.