💻 IT dan Kehidupan

Memanfaatkan teknologi sebagai wasilah pemudah urusan & kebaikan ummah

IT, Docker & Server

Penyelenggaraan Lanjutan Kubernetes (K8s) & Rancher: Pengurusan Storage, Rutin, serta Backup & Recovery

Mukadimah
Menguruskan kluster Kubernetes (K8s) bukanlah sekadar memastikan pod berstatus Running. Hakikatnya, keupayaan sebenar seorang Pentadbir Sistem (SysAdmin) teruji apabila berhadapan dengan isu kapasiti storan penuh, keperluan penyelenggaraan node (server patching), dan saat genting apabila kluster mengalami kegagalan dan perlu dipulihkan (disaster recovery).

Dalam artikel ini, kita akan menyelami tiga aspek kritikal operasi K8s harian menggunakan kombinasi Rancher GUI dan kubectl CLI.

1. Pengurusan Storan (Storage Management)
Dalam K8s, data di dalam container bersifat sementara (ephemeral). Untuk memastikan data kekal (seperti pangkalan data MySQL atau fail muat naik pengguna) walaupun pod dipadam, kita mesti menggunakan storan berterusan (Persistent Storage). Tiga komponen utama yang perlu difahami:

StorageClass (SC): Profil jenis storan (contoh: storan SSD laju atau storan awan seperti AWS EBS/NFS).

PersistentVolume (PV): Kapasiti storan sebenar yang wujud dalam infrastruktur.

PersistentVolumeClaim (PVC): Permintaan dari pod anda untuk menggunakan sebahagian atau semua kapasiti PV tersebut.

A. Mengurus Storan Melalui Rancher GUI
Buka kluster anda di Rancher dan pergi ke menu Storage > PersistentVolumeClaims.

Klik Create.

Pilih Namespace aplikasi anda, masukkan nama PVC (cth: mysql-data), pilih StorageClass yang ada, dan tetapkan kapasiti (cth: 10Gi).

Setelah PVC tercipta (berstatus Bound), anda boleh mount (lekatkan) PVC ini ke dalam konfigurasi beban kerja (Workload/Deployment) aplikasi anda pada bahagian Storage.

B. Semakan Storan Melalui CLI (kubectl)
Untuk memeriksa status semasa storan secara pantas dari terminal:

Bash
# Lihat semua Storage Class yang ada
kubectl get sc

# Periksa status PVC di semua namespace (Penting untuk lihat jika ada yang berstatus 'Pending')
kubectl get pvc -A

# Periksa kapasiti PV secara keseluruhan
kubectl get pv
(Tips: Jika PVC berstatus Pending, biasanya bermaksud StorageClass gagal mencipta volume (tiada ruang storan fizikal) atau salah konfigurasi).

2. Penyelenggaraan Rutin (Routine Maintenance)
Sistem operasi pada pelayan fizikal/maya (node) perlu dikemas kini (OS Patching) atau di- reboot. Bagaimana kita mahu melakukannya tanpa mengganggu aplikasi yang sedang berjalan? Jawapannya adalah dengan teknik Cordon dan Drain.

Cordon: Menandakan node tersebut supaya tidak menerima pod baharu.

Drain: Mengusir (evict) pod yang sedia ada di dalam node tersebut supaya berpindah ke node lain secara automatik (pastikan anda mempunyai lebih dari satu node (High Availability)).

A. Melalui CLI (kubectl)
Bash
# 1. Halang node dari menerima pod baru
kubectl cordon <nama-node>

# 2. Kosongkan node (Pindahkan pod ke node lain secara selamat)
kubectl drain <nama-node> --ignore-daemonsets --delete-emptydir-data

# ---> Lakukan penyelenggaraan pelayan/reboot di sini <---

# 3. Masukkan kembali node ke dalam kluster
kubectl uncordon <nama-node>
B. Melalui Rancher GUI
Pergi ke Cluster > Nodes.

Klik butang tiga titik (â‹®) pada hujung nama node yang mahu diselenggarakan.

Pilih Cordon. Kemudian klik lagi dan pilih Drain.

Rancher akan memaparkan proses perpindahan pod. Selepas siap diselenggara, klik Uncordon untuk mengaktifkannya kembali.

3. Sandaran dan Pemulihan (Backup & Recovery)
Ini adalah insurans nyawa kluster anda. Kubernetes menyimpan seluruh konfigurasi, identiti, dan maklumat kluster di dalam pangkalan data utamanya yang dipanggil etcd.

Jika etcd hancur, seluruh kluster akan lumpuh walaupun node dan storage fizikal masih wujud.

A. Snapshot etcd melalui Rancher (Kritikal)
Rancher memudahkan proses backup secara terus dari antaramuka:

Pergi ke Cluster Management > pilih kluster anda.

Pergi ke tab Snapshots.

Klik Take Snapshot.

Tips Best Practice: Rancher boleh disetkan untuk menyimpan snapshot ini ke dalam storan awan luaran (seperti Amazon S3 atau MinIO) secara berjadual (cth: setiap 12 jam). Jangan simpan snapshot hanya pada node lokal; jika node terbakar, snapshot pun lesap.

B. Restore (Pemulihan) Kluster
Jika berlaku bencana:

Dari tab Snapshots tadi, pilih snapshot yang sihat.

Klik â‹® dan pilih Restore.

Anda akan diberi pilihan untuk restore hanya konfigurasi etcd, atau semua komponen Kubernetes.

Proses ini akan mengambil masa beberapa minit. Rancher akan menolak turun versi kluster ke masa snapshot tersebut diambil.

(Nota: Etcd snapshot hanya mem-backup konfigurasi kluster/YAML. Untuk mem-backup data sebenar di dalam storan aplikasi (Persistent Volume), anda disyorkan memasang tools tambahan seperti Velero atau Rancher Backup Operator).

💡 Ibrah Kehidupan: “Ikatlah untamu, kemudian bertawakallah kepada Allah.” (Hadis Riwayat Tirmidzi)
Teknologi & Infrastruktur

Pengenalan & Operasi Kubernetes (K8s) Bersama Rancher: Panduan CLI (kubectl) dan GUI untuk Pentadbir Sistem

1. Pengenalan kepada Kubernetes (K8s) & Rancher

Apabila infrastruktur aplikasi kontena (Docker Container) berkembang daripada beberapa buah kontena kepada beratus-ratus kontena di pelbagai pelayan (server), pengurusan secara manual akan menjadi rumit dan berisiko tinggi. Di sinilah hadirnya Kubernetes (K8s) sebagai sistem pengorkestrasian kontena (Container Orchestration) automatik.

Walau bagaimanapun, menguruskan Kubernetes secara mentah (bare-metal) memerlukan keluk pembelajaran yang tinggi. Rancher muncul sebagai platform pengurusan Kubernetes bertaraf perusahaan (enterprise) yang menyatukan pengurusan pelbagai kluster K8s di bawah satu antara muka visual (GUI) yang mesra pengguna, selamat, dan terpusat.

2. Perbezaan Pengurusan: CLI (kubectl) vs. GUI (Rancher)

Sebagai seorang Pentadbir Sistem (SysAdmin), penguasaan kedua-dua kaedah ini adalah wajib:

Command Line Interface (CLI - kubectl): Sesuai untuk automasi skrip, penyelesaian masalah (troubleshooting) pantas di peringkat terminal, dan pengurusan tugas berulang (CI/CD pipelines).

Graphical User Interface (GUI - Rancher Web): Sesuai untuk pemantauan visual, pengurusan hak akses pengguna (RBAC), semakan kesihatan nod (node health), dan pengerahan kluster baharu secara klik.

3. Operasi Piawai Pentadbir (Standard SysAdmin CLI - kubectl Commands)

Berikut adalah senarai arahan terminal yang paling kerap digunakan dalam operasi harian pentadbir kluster:

A. Semakan Status Infrastruktur (Nodes & Clusters)

kubectl get nodes — Melihat senarai semua server (master & worker node) dan status kesihatannya.

kubectl top nodes — Memantau penggunaan semasa CPU dan RAM bagi setiap nod server.

kubectl get namespaces — Melihat senarai ruang kerja (namespaces) yang mengasingkan projek-projek di dalam kluster.

B. Pengurusan Aplikasi & Pods

kubectl get pods -n [nama_namespace] — Melihat senarai Pod (kontena) yang sedang berjalan dalam namespace tertentu.

kubectl describe pod [nama_pod] -n [nama_namespace] — Memaparkan maklumat terperinci, konfigurasi, dan ralat (event log) jika Pod gagal dihidupkan.

kubectl logs -f [nama_pod] -n [nama_namespace] — Menelusuri log aplikasi secara langsung (real-time) untuk tujuan carian ralat (debugging).

C. Tindakan Penyelenggaraan & Kecemasan (Troubleshooting)

kubectl exec -it [nama_pod] -n [nama_namespace] -- /bin/bash — Masuk ke dalam terminal kontena untuk menyemak fail atau konfigurasi dalaman.

kubectl rollout restart deployment/[nama_deployment] -n [nama_namespace] — Memulai semula (restart) aplikasi secara zero-downtime.

kubectl delete pod [nama_pod] -n [nama_namespace] — Memadam Pod yang bermasalah (Kubernetes akan mencipta semula Pod baru secara automatik).

4. Operasi Piawai Melalui GUI (Rancher Dashboard)

Melalui antaramuka web Rancher, operasi pentadbiran menjadi jauh lebih intuitif:

Pemeriksaan Kesihatan Kluster (Cluster Monitoring): Pada menu utama Cluster Explorer, pentadbir boleh memantau graf penggunaan CPU, Memori, dan Bilangan Pod secara visual yang diintegrasikan dengan Prometheus dan Grafana.

Pengurusan Beban Kerja (Workload Deployment): Pergi ke Workloads → Deployments. Pentadbir boleh menaik taraf versi imej Docker, menambah bilangan replika (scale up/down), atau menukar parameter lingkungan (Environment Variables) hanya melalui borang menu tanpa perlu menulis fail YAML yang panjang.

Kawalan Keselamatan & Akses (RBAC & Users): Melalui menu Cluster → Members, pentadbir boleh memberi hak akses berbeza (contohnya: Cluster Owner, View-Only, atau Manage Workloads) kepada ahli pasukan pembangun perisian.

Akses Terminal Segera (Web Kubectl): Rancher menyediakan butang "Kubectl Shell" di penjuru atas kanan navigasi web, membolehkan pentadbir menjalankan arahan CLI terus dari pelayar web tanpa perlu membuat sambungan SSH ke server.

5. Amalan Terbaik Pentadbir (Best Practices)

Sentiasa Gunakan Namespace: Jangan kerahkan aplikasi produksi di dalam default namespace. Asingkan mengikut projek atau persekitaran (cth: prod-app, staging-app).

Tetapkan Resource Limits: Pastikan setiap kontena dikonfigurasi dengan had CPU/Memory Request & Limit bagi mengelakkan satu aplikasi yang rosak memonopoli seluruh RAM server.

Ujian Pemulihan (Backup & Restore): Gunakan fail sandaran kluster berkala melalui fitur Rancher ETCD Snapshot untuk memulihkan kluster sekiranya berlaku kerosakan kritikal pada sistem pelayan.

💡 Ibrah Kehidupan: Konsep Orchestration (pengorkestrasian) dalam Kubernetes mengajar kita tentang tanggungjawab kepimpinan dan kesatuan ummah. Walaupun setiap kontena mempunyai tugas kecilnya yang tersendiri, keharmonian keseluruhan sistem bergantung kepada kepimpinan yang bijak memantau, menyusun beban, dan segera memulihkan bahagian yang lemah — seumpama satu tubuh yang saling melengkapi demi keredhaan-Nya.
Teknologi & Infrastruktur

Pengenalan Lengkap kepada Docker Container: Revolusi Infrastruktur IT Moden

1. Apakah Itu Docker Container?

Dalam dunia pembangunan perisian tradisional, ralat "It works on my machine!" (Ia berfungsi di komputer saya, tapi rosak di server!) adalah masalah utama yang sering berlaku. Ia terjadi kerana perbezaan versi sistem operasi, pustaka (library), atau konfigurasi antara komputer pemaju (developer) dan pelayan (server).

Docker hadir memecahkan masalah ini melalui teknologi Containerization. Ia membolehkan aplikasi dibungkus lengkap bersama-sama semua fail sandaran, pustaka, alat sistem, dan kod pengoperasian di dalam satu "kontena" terasing dan berkapsul. Hasilnya, aplikasi tersebut dijamin berjalan dengan pantas, stabil, dan konsisten di mana-mana sahaja komputer, pelayan awam (cloud), mahupun pusat data lokal.

2. Perbezaan Docker Container vs. Virtual Machine (VM)

Ramai yang menganggap Docker sama seperti Virtual Machine (seperti VMware atau VirtualBox), tetapi strukturnya jauh berbeza:

Virtual Machine (VM): Setiap VM memerlukan Sistem Operasi Tetamu (Guest OS) sendiri yang lengkap. Ini memakan ruang cakera keras berpuluh-puluh Gigabyte, memerlukan peruntukan RAM yang tinggi, dan memakan masa beberapa minit untuk dihidupkan (booting).

Docker Container: Kontena tidak membawa Guest OS sendiri. Sebaliknya, ia berkongsi kernel Sistem Operasi pelayan utama (Host OS). Ini menjadikan saiz kontena sangat ringan (selalunya hanya beberapa Megabyte), menggunakan RAM yang minimum, dan boleh dihidupkan dalam masa kurang daripada 1 saat.

3. Komponen Utama dalam Ekosistem Docker

Untuk menguasai Docker, pentadbir sistem perlu memahami empat blok asas ini:

Docker Image: Templat siap pakai (read-only) yang mengandungi arahan untuk mencipta kontena. Ia seumpama "resipi" atau "blueprint" sebuah aplikasi.

Docker Container: Sesi hidup (runtime instance) daripada Docker Image. Ia adalah aplikasi sebenar yang sedang beroperasi dan menjalankan tugas di server.

Docker Hub / Registry: Pusat simpanan awam atau peribadi di mana pemaju boleh memuat naik dan memuat turun ribuan Docker Image siap pakai (seperti Nginx, MySQL, PHP, dan WordPress).

Dockerfile: Fail teks skrip yang mengandungi arahan langkah demi langkah untuk membina sebuah Docker Image dari sifar.

4. Kelebihan Utama Docker kepada Pentadbir Server (SysAdmin)

Kecekapan Sumber Maksimum: Server yang sama mampu menjalankan berpuluh-puluh kontena serentak berbanding hanya 2 atau 3 Virtual Machine.

Pengasingan Keselamatan (Isolation): Jika satu kontena aplikasi mengalami kerosakan atau digodam, kontena lain di dalam server yang sama tetap selamat dan tidak terjejas.

Kemudahan Pengskalaan (Scalability): Kontena boleh diperbanyakkan (scale-up) atau dikurangkan (scale-down) dalam masa beberapa saat bagi menangani lonjakan trafik pengguna.

💡 Ibrah Kehidupan: Konsep Containerization mengajarkan nilai kedisiplinan ruang, sempadan, dan pengurusan diri. Seperti sebuah kontena yang mengasingkan tugasnya supaya tidak mengganggu sistem lain, seorang Muslim perlu bijak membatasi pengaruh negatif luar daripada mencemari hati, sambil mengekalkan integriti dan kecekapan diri di mana-mana sahaja kita ditempatkan.
Teknologi

Asas Pentadbiran Docker: Operasi, Pemantauan, dan Backup & Recovery

Menguruskan sistem Docker di dalam sebuah server memerlukan ketertiban dan ilmu agar setiap kontena perkhidmatan berjalan lancar tanpa terputus. Berikut adalah panduan arahan asas yang wajib dikuasai oleh seorang pentadbir server (System Administrator):

1. Operasi Asas Pentadbir (Basic Administration)
Arahan ini digunakan untuk mengawal kitaran hayat kontena di dalam server:

Melihat Kontena yang Sedang Berjalan:

Bash
docker ps
(Gunakan docker ps -a untuk melihat semua kontena termasuk yang telah terhenti).

Menghidupkan, Menghentikan, dan Me-reboot Kontena:

Bash
docker start [nama_kontena]
docker stop [nama_kontena]
docker restart [nama_kontena]
Masuk ke Dalam Kontena (Untuk tujuan debug/troubleshoot):

Bash
docker exec -it [nama_kontena] /bin/bash
(Membolehkan pentadbir membuka terminal bash terus dari dalam kontena yang aktif).

Membersihkan Sampah Sistem (Prune):

Bash
docker system prune -a
(Menghapus image, kontena, dan cache lama yang tidak lagi digunakan bagi membebaskan ruang cakera keras).

2. Pemantauan Sistem (Monitoring & Logging)
Memantau kesihatan server adalah penting sebelum berlakunya kerosakan sistem:

Memantau Penggunaan Sumber Server secara Real-Time:

Bash
docker stats
(Bertindak seperti "Task Manager", ia memaparkan penggunaan CPU, RAM, dan I/O Rangkaian bagi setiap kontena yang aktif).

Melihat Rekod Log Kontena:

Bash
docker logs -f [nama_kontena]
(Parameter -f atau --follow membolehkan anda melihat log ralat atau aktiviti terkini secara langsung/live).

Menyemak Maklumat Terperinci (Inspect):

Bash
docker inspect [nama_kontena]
(Melihat konfigurasi terperinci seperti alamat IP dalaman, status volum, dan peletakan folder kontena).

3. Simpanan & Pemulihan (Backup & Recovery)
Kesiapsiagaan menghadapi bencana (Disaster Recovery) adalah asas keselamatan data:

Backup Data Database/Folder dalam Docker Volume (Tar Archive):

Bash
docker run --rm --volumes-from [nama_kontena] -v $(pwd):/backup ubuntu tar cvf /backup/data_backup.tar /folder_kontena
(Arahan ini menyalin fail dari dalam kontena dan menyimpannya sebagai fail .tar di server utama).

Backup Kontena kepada Image Baru (Commit & Save):

Bash
docker commit [nama_kontena] my_backup_image:v1
docker save -o backup_image_v1.tar my_backup_image:v1
(Membekukan keadaan kontena masa kini ke dalam satu fail arkib yang boleh dipindahkan ke server lain).

Pemulihan (Recovery / Restore Volume):

Bash
docker run --rm --volumes-from [nama_kontena_baru] -v $(pwd):/backup ubuntu bash -c "cd /folder_kontena && tar xvf /backup/data_backup.tar --strip 1"
(Membuka semula fail arkib backup ke dalam kontena baru jika kontena lama rosak atau dipindahkan).

💡 Ibrah Kehidupan: 💡 Ibrah Kehidupan: Seorang Muslim yang cakna perlu sentiasa memantau (monitoring) amalan dan kesihatan hatinya, bersedia membersihkan (prune) sifat-sifat mazmumah, serta sentiasa mempunyai persediaan akhirat (backup & recovery) sebelum tiba saat yang tidak dijangka.