Gantek
Kubernetes Mimarisi

Kubernetes Mimarisi


1.    Kubernetes Mimarisi

Kubernetes, container içerisine alınmış uygulama ve hizmet kümelerini yönetmek amacıyla tasarlanmış, açık kaynaklı bir platformdur. Bir Kubernetes Cluster’ı yönetebilmek için adminlerin Kubernetes mimarisini bilmelerinde fayda olacaktır.   https://kubernetes.io/docs/concepts/architecture/

Kubernetes cluster mimarisi ve genel olarak konseptleri aşağıdaki gibi gösterebiliriz:

Resim: Kubernetes Örnek Mimari Anlatımı


Kubernetes mimarisi ve bileşenlerinde ilk olarak Master ve Worker Node’lardan bahsedebiliriz. Şimdi bu node’ların içeriğinde yer alan bileşenlere bakalım:

Master Nodes: Cluster’daki Node’larla ilgili Manage, Plan, Schedule, Monitor (control plane components) işlemlerini yapar. Etcd database de genellikle bu sunucuda bulunur.

  • Kube API Server: Primary managementtan sorumludur. Cluster’daki tüm operasyonların orchestrate (yönetim) edilmesinden sorumludur. External kullanıcılar için cluster’ı yönetebilmeleri için Kubernetes API yayınlar.
  • Kube Controller Manager: Node controller, Cluster ve Node durumundan sorumludur. Node’ların sağlık durumu, yeni node ilave edilmesi, silinmesi, problem yaşayıp yaşamadığı vb konularla ilgilenir. Replication controller ise, istenildiği kadar container replikasının çalışıp çalışmadığından, eksik varsa tamamlanmasından sorumludur.
  • Kube Scheduler: İlgili worker’a kapasitesine göre (ram, cpu, disk, network vb) hangi container’ı kaç adet, hangi worker node üzerine, nasıl deploy edeceğine karar verir.
  • ETCD: Cluster’daki işlemlerin ve gerekli bilgilerin tutulduğu, key/value tipinde database’dir.

 

Worker Nodes: Cluster’da çalışacak uygulamalara ait iş yükünü taşıyan sunuculardır.

  • Kubelet: Worker’lar üzerindeki agenttır. Worker ile ilgili tüm bilgileri ve durumu, Master Node ile paylaşır.
  • Kubeproxy: Worker’lar üzerindeki network iletişiminden ve yönetiminden sorumludur.
  • Container Engine: Docker, Crio, Containerd, Rkt vb container engine’dir.

Resim: Örnek Mimari


1.1. API Erişimi

Kubernetes Api hizmetini; mimari içerisindeki kaynaklara erişim, bunların yönetilmesi, eklenip çıkarılması, bazı bilgilerin edinilmesi için Kubernetes’in bize sunduğu erişim hizmetleri olarak tanımlayabiliriz. Api erişimleri sayesinde adminlerin sistemi yönetebilmesi, 3rd party uygulama ve developerların da bu hizmeti kullanarak uzaktan kubernetes’e erişerek istedikleri işlemleri yapabilmeleri sağlanır. Ayrıca, farklı uygulama ve servisler de Kubernetes ile entegrasyonlarını da yine bu api hizmeti sayesinde yapabilmektedir.

Bunlara örnek olarak aşağıdaki işlemleri sayabiliriz:

  • Authenticate User
  • Validate Request
  • Retrieve Data
  • Update ETCD
  • Operate Cluster vb.

Yaygın olarak kullanılan Kubernetes Api olarak https://:6443 url’sini verebiliriz.


1.2. High Availability & Planlama

Kubernetes Cluster yapısındaki node’lar tek node’lu control plane ve worker şeklinde çalışabilmektedir. Ancak single çalışan bir control plane veya worker rolündeki bir node problem yaşadığında Kubernetes Cluster’ın bir bölümü veya tamamı erişilemez hale gelebilir. Benzer şekilde, üzerinde çalışan uygulamalar da aynı riski taşıyor olacaktır.

Kubernetes sistemini ayakta tutan bileşenlerin HA yapıda planlanması ve kurulması önerilmektedir.  Örneğin control plane node’larının 3 adet ve birlikte erişim problemi yaşamadan çalışmak üzere kurulması gerekmektedir. Control Plane içerisindeki bileşenler de benzer şekilde bu HA yapıya uyumlu şekilde çalışacaktır, örneğin Etcd, Kube-apiserver vb.

Cluster dizaynı yaparken Node’lar, kaynak ihtiyaçları, network ihtiyaçları gibi konular belirlenmelidir. Sistemin hangi amaçla kullanılacağı; örneğin, development ortamı için mi, prod mu, eğitim için mi, yoksa bu iş için bulut sağlayıcısından mı faydalanacağız. Hangi yükler ne derecede sisteme gelecek vs konular değerlendirilmelidir.

Aşağıda Kubernetes Cluster Dizaynında Belirlenecek Konular Sıralanmıştır:

  • Purpose
    • Education
    • Development & Testing
    • Hosting Production Applications
  • Cloud or OnPrem?
  • Workloads
    • How many?
    • What kind?
      • Web
      • Big Data/Analytics
    • Application Resource Requirements
      • CPU Intensive
      • Memory Intensive
    • Traffic
      • Heavy traffic
      • Burst Traffic

Not: Bu değerler versiyon, teknoloji ve donanım özelliklerine göre değişiklik gösterebilir.

Resim: Örnek HA Kubernetes Cluster Bileşenleri

Kubernetes Cluster’ı Onprem ortamımıza mı yoksa buluta mı kuracağız, buna tabi ki maliyetlerin karşılaştırılması ile karar verilecektir. Bunun yanında, aşağıdaki konulara da bakılmalıdır:


Platform ile ilgili:

  • Onprem Ortamımızda: Kubeadm tool ile kurulum yaparız,
  • GCP: Google Cloud Provider’da GCE (google cloud engine) tool’unu kullanırız,
  • AWS: Amazon’da kops tool’unu kullanırız,
  • Azure: Azure’da Kubernetes Service (AKS) kullanılır,

 

Storage Durumuyla ilgili:

  • High Performance gereken durumlarda: SSD/NVME Storage seçilmeli,
  • Multiple Concurrent connections gerekli ise: Network based storage seçilmeli,
  • Persistent shared volumes for shared access across multiple PODs,
  • Label nodes with specific disk types,
  • Use Node Selectors to assign applications to nodes with specific disk types,

 

Node’larla ilgili:

  • Virtual or Physical Machines
  • Minimum of 4 Node Cluster (Size based on workload)
  • Master vs Worker Nodes
  • Linux X86_64 Architecture
  • Master nodes can host workloads
  • Best practice is to not host workloads on Master nodes (master node’a taint eklenerek worker gibi çalışması engellenebilir)


Master Node:

Büyük yapılarda control plane node bileşenlerinin hepsinin aynı sunucuda ve lokasyonda durmaması için bunlar ayrılabilir. Örneğin ETCD’nin farklı bir yerde host edilmesi gibi.


2.    Linkler

https://kubernetes.io/docs/concepts/architecture/

 

Alpay Polat - Şubat 2024

Güncel Blog Yazıları

2023'te Dijital Yatırımlarımızda Öne Çıkacak Konular
Turbonomic 101
Açık Kaynak Yazılım Lisans Türleri
INSTANA 101
Podman
GitLab 101
CI/CD Nedir?
GitLab’ın AI Yeteneği ve DevSecOps Platformundaki Rolü
Redis‘te En Sık Yapılan Hatalar
Bulut Teknolojisi Nedir?
Veritas ile Veri Yönetiminde Yenilikçi Yaklaşımlar
API Gateway'ler: Dijital Dönüşümde Verimliliği ve Güvenliği Artırmanın Yolu
Red Hat Ansible Lightspeed ve IBM Watsonx Code Assistant: BT Otomasyonunda Devrim
PostgreSQL’in Tarihçesi
PostgreSQL Mimarisi
Istio Service Mesh
Mikroservislerin Gelecegi
Elasticsearch Machine Learning
Gelişmiş Arama Deneyimi: Elasticsearch Relevance Engine ve Büyük Dil Modelleri ile Yapay Zeka Destekli Arama Çözümleri
Kubernetes - Cka Sınavı  Genel Başlıklar
Kubernetes Mimarisi
Openshift Updates
Dell OpenManage Enterprise ile Tek Yerden Çoklu Sistem Yönetimi
Dolandırıcılık Yönetim Sisteminin Önemi ve Bu Kapsamda Kullanılan ROC-Fraud Management System
Partner Settlements’ın Önemi ve Bu Kapsamda Kullanılan ROC-Partner Settlement System
Gelir Güvence Sisteminin Önemi ve Bu Kapsamda Kullanılan ROC-Revenue Assurance System
Windows Admin Center – Kolaylaştırılmış, Modern Uzaktan Sunucu Yönetim Aracı
Veri Tabanı Nedir? Veri Tabanı Güvenliğini Nasıl Sağlarız?
DevOps Nedir? DevOps Neden Önemlidir?
PostgreSQL’de TOAST (The Oversized-Attribute Storage Technique) Kavramı
MVCC (Multi Version Concurrency Control) nedir? PostgreSQL’in MVCC implementasyonu nasıldır?