Bugün sizlere Kubernetes’in ne olduğunu, kullanım alanlarını, işleyişini, teknolojilerini ve çalışma prensibini detaylı bir şekilde anlatacağız.
- İlk olarak Kubernetes nedir, onu öğrenelim.
Kubernetes, konteynerleştirilen uygulamaların çeşitli yönetimini otomatikleştiren açık kaynaklı bir platformdur. Google tarafından geliştirilen Kubernetes, tam olarak 10 yıl önce 2014’te açık kaynaklı bir şekilde piyasaya sürüldü. Bu sistem, mikro hizmet sağlayan mimarilerin dağıtık sistemlerinin yönetimi için fazlasıyla ideal bir biçimdir. Ve uygulamaların taşınabilir, dayanıklı ve ölçeklenebilir olmasında büyük rol oynar.
- Kubernetes’in kullanım alanları
Uygulamaları konteyner halinde yönetmek, ölçeklendirmek birden fazla yere yaymak ve sürdürebilmek için kullanılır. Yukarıda da bahsettiğimiz gibi mikro hizmet mimarisi kullanan karmaşık ve büyük uygulamalarda entegrasyon ve dağıtım (CI/CD) süreçlerinde kullanılır. Ve sistem, farklı farklı bulut ortamlarında (örneğin AWS, Google Cloud, Azure ve Huawei Cloud) veya firma içi veri merkezlerinde çalışabilir. İş süreci içerisinde hibrit bulut çözümlerle ideal bir platformdur.
- İşleyiş mantığı
Konteynerlar, tıpkı bir topluluk gibi gruplar halinde yönetilebilir. Ve gruplara “pod” adı verilir. Ve her pod, bir veya birden fazla konteyner içerebilir. (Biraz daha teknik konulara gireceğiz) Kubernetes’in temel işleyiş bileşenlerinden birisi olan “Kubelet”, node’lar üzerinde çalışır. Pod’ları yönetir. “Kubernetes API Server” bütün bileşenlerin iletişim halinde olduğu merkez birimdir. “Etcd” ise, durum bilgisini saklayan dağıtık bir veri deposudur. “Scheduler” ekibe yeni katılan pod’ların hangi node üzerinde çalışacağını seçer. “Controller Manager” konteyner kümesini istenilen duruma getirebilmek için çeşitli kontrol döngülerini çalıştırmakla yükümlüdür.
- Kubernetes teknolojileri
Sistem, tıpkı Docker gibi konteyner motorları ile entegre bir şekilde çalışmaktadır. “Helm”, Kubernetes üzerinde uygulamaların paketlerini yönetmek için kullanılır. (Kısaca paket yöneticisi.) “Kubectl” en içli dışlı olacağınız kod satırıdır. Çünkü, kümelerin üzerinde komut çalıştırmak için kullanılır. “Ingress Controller” ve “Load Balancer” ise uygulamaların trafiğini yönetir. “Prometheus ve “Grafana” gibi araçlar, kümelerin performansını ve sağlığını izler.
- Kubernetes’in çalışma prensibi
Durumsuz uygulamalardan tutun, durumsal veri tabanlarına kadar geniş bir alanda kullanılan uygulama türlerini destekler. Her bir küme, node’lardan oluşur. (Bir dize) Ve her bir node konteynerların çalışma ortamıdır. Kubernetes, node’lar üzerinde uygulama konteynerlerini otomatik bir şekilde dağıtır. Ölçeklendirebilir hatta gerekirse yeniden başlatabilir. Bu yeniden başlatma süreci, yukarıda da bahsettiğimiz gibi “Controller” ve Scheduler” adında olan iki bileşen tarafından yönetilir. Ekstra olarak Kubernetes, ağ politikalarıyla pod’lar arasındaki trafiği yönetebilir. “Service” ile dış dünyadan erişim sağlayabilir. Tekrardan belirtelim, otomatik iyileştirme mekanizmaları kullanan sistem, başarısız olan konteynerleri yeniden başlatabilir. Bu işlem sayesinde node’lar arasındaki yükü dengeler.
Bilmeyenler için: AKS (Azure Kubernetes Service) Erişim ve Yönetimi
Başlarken not: Kurulum işlemlerinde Windows 11 işletim sistemi kullandım. Ancak, referans olarak paylaştığım indirme bağlantılarında farklı işletim sistemleri için seçenekler yer alıyor. Komut satırı örnekleri tüm işletim sistemlerinde geçerli olacaktır.
kubectl Kurulumu
Yazımızın giriş bölümünde bahsettiğim, Kubernetes API istemcisi kubectl tüm yönetim işlemlerinde bize yardımcı olacak. İndirme bağlantısında, MacOS, Linux ve Windows için bağlantılarını bulabilirsiniz.
Install Tools: https://kubernetes.io/docs/tasks/tools/
Windows kubectl 1.22 versiyonu için bulunduğum dizinde curl yardımı ile kurulumu aşağıdaki gibi tamamlıyorum.
curl -LO “https://dl.k8s.io/release/v1.22.0/bin/windows/amd64/kubectl.exe
Azure CLI Kurulumu
Azure Command Line, Azure servislerini yönetebilmek için kullandığımız komut satırı aracıdır. Bu aracı, Azure Portal’a bağlanarak Kubernetes config bilgilerini almak için kullanacağız. Böylece, bir önce ki adımda kurduğumuz kubectl konfigürasyonuna erişebiliyor olacağız. Alternatif işletim sistemleri için bağlantıya aşağıdan ulaşabilirsiniz. Ben bu yazı özelinde Windows seçimi ile devam edeceğim.
Link: Install Azure CLI
AKS Bağlantı
Tüm kurulumları tamamladık ve artık ortamımız hazır. Artık komutlarımıza geçebiliriz.
İlk olarak,
az login
Komutu ile Azure Portal bilgilerimizi girerek, login oluyoruz. Login işlemi başarılıysa,
az aks get-credentials –resource-group=msbil –name=msbil-cluster
Komutu ile cluster bilgilerimizi config dosyamıza ekliyoruz. Eğer işlemlerimiz doğru ise, aşağıdaki gibi bir çıktı almanız gerekiyor.
Merged “msbil-cluster” as current context in C:\Users\MSBAYIR\.kube\config
Artık, kubectl ile yönetmeye hazırız. Test için cluster içerisinde bir namespace oluşturuyorum.
kubectl create namespace test
Daha önce oluşturduğumuz bir kaynak olmadığı için şu anda görüntüleyemeyeceğiz. kubectl ile İleri Seviye Cluster Yönetimi konusunu serimizin devamında paylaşacağız. Bağlantı konusunda problem yaşarsanız bize Yorum ya da Soru Cevap bölümünden yazabilirsiniz.