Uygulama dağıtım süreçleri son yıllarda önemli ölçüde değişti ve uygulama konteynerleştirme uygulaması yaygınlaştı. Bu, uygulamalar ve bağımlılıkları için neredeyse her çalışma zamanı ortamında dağıtılabilen ve yürütülebilen izole konteynerlere paketleme yöntemidir. Popüler bir konteyner düzenleme platformu olan Kubernetes, konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için araçlar sağlayarak bu işlemler için gereken karmaşıklığı ve çabayı azaltır.
K8S. Basit anlamda nedir
Kubernetes (k8s), Google ekibi tarafından geliştirilen konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için açık, genişletilebilir bir platformdur. Dağıtılmış ortamlardaki uygulamalarla kapsayıcıları verimli bir şekilde yönetmek için bir dizi özellik ve araç sağlar.
K8'in temel avantajları:
- Otomatik konteyner dağıtımı ve yönetimi, geliştiricilerin bir konteyner kümesini verimli bir şekilde yönetmesine olanak tanır. Kapsayıcıların başlatılması, kapatılması ve izlenmesinin yanı sıra küme düğümleri arasında yük yönetimi ve yük dengeleme için araçlar sağlar;
- Uygulamalar yatay ve dikey olarak ölçeklenebilir. Yük değişikliklerine otomatik olarak yanıt verir ve optimum performans ve kullanılabilirlik sağlamak için kapsayıcı örneklerinin sayısını artırabilir veya azaltabilir;
- Yerleşik kendi kendini iyileştirme özelliği, arızalı konteynerleri veya düğümleri otomatik olarak tespit edip onararak uygulamanın kesintisiz çalışmasını sağlar;
- Geliştiricilerin sistemin istenen bir durumunu tanımladığı ve Kubernetes'in sistemi bu duruma bağımsız olarak hizaladığı bildirimsel bir model kullanmak. Bu, uygulamaları dağıtma ve yönetme sürecini basitleştirerek ortamda tutarlılık ve öngörülebilirlik sağlar;
- Farklı ortamlar için destek. Kubernetes, konteynerlerin bulut sağlayıcıları (örneğin AWS, Google Cloud, Microsoft Azure) ve kendi şirket içi sunucuları dahil olmak üzere farklı platformlarda konuşlandırılmasına olanak tanır. Bu, altyapı seçiminde esneklik ve çok yönlülük sağlar.
K8S tarihçesi
Kubernetes'in tarihi, Google'ın ölçeklenebilir uygulamaları şirket içinde yönetmek için bir sistem geliştirme projesiyle başladı. Google, 2003 yılında şirket genelinde dağıtılmış uygulamalarını ve kaynaklarını yönetmek için Borg adlı bir sistem kullanmaya başladı. Borg otomatik dağıtım, ölçeklendirme, izleme ve kaynak yönetimi sağlıyordu.
2014 yılında Google mühendisleri, Borg'un deneyim ve ilkelerine dayanan bir konteyner yönetim sisteminin açık ve erişilebilir bir versiyonunu oluşturmaya karar verdiler. Kubernetes adında bir proje geliştirmeye başladılar. Google, konteynerizasyon ve uygulama düzenlemenin modern uygulamalar geliştirmenin ve yönetmenin önemli parçaları olduğuna inanıyordu ve bilgilerini ve araçlarını daha geniş geliştirici topluluğuyla paylaşmaya karar verdi.
Google, Kubernetes'in ilk halka açık sürümünü Haziran 2014'te duyurdu. Platform açık kaynak olarak yayınlandı ve bulut teknolojilerinin ve projelerinin geliştirilmesini destekleyen bir kuruluş olan Cloud Native Computing Foundation'a (CNCF) devredildi. Yayınlanmasından bu yana Kubernetes yaygın bir destek aldı ve geliştirici topluluğundan ve sektörden büyük ilgi gördü. Konteynerli uygulamaları yönetmek için fiili standart haline geldi. Ve şimdi CNCF'de en aktif olarak gelişen projelerden biri.
Kubernetes günümüzde gelişmeye devam ediyor. Uygulamalarını farklı altyapılarda yönetmek için onu kullanan şirket ve kuruluşların sayısı her geçen gün artıyor. Kubernetes, Serverspace gibi bulut sağlayıcıları ve şirket içi ortamlar da dahil olmak üzere çeşitli platformlarda uygulamaları dağıtmak, ölçeklendirmek ve yönetmek için güçlü araçlar sağlar.
k8s son yıllarda önemli değişiklikler ve gelişmeler geçirdi ve artık modern Devops ve bulut uygulama geliştirmenin ayrılmaz bir parçası. Yeni özellikler ve iyileştirmeler içeren çok sayıda yeni sürüm çıktı. Dünyanın dört bir yanındaki şirketler ve kuruluşlar, konteyner uygulamalarını yönetmek için Kubernetes'i aktif olarak kullanıyor. Platformun etrafındaki ekosistem sürekli büyüyor.
Kubernetes mimarisi
1. Ana Düğüm veya Kontrol Düzlemi Düğümü. Bir k8s kümesini yönetmek ve idare etmek için önemli görevlerin çoğu burada gerçekleştirilir. Dört ana bileşenden oluşur:
- API Sunucusu, Kubernetes API ile iletişim kurmak için bir arayüz sağlar;
- Denetleyiciler, Dağıtım Denetleyicisi, Çoğaltma Denetleyicisi ve diğerleri dahil olmak üzere küme yönetimi ve izleme sağlar;
- Zamanlayıcı, kaynak gereksinimlerine ve dağıtım ilkelerine dayalı olarak podları çalışma düğümlerine zamanlamaktan ve dağıtmaktan sorumludur;
- etcd, küme yapılandırmasını ve durumunu depolamak için kullanılan dağıtılmış bir anahtar-değer deposudur.
2. Düğümler, konteynerlerin üzerinde çalıştığı ve işletildiği fiziksel veya sanal makineleri ifade etmek için kullanılır. Her düğüm bir Kubernetes kümesindeki bir İşçi Düğümünü temsil eder. Düğüm, konteynerler için yürütme ortamıdır ve konteynerlerdeki uygulamaları yürütmek için kaynaklar ve olanaklar sağlar. Düğüm, bu düğümdeki kapsayıcıların ve podların yaşam döngüsünü yöneten Kubelet adlı bir Kubernetes aracısı çalıştırır.
Her düğümün kendi bilgi işlem kaynakları (CPU, bellek, depolama) ve ağ arayüzleri vardır. Düğümler, küme durumu hakkında bilgi alışverişinde bulunmak ve konteynerleri yerleştirmek ve yönetmek için komutlar almak üzere ağ üzerinden Ana Düğümlere bağlanır.
- Kubelet, her bir işçi düğümüne yüklenen ve bu düğümde bulunan podlardaki kapsayıcıları yöneten ve kontrol eden bir aracıdır;
- Kube-proxy, proxy ve yük dengeleme dahil olmak üzere podlar için ağ bağlantısı sağlar;
- Konteyner Çalışma Zamanı, konteynerlerin çalıştırılması ve yönetilmesinden sorumludur, örneğin Docker, Containerd, CRI-O.
3. Podlar, bir veya daha fazla konteyneri bir araya getiren ve onlara izole bir çalışma zamanı ortamı sağlayan temel ve minimal bir dağıtılabilir birimdir. Podlar, Kubernetes'te konteynerleri barındırmak ve yönetmek için temel yapı taşıdır.
4. Hizmetler: Bir grup pod'a kalıcı bir erişim noktası ve bunlar arasında yük dengeleme sağlayan bir soyutlama.
5. İsteğe bağlı bileşenler:
- Çoğaltma Denetleyicisi, uygulama esnekliğini ve ölçeklenebilirliğini geliştirmek için birden fazla pod örneğinin çalıştırılmasını ve yönetilmesini sağlar;
- Kalıcı Birimler, uygulamaların podları yeniden başlatırken veya taşırken bile verileri kalıcı depolamada tutmasına olanak tanır;
- Yapılandırmalar ve gizli diziler, yapılandırma verilerini depolamak için ConfigMaps'i ve parolalar veya erişim anahtarları gibi hassas bilgileri güvenli bir şekilde depolamak için Gizli Diziler'i içerir;
- Giriş Denetleyicisi, kümeye gelen ağ trafiğinin yönetimini sağlayarak hizmetler için yönlendirme ve yük dengeleme yapılandırmasına olanak tanır;
- Ad alanları, kümedeki kaynakların mantıksal bölümlendirilmesi ve yalıtımı için kullanılır ve uygulamalar ve kullanıcılar için sanal grupların oluşturulmasına olanak tanır;
- Kubernetes, küme ve uygulama sağlığının gözlemlenebilirliğini ve analizini sağlamak için Prometheus, Grafana, ELK Stack ve diğerleri gibi çeşitli izleme ve günlük sistemleriyle entegre olur.
Kubernetes görevleri
Konteyner yönetim sistemi, konteyner yönetimiyle ilgili bir dizi önemli görevi yerine getirir:
- Konteyner dağıtımı ve durum yönetimi. Kubernetes konteynerleri başlatma, kapatma ve yeniden başlatma olanağı sağlar. Bu, gerekli uygulamaların çalışmasını ve güncel tutulmasını sağlar;
- Uygulamaları ölçeklendirme. Kubernetes, çok sayıda ana bilgisayarda aynı anda birden fazla kapsayıcı çalıştırarak uygulamaların ölçeklendirilmesine olanak tanır. Bu, kaynakların daha verimli kullanılmasını sağlar ve sistem esnekliğini artırır;
- Yük dengeleme. Kubernetes yükü konteynerler arasında otomatik olarak dengeler, eşit olarak dağıtır ve optimum sistem performansı sağlar. Kubernetes API'sini kullanarak, Kubernetes konteynerleri mantıksal olarak gruplandırır, havuzlarını ve yerleşimlerini tanımlar, bu da kaynakların verimli kullanılmasını sağlar.
Kubernetes kurulum süreci
Kubernetes hizmetini Serverspace kontrol panelinde sürümü, küme konumunu seçerek ve CPU, RAM ve düğüm sayısını yapılandırarak sipariş edebilirsiniz. Panelde Dashboard'u da bağlayabilirsiniz. Ama çalışmaya nasıl başlanır?
Kontrol panelimiz aracılığıyla kümeler oluşturabilir ve silebilir, yapılandırmalarını değiştirebilir ve düğüm ekleyip kaldırabilirsiniz. Diğer görevler için, kümelerle çalışmak üzere özel olarak tasarlanmış komut satırı araçlarına ihtiyacınız olacaktır.
kubectl bir Kubernetes komut yardımcı programıdır. Bununla Kubernetes kümelerinizle etkileşim kurmak için çeşitli komutlar çalıştırabilirsiniz. Kubectl, uygulamaları dağıtma, küme kaynaklarını izleme ve yönetme ve günlükleri görüntüleme olanağı sağlar. Kubectl özelliklerinin tam listesi için Kubernetes web sitesinde bulunan resmi belgelere bakın.
Şimdi Ubuntu üzerinde yardımcı program kurulumuna bakalım. Öncelikle aşağıdaki komutu kullanmanız gerekiyor:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
Komut satırından bir Kubernetes kümesine bağlanmak için kimlik doğrulama sertifikalarını ve diğer bağlantı bilgilerini içeren bir yapılandırma dosyasına ihtiyacınız olacaktır. Dosyayı bilgisayarınıza veya sunucunuza indirmek ve içe aktarmak için aşağıdaki adımları izleyin.
Yapılandırma dosyasını bilgisayarınıza veya sunucunuza indirin:
Şimdi kümeye bağlanmanız gerekir.
Kümeye bağlantıyı kontrol etmek için küme durum bilgisini alın:
Başarılı bir bağlantı, Kontrol Düzleminin çalıştığı adresle sonuçlanacaktır:
Küme sorunlarını daha fazla ayıklamak ve teşhis etmek için 'kubectl cluster-info dump' kullanın.
Eğer kubectl doğru yapılandırılmamışsa veya Kubernetes kümesine bağlanamıyorsa, konsolda aşağıdaki mesaj görünecektir:
"xxx.xxx.xxx.xxx:yyy" sunucusuna bağlantı reddedildi - doğru ana bilgisayarı veya bağlantı noktasını belirttiniz mi?
Bağlantı hatalarını teşhis etmek için ayrıntılı bilgi çıktısı veren aşağıdaki komutu kullanın:
Kubectl ile çalışmak ve temel Kubernetes komutlarına aşina olmak için Kubernetes cheat sheet'i kullanabilirsiniz.