Minikube Nedir? Nasıl Kurulur? Nasıl Kullanılır?
Bu makalede dünyada en popüler en çok kullanılan orchestration olarak bilinen kubernetes’i local ortamda nasıl çalıştıracağımı anlatacağım.
Minikube , Kubernetes üzerinde testlerimizi ve geliştirmelerimizi yapmak için local bilgisayarımızda kullandığımız mini kubernetes kümesidir. Minikube Windows, MacOS ve Linux işletim sistemlerinde çalışabilir.
Temel Olarak Minikube mimarisi ;
Minikube mimarisine baktığımızda Master ,Node ve Docker dan oluşmaktadır. Docker yerine rkt da kullanılabilir. Node sayımızı istediğimiz sayıda arttırabiliriz. Master için minikube’de bu durum geçerli değildir.
Minikube Sistem Gereksinimleri;
- Windows , MacOS veya Linux işletim sistemi.
- Default 2 Core CPU , 2 GB RAM , 20 GB Disk (Ölçeklendirme yapılabilir.)
- VirtualBox
- Bilgisayarınızın sanallaştırma etkin olması gerekir.
Windows Minikube Kurulumu
VirtualBox kurulumu yaparak başlayabiliriz.
https://download.virtualbox.org/virtualbox/6.0.14/VirtualBox-6.0.14-133895-Win.exe
Minikube kurulunu için minikube-installer.exe indirmemiz gerekiyor.
https://github.com/kubernetes/minikube/releases/latest/download/minikube-installer.exe
Ayrıca minikubenin yanında kubectl kurulması gerekmektedir. kubectl minikube cluster’ı yönetmek için gerekli komuttur.
https://storage.googleapis.com/kubernetes-release/release/v1.16.0/bin/windows/amd64/kubectl.exe
kubectl.exe’sini C:\Windows\System32 klasörüne attıktan sonra Windows PowerShell üzerinde kubectl — help yazdığınızda çıktı alacaksınız.
Windows PowerShell üzerinde minikube start diyerek cluster’ı oluşturuyoruz.
PS C:\WINDOWS\system32> minikube start
* minikube v1.2.0 on windows (amd64)
* Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) …
* Configuring environment for Kubernetes v1.15.0 on Docker 18.09.6
* Pulling images …
* Launching Kubernetes …
* Verifying: apiserver proxy etcd scheduler controller dns
* Done! kubectl is now configured to use "minikube"
NOT: VirtualBox/Hyper-V conflict: WHvSetupPartition failed — VERR_NEM_VM_CREATE_FAILED Böyle bir hata ile karşılaştıysanız aşağıdaki adımları uygulayın.
https://github.com/kubernetes/minikube/issues/4587
RUN > CMD > bcdedit /set hypervisorlaunchtype off
Komutu girdikten sonra bilgisayarınızı yeniden başlatın. Bilgisayarınız açıldığında minikube’yi kullanabilirsiniz.
Minikube çalıştığında Virtualbox’ta sanal makinenin oluştuğunu göreceksiniz.
Minikube Kullanımı
Minikube cluster’ı oluştuktan sonra kubectl komutu ile cluster’ı yönetebiliriz . Cluster’ın hazır olduğunu aşağıdaki komutlardan görebiliriz.
Arayüzü aktif ederek yönetim kolaylığı ve cluster’ın sağlını burdan kontrol edebiliriz.
PS C:\WINDOWS\system32> minikube dashboard
* Verifying dashboard health …
* Launching proxy …
* Verifying proxy health …
* Opening http://127.0.0.1:56519/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser…
Minikube Örnek
Gelin Minikube üzerinde bir örnek yapalım. Hello world yazmadan olmaz :)
$ kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-nodedeployment.apps/hello-node created
Yukarıda hello-node adında bir deployment başlattık . Kısa bir süre sonra ;
$ kubectl get deploymentsNAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 78s
Deployment hazır duruma geldi . Sırada bu deployment’ın 8080 portunu expose yapmamız gerekiyor.
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080service/hello-node exposed
Oluşturduğumuz service de expose portunu görebilmemiz için ;
$ kubectl get servicesNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.110.24.150 <pending> 8080:31391/TCP 16m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 64m
VirtualBox üzerinde çalışan sanal makinemizin ipsini öğrendikten sonra 31391 portuna giderek Hello World çıktısını görebiliriz.
Yada daha kolay bir şekilde minikube service hello-node yazarak direk bizi çıktıya yönlendirir.
Hello World çıktısını yukarda görmekteyiz.
Minikube Eklentileri
Minikube eklentiler ile daha kullanışlı hale getirebilir , yönetimi daha kolaylaştırabiliriz.
Eklentileri listeleyecek olursak ;
PS C:\WINDOWS\system32> minikube addons list
- addon-manager: enabled
- dashboard: enabled
- default-storageclass: enabled
- efk: disabled
- freshpod: disabled
- gvisor: disabled
- heapster: enabled
- ingress: disabled
- logviewer: disabled
- metrics-server: disabled
- nvidia-driver-installer: disabled
- nvidia-gpu-device-plugin: disabled
- registry: disabled
- registry-creds: disabled
- storage-provisioner: enabled
- storage-provisioner-gluster: disabled
Örnek olarak monitoring özelliğini aktif edelim. Heapster eklentisini bunun için kullanabiliriz.
PS C:\WINDOWS\system32> minikube addons enable heapster
* heapster was successfully enabled
Kurulum bittikten sonra buna benzer bir çıktı görmeliyiz;
PS C:\WINDOWS\system32> kubectl get pod,svc -n kube-system
NAME READY STATUS RESTARTS AGE
pod/coredns-5c98db65d4-jjz8s 1/1 Running 0 84m
pod/coredns-5c98db65d4-txdpc 1/1 Running 0 84m
pod/etcd-minikube 1/1 Running 0 83m
pod/heapster-b6n49 1/1 Running 0 6m51s
pod/influxdb-grafana-sq7nb 2/2 Running 0 6m51s
pod/kube-addon-manager-minikube 1/1 Running 0 83m
pod/kube-apiserver-minikube 1/1 Running 0 83m
pod/kube-controller-manager-minikube 1/1 Running 0 83m
pod/kube-proxy-cvcdj 1/1 Running 0 84m
pod/kube-scheduler-minikube 1/1 Running 0 83m
pod/kubernetes-dashboard-7b8ddcb5d6-m4bzh 1/1 Running 0 84m
pod/storage-provisioner 1/1 Running 0 84mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/heapster ClusterIP 10.107.253.82 <none> 80/TCP 6m51s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 84m
service/kubernetes-dashboard ClusterIP 10.98.250.215 <none> 80/TCP 84m
service/monitoring-grafana NodePort 10.99.41.217 <none> 80:30002/TCP 6m51s
service/monitoring-influxdb ClusterIP 10.105.210.239 <none> 8083/TCP,8086/TCP 6m50s
Yukarıda monitoring yapacağımız Grafana expose portunun 30002 olduğunu görüyoruz.
Bağlantıya gidersek;
Yukarıda görüldüğü gibi minikube cluster’daki Node ,Pod monitoring yapabiliyoruz. CPU, RAM gibi kaynak tüketimlerini buradan kontrol edebiliriz.
Diğer bir eklentiye gelirsek metrics-server bu eklenti ile CLI ve Kubernetes Dashboard ile Pod ve Node Kaynak tüketimlerini görebiliriz.
PS C:\WINDOWS\system32> minikube addons enable metrics-server
* metrics-server was successfully enabled
Kurulum bittikten sonra böyle bir çıktı görmemiz lazım ;
PS C:\WINDOWS\system32> kubectl get deploy -n kube-system metrics-server
NAME READY UP-TO-DATE AVAILABLE AGE
metrics-server 1/1 1 1 3m14s
Daha sonra cluster’daki bütün podların CPU ve RAM kaynak tüketimleri için;
PS C:\WINDOWS\system32> kubectl top pod --all-namespaces
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default hello-node-55b49fb9f8-fzb5q 0m 10Mi
kube-system coredns-5c98db65d4-jjz8s 4m 11Mi
kube-system coredns-5c98db65d4-txdpc 4m 13Mi
kube-system etcd-minikube 29m 43Mi
kube-system heapster-b6n49 0m 16Mi
kube-system influxdb-grafana-sq7nb 1m 37Mi
kube-system kube-addon-manager-minikube 8m 5Mi
kube-system kube-apiserver-minikube 47m 254Mi
kube-system kube-controller-manager-minikube 20m 35Mi
kube-system kube-proxy-cvcdj 2m 9Mi
kube-system kube-scheduler-minikube 2m 10Mi
kube-system kubernetes-dashboard-7b8ddcb5m 0m 14Mi
kube-system metrics-server-84bb785897-nt4xs 0m 8Mi
kube-system storage-provisioner 0m 27Mi
Dashboard üzerinde metric değerleri yine görüyor olacağız.
Evet bu yazıda en detaylı basit bir şekilde minikube kurulumu ve kullanımını anlatmaya çalıştım umarım anlaşılmış ve yardımcı olmuştur. Diğer yazılarda görüşmek üzere.