Kubernetes (K8s), konteyner uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için açık kaynaklı bir sistemdir.
Bu makalemde sizlere mümkün olduğunca fazla bilgi aktarmaya çalışacağım.
Sektörün ihtiyaçları neticesinde container yapılarının yoğun olarak kullanılmaya başlanmasıyla, yönetim ve operasyon yükünü kısıtlı personel ile kaldırabilmek adına bu sistemleri otonom haline getirmek kaçınılmaz bir hal aldı. Kubernetes’in öne çıktığı nokta tam olarak burası diyebilirim.
Google’ın GO dili kullanılarak geliştirdiği Kubernetes’i 2014 yılında açık kaynak hale getirildi. Google tarafından 2004 yılından beri kullanılmakta ve hali hazırda milyarlarca konteyner için kullanılıyor.
Container yapısı ve dağıtık sistemler hakkında bilgi sahibi değilseniz, konuyu daha iyi anlayabilmek adına bu makaleden aşağıdaki makaleme göz atmanızı öneririm.
Kubernetes Ne Yapar?
Kubernetes konteyner içerisindeki uygulama veya servislerinizin en iyi şekilde çalışmasını sağlar.
Servisleri izler, yük dengelemesi yapar, depolama alanlarınızı yönetir, (Yerel depolama birimlerinizden, Amazon servislerine, NFS ve iSCSI protokollerinden verilmiş depolama birimlerine kadar), secret ve konfigürasyon yönetiminizi yapar, konteynerlarınız hataya düştüğünde otomatik olarak onarmaya çalışır, çok basit şekilde yatayda genişlemenizi sağlar. (CPU kullanımına göre otomatik olarak yapılabilir.)
Kubernetes Bileşenleri
Master ve node (worker) olarak iki başlık altında bileşenleri inceleyelim.
Master Bileşenleri
Master üzerindeki bileşenler aslında clusterımızın tüm kontrol fonksiyonlarını yerine getiren birimdir. Yönetim fonksiyonlarının yanısıra operasyonel kararları alan birim de burasıdır.
Master bileşenleri cluster içerisindeki herhangi bir makinede çalışabilmesi mümkündür ama kolaylık olması için kurulumda tüm master bileşenlerini bir makinede toplanır ve kullanıcı containerları bu makinede çalıştırılmaz.
Master içerisinde 5 bileşen bulunur;
kube-apiserver
Aslında herşey Kubernetes API Serverdan soruluyor, master içerisinden veya worker nodalardan gelen tüm istekler buradan yönetilir.
Yatay olarak genişler, yani genişlemek için yeni instance kurmanız gerekir.
etcd
Yüksek bulunabilirlik (HA), tutarlılık ve izlenebilirlik özelliklerine sahip dağıtık mimari ile tasarlanmış ve tüm cluster verisinin saklandığı bileşendir. Veriler key value database olarak adlandırılan bir yapıda saklanır.
kube-scheduler
API Server üzerinden yeni bir pod oluşturulması isteği geldiğinde, bu podun hangi node üzerinde çalışacağına karar veren birimdir.
kube-controller-manager
Master node üzerindeki kontrolcüleri yöneten birimdir. Şu an için toplamda 4 kontrolcü mevcut ve her bir kontrolcü aslında mantıksal olarak farklı işlemler olarak çalışıyor ama karmaşıklığı gidermek adına hepsi tek bir binary olarak derlenip tek bir işlem olarak çalışmaktadır.
Aslında tek bir işlem gibi çalışan bu mantıksal kontrolcüler aşağıdaki gibi;
- Node Controller
- Replication Controller
- Endpoints Controller
- Service Account & Token Controllers
cloud-controller-manager
Daha çok yeni olan bu bileşen cloud servis sağlayıcılar ile etkileşim içerisinde olan kontrolcülerdir. Bu binary 1.6 sürümü ile henüz alfa özellik olarak geldi. Henüz çok bir bilgim olmadığı için daha sonra bu kısma ekleme yapacağım.
Node Bileşenleri
kubelet
Clusterdaki her node üzerinde çalışan ajandır. Bu ajan konteynerların, pod içerisinde çalışmasını sağlar. Kubelet kubernetes tarafından oluşturulmayan konteynerları yönetemez.
kube-proxy
Node üzerindeki ağ iletişimini sağlar ve yönetir. Nodeların ağ iletişimleri için kural dizileri oluşturmanızı ve yönetebilmenizi de burası sağlar.
Container Runtime
Konteynerların çalışmasından sorumlu olan bileşendir. Kubernetes kendisi haricinde Docker, containerd, cri-o, rktlet gibi farklı konteynerları da desteklemekte.
Daha detaylı bilgileri benim de kaynak olarak kullandığım resmi web sitesi https://kubernetes.io/ adresinden edinebilirsiniz.
2 yorum
Geri izleme. Docker Nedir? Konteyner Nedir? (Container Architecture) - Fatih Şölen | Bilgi Teknolojileri Blogu
Geri izleme. VMware Project Pacific - Fatih Şölen | Bilgi Teknolojileri Blogu