Published

Kubernetes Notlarım (1) - Kubernetes 101

Yazar
  • avatar
    İsim
    Elif Nur Karakoç
    Twitter

Önceleri Monolith halde geliştirilen uygulamalar, sonrasında Microservice’lere bölünerek küçük parçalar halinde tasarlanmaya başladı. Her bir microservis bir container olarak paketlendi ve kubernetes gibi orchestration toolarının gelişip kullanılmasını hızlandırdı.

Kısaca Kubernetes(K8S), container’lar üzerinde çalışan microservice tabanlı uygulamaların orkestrasyonunu yapmaktadır. Go/Golang kullanılarak geliştirilmiş. Google tarafından yazılmıştır ve şu an CNCF (Cloud Native Computing Foundation) bünyesi altındadır. 1000’lerce containerları aynı anda yönetebilir. On-Premise, Cloud, Hybrid kullanılabilmektedir. Kubernetes Docker olmadan çalışabilir. Docker da kubernetes olmadan çalışabilir.(NOT: Docker container oluşturma paketleme ve çalıştırma teknolojisidir.)

Container Orchestration ne sağlar?

  • IT altyapısının hazırlanımı ve dağıtımı (Provisioning and Deployment)
  • Konfigürasyon ve Zamanlama (Configuration and Scheduling)
  • Kaynak tahsisi (Resource allocation)
  • Container kullanılabilirliği (Cotainer availability)
  • Altyapıdaki iş yüklerini dengelemeye dayalı olarak workload birimlerini ölçeklendirme veya kaldırma(Scaling or removing containers based on balancing workloads across your infrastructure)
  • Yük dengeleme ve trafik yönlendirme (Load balancing and trafic routing)
  • Containerların çalışma durumlarını izleme (Monitoring container health)
  • Containerlar arası etkileşimleri güvende tutma (Keeping interactions between containers secure)
Kubernetes

Kubernetes Mimarisi:

Sistemi kontrol eden ve yöneten bir MASTER var, en az bir master olmak zorunda. Master tarafından yönetilen containerların çalıştığı workerlar var. Her worker makinesinde kubelet adında agent uygulama çalışır. Bu sayede master ile iletişim sağlar. Kubernetes’e verilen her işlem ve komut mastera gönderilir. YAML formatındaki template konfigurasyon dosyalarını UI, API, CLI kullanarak master’a gönderebiliyoruz. Master’da istenilen işlemleri workerlarda çalışır hale getirir.

Master (Control Panel) componentleri:

  • kube-api-server : işlemler için gerekli istekleri kabul eder ve yönlendiir.
  • etcd: bilgilerin(key/value) toplandığı yerdir.
  • kube-control-manager: nodeların ve containerların kontrolünün yapıldığı yerdir yani uygulamayı izler.
  • kube-scheduler: görev dağılımı yapar.

Node (Worker):

  • kubelet: kubernetes’in tüm nodelarda bulunan agentı, tüm iletişim bunun üzerinden sağlanıyor.
  • kube-proxy:kubernetes networküdür. Podlara IP adresi proxy ile atanır. Aynı zamanda bir servisin altındaki tüm podlara load balance özelliği kazandırır.
  • container engine

Pod

  • Kubernetes’in en küçük birimi Pod'dur. Docker için container ne ise kubernetes için Pod odur.
  • Podların içinde bir veya birden fazla container bulunabilir.
  • Pod’lar doğar, yaşar ve ölürler.
  • Podlar silindiğinde ona bağlı bileşenler de silinir. (örn: volumes)
  • 1 Pod birden fazla K8S node’u üzerine deploy edilemez, genişleyemez.

Notlarımın devamını başka bir yazı ile paylaşacağım 😊

Okuduğun için teşekkürler 💐

Elif