Docker Desktop‘a gelen en büyük yeniliklerden birisi de tek node’dan oluşan bir Kubernetes cluster ile gelmesi. Böylece kendi ortamınızda test etmek istediğimiz Kubernetes işlemlerini ek bir kuruluma gerek kalmadan yapabiliyoruz. Varsayılan olarak kapalı geldiği için bu özelliği aktifleştirmek için Docker Desktop Settings ekranında en altta yer alan Kubernetes sekmesindeki (Resim-1) “Enable Kubernetes”i seçmek yeterli. Ek olarak docker stack komutları için Kubernetes’i varsayılan orchestrator olarak ayarlayabilir ve çalışan Kubernetes container’larının görünüp görünmemesini ayarlayabilirsiniz. Apply & Restart butonuna bastıktan sonra Kubernetes cluster çalışmaya başlayacak.
NOT: Eğer Kubernetes ile ilgili fazla bilgim yok diyorsanız devam etmeden önce Onur Yüksektepeli‘nin Kubernetes Nedir? makalesini okumanızı tavsiye ediyorum. Örnekte kullandığım Docker Desktop versiyonu 18.104.22.168 (42716).
Resim-1
Bu işlemi yaptıktan sonra ek olarak hangi container imajlarını kullandığını görmek için docker images komutunu çalıştırabilirsiniz (Resim-2).
Resim-2
Kubernetes çalışmaya başladığına göre artık kubectl komutunu kullanmaya da başlayabiliriz; kubectl get all komutu ile sistemdeki büyün kaynakları listeleyerek başlıyorum (Resim-3). Henüz bir deployment yapmadığımız için sadece Kubernetes servisi görünüyor.
Resim-3
Örnek olarak nginx container imajı kullanarak bir pod deploy etmek istiyorum. Bunun için Visual Studio Code kullanacağım. Resim-4‘te de göreceğiniz gibi Kubernetes eklentisini kuruyorum. Bu eklenti ile YAML eklentisi de kuruluyor.
Resim-4
Eklenti kurulumu sonrasında ise yeni bir dosya açıyorum, sağ altta tipini YAML olarak seçiyorum ve pod yazdığımda bana Kubernetes Pod seçeneğini çıkartıyor (Resim-5).
Resim-5
Tab’a bastığımda ise pod deployment yapmak için gerekli YAML dosyasını tamamlıyor (Resim-6). Burada sadece pod deploy edeceğimiz için service, deployment ve replicaset gibi diğer bileşenler olmayacak.
Resim-6
YAML üzerinde image seçeneğini nginx:latest ve containerPort seçeneğini de 80 olarak değiştirip nginx-pod.yml olarak dosyayı kaydediyorum (Resim-7).
Resim-7
Dosyayı kaydettiğim klasöre PowerShell üzerinden gelerek kubectl create -f .\nginx-pod.yml komutunu çalıştırıyorum (Resim-8). Sonrasında yine kubectl get all komutu ile kaynakları listelediğimde myapp isimli pod’un çalıştığını görebiliyorum. Pod çalışıyor ancak container’da yer alan uygulamanın (nginx) tam olarak çalıştığından emin olmak için ise tarayıcıdan localhost (80) denerseniz sayfa görüntülenemiyor mesajı alacaksınız. Bunun nedeni henüz port-forward yapmamış olmamız. Docker’da kullandığımız port mapping’e benzer şekilde kubectl port-forward pod/myapp 8080:80 komutu ile pod’un 80 portunu 8080 portuna forward ediyorum.
Resim-8
Tarayıcı üzerinden localhost:8080 yazdığımızda ise Kubernetes üzerinde çalışan nginx’e ulaşabiliyorum (Resim-9).
Resim-9
Bu konuyla ilgili sorularınızı http://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.
Referanslar