K3d – Solusi Platform Kubernetes lokal

Berbagai artikel yang menggunakan platform Kubernetes di blog ini menggunakan aplikasi k3d yang diinstalasi di laptop. Ada berbagai layanan Kubernete AWS, Google Cloud atau Azure dari Microsoft. Pelayanan Kubernetes dari berbagai provider yang disebutkan di atas merupakan pelayanan berbayar yang cukup mahal. Dengan menggunakan k3d, platform Kubernetes yang digunakan dapat dikontrol secara mudah.

Untuk menjelaskan apa itu k3d, ada baiknya untuk mengetahui aplikasi Open Source yang disebut k3s. K3s ini adalah sebuah distribusi Kubernetes minimalis dan paket k3d adalah wrapper dari k3s yang disebutkan di atas. Konsep wrapper (atau dalam bahasa Indonesianya pembungkus ) merupakan satu aplikasi yang membungkus aplikasi lain, di sini aplikasi k3d menjadi bungkus dari aplikasi k3s. Dengan cara ini kita menggunakan perintah-perintah k3d untuk membangun kluster kubernetes yang dibangun oleh aplikasi k3s.

Keuntungan penggunaan k3d:

  • Penggunaan environment (server) lokal untuk berbagai development yang dilakukan.
  • Pipeline CI/CD bisa digunakan dalam pengembagan aplikasi di platform k3d
  • Sarana mudah untuk belalar platform kubernetes.

Installasi dan Dependesi

K3d membutuhkan instalasi Docker Desktop yang beroperasi di tempot yang sama di tempot k3d diinstallasi, hal ini berarti Docker Desktop dan k3s diinstalasi di server MacOS. 

Halaman ini memberikan instruksi bagaimana installasi Docker Desktop dilakukan.

Cara yang paling mudah untuk menginstalasi k3s adalah menggunakan Homebrew, seperti diperlihatkan di bawah ini.

 ~ % install k3d

Setelah perintah di atas dilakukan, untuk melihat apakah instalasi ini berhasil lakukan perintah k3d dengan argumen –help seperti yang diperlihatkan di bawah ini beserta hasil dari perintah itu.

~ % k3d version
k3d version v5.7.3
k3s version v1.30.3-k3s1 (default)

Hasil dari perintah k3d version ini memperlihatkan bahwa wrapper k3d siap untuk digunakan sebagai sebuah alat (tool) platform kubernetes. Langkah berikut yang perlu dilakuan adalah men-deploy sebuah kluster kubernetes. 

Pembuatan Kluster Kubernetes

Untuk mendapatkan berbagai informasi yang diperlukan, perintah berikut dapat dilakukan:

~ % k3d --help
https://k3d.io/
k3d is a wrapper CLI that helps you to easily create k3s clusters inside docker.
Nodes of a k3d cluster are docker containers running a k3s image.
All Nodes of a k3d cluster are part of the same docker network.

Usage:
  k3d [flags]
  k3d [command]

Available Commands:
  cluster      Manage cluster(s)
  completion   Generate completion scripts for [bash, zsh, fish, powershell | psh]
  config       Work with config file(s)
  help         Help about any command
  image        Handle container images.
  kubeconfig   Manage kubeconfig(s)
  node         Manage node(s)
  registry     Manage registry/registries
  version      Show k3d and default k3s version

Flags:
  -h, --help         help for k3d
      --timestamps   Enable Log timestamps
      --trace        Enable super verbose output (trace logging)
      --verbose      Enable verbose output (debug logging)
      --version      Show k3d and default k3s version

Use "k3d [command] --help" for more information about a command

argumen –help ini bisa dilakun setelah perintah k3d <perintah> –help sebagai contoh di bawah ini:

 ~ % k3d cluster --help
Manage cluster(s)

Usage:
  k3d cluster [flags]
  k3d cluster [command]

Available Commands:
  create      Create a new cluster
  delete      Delete cluster(s).
  edit        [EXPERIMENTAL] Edit cluster(s).
  list        List cluster(s)
  start       Start existing k3d cluster(s)
  stop        Stop existing k3d cluster(s)

Flags:
  -h, --help   help for cluster

Global Flags:
      --timestamps   Enable Log timestamps
      --trace        Enable super verbose output (trace logging)
      --verbose      Enable verbose output (debug logging)

Use "k3d cluster [command] --help" for more information about a command.
mac@MBPsomtllhorMac ~ % 

Dengan informasi di atas ini, sebuah platform kubernetes dapat diinstalasi dengan perintah di bawah ini.

 ~ % k3d cluster create blogkluster
INFO[0000] Prep: Network                                
INFO[0000] Created network 'k3d-blogkluster'            
INFO[0000] Created image volume k3d-blogkluster-images  
INFO[0000] Starting new tools node...                   
INFO[0000] Starting node 'k3d-blogkluster-tools'        
INFO[0001] Creating node 'k3d-blogkluster-server-0'     
INFO[0001] Creating LoadBalancer 'k3d-blogkluster-serverlb' 
INFO[0001] Using the k3d-tools node to gather environment information 
INFO[0001] Starting new tools node...                   
INFO[0001] Starting node 'k3d-blogkluster-tools'        
INFO[0002] Starting cluster 'blogkluster'               
INFO[0002] Starting servers...                          
INFO[0002] Starting node 'k3d-blogkluster-server-0'     
INFO[0007] All agents already running.                  
INFO[0007] Starting helpers...                          
INFO[0007] Starting node 'k3d-blogkluster-serverlb'     
INFO[0013] Injecting records for hostAliases (incl. host.k3d.internal) and for 3 network members into CoreDNS configmap... 
INFO[0015] Cluster 'blogkluster' created successfully!  
INFO[0015] You can now use it like this:                
kubectl cluster-info
 ~ % 

setelah kluster kubernetes terbentuk, maka dapat dilakukan perintah di bawah ini, untuk melihat node2 dan pods yang ada di kluster yang baru saja dideploy. Untuk keterangan lebih lanjut mengenai kubectl, silakan membaca artikel tentang kubectl.

 ~ % kubectl get node
NAME                       STATUS   ROLES                  AGE     VERSION
k3d-blogkluster-server-0   Ready    control-plane,master   2m31s   v1.30.3+k3s1

Perintah di atas memperlihatkan bahwa master dan control-plane di platform kubernetes ini berada di mesin yang sama: k3d-blogkluster-server-0

dan untuk melihat pods yang berada di kluster kubernetes ini, perintah berikut bisa diakukan:

~ % kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
kube-system   coredns-576bfc4dc7-4rxk9                  1/1     Running     0          4m48s
kube-system   helm-install-traefik-2bzr7                0/1     Completed   1          4m48s
kube-system   helm-install-traefik-crd-dsgbh            0/1     Completed   0          4m48s
kube-system   local-path-provisioner-6795b5f9d8-s4pwl   1/1     Running     0          4m48s
kube-system   metrics-server-557ff575fb-v57rb           1/1     Running     0          4m48s
kube-system   svclb-traefik-f233b72c-g2xpx              2/2     Running     0          4m35s
kube-system   traefik-5fb479b77-5jjzl                   1/1     Running     0          4m35s
mac@MBPsomtllhorMac ~ % 

Hasil perintah di atas memperlihatkan ada 6 pod yang running dan 2 pods dengan status completed. Status completed memperlihatkan bahwa pods terse but dijalankan untuk mengeksekusi 1 perintah yang telah berhasil dilakukan (completed)

Related Posts

Verified by MonsterInsights