Kubernetes Notları

☁️ Ümit Eroğlu 🌍🛰
4 min readDec 10, 2021

Konteynerler

Konteyner, kodu ve ona bağlı tüm bileşenleri paketleyen standart bir yazılım birimidir. Amacı uygulamanın farklı işletim ortamlarında hızlı ve güvenilir bir şekilde çalışmasıdır. Konteynerleri, masaüstü bilgisayarlardan daha çok laptoplara benzetebiliriz. Masaüstü bilgisayarları kullanmak için birçok aletin birleşimine ihtiyaç duyarız. Kasa, ekran, klavye, fare vb. gibi. Taşınabilir değildir. Laptopta ise ihtiyaç duyduğumuz herşey bir cihazda toplanmıştır ve onu istediğimiz yere taşıyabiliriz. Konteynerlerde bunun gibidir. Yazılımın ihtiyaç duyduğu herşeyi taşınabilir bir paket içerisine koyar. Bunların arasında işletim sistemi dosyaları, konfigürasyon dosyaları, uygulama kodu vb. gibi elemanlar bulunur. Konteynerin avantajları; taşınabilir olması, tutarlı olması ve sanal makine gibi teknolojilerden daha az kaynak kullanması olarak özetlenebilir. Konteyner runtime, onu bir makinede çalıştırmak için kullanılan yazılıma verilen isimdir.

Kubernetes

Kubernetes; konteyner haline getirilmiş uygulamaların yönetilmesi, ölçeklenmesi, dağıtımının otomatize edilmesi gibi görevleri yerine getiren açık kaynak bir sistemdir. Kubernetes, konteynerleri server gibi işletim kaynaklarına dağıtmaya (deploy) yardımcı olur. Uygulamanızın replikalarını (aynısı) çoklu sunucular arasında dağıtabilirsiniz. Replikaları arttırıp azaltabilirsiniz. Kubernetes konteynerlerin ağ iletişimlerini kontrol etmek için bir çerçeve sağlar. Daha güvenli uygulamalar için birçok özellik sunar ve konfigürasyon veri yönetimine yardımcı olur.

Kubernetes Cluster (Küme)

Kubernetes cluster, konteynerleri çalıştıran iş makinaları toplamına verilen isimdir.

Control Plane (Kontrol Düzlemi)

Kümeyi kontrol eden servisleri işaret eder. Kullanıcılar bu düzlemi kullanarak küme ile etkileşime girerler. Control plane kümenin durumunu izler. Birbirinden bağımsız birçok kısımdan oluşur. Herhangi bir yerde çalışabilirler. Yüksek erişilebilirlik için çoklu instance çalıştırabilirsiniz.

Node (Bağlantı Ucu / Düğüm)

Cluster içinde konteynerleri çalıştıran bir makinenin temsilidir. Node’daki konteynerleri çalıştırır. Konteynerlerin durumunu izler ve Control Plane’e raporlar.

Worker Nodes (İşçi Node’lar)

Worker node’lar, yönetim için bir konteyner runtime’a ihtiyaç duyar. Bu bileşene “kubelet” denir. Kubelet, node’da bulunan kubernetes aktivitesini yönetmeye yarar.

Kubernetes API

Kubernetes control plane’in temeli API sunucusudur.

- Kubernetes API, temel http API’dir.
- Kullanıcı arayüzü ile API; objeleri sorgular, manipüle eder ve dolayısı ile cluster’ı kontrol eder.
- Merkezi bir kontrol noktasıdır. Kubernetes’in çeşitli bileşenleri API’yi kullanarak iletişim kurarlar.
- API; kullanıcılar ile cluster arasında bir arayüz gibi hareket eder.

Kubernetes Objeleri

Objeler, kubernetes tarafından saklanan kalıcı veri elemanlardır. Cluster’ın durumunu temsil ederler. Uygulamaları dağıtabilir, konfigüre edebilir, konteyner çalıştırabilir, cluster davranışını, objeleri oluşturarak, silerek modifiye edebilirsiniz. Tüm bunlar, Kubernetes API aracılığı ile gerçekleşir.

Pods

Birçok farklı tipte kubernetes objesi bulunur. En önemlisine pod adı verilir. Pod’lar konteynerleri çalıştırmak ve yönetmek için kullanılır.

Süreç genel olarak şöyle işler: Kullanıcılar API’leri kullanarak obje oluşturabilir ve onları manipüle edebilir. Bir pod objesi oluştururlar. Daha sonra control plane, obje tarafından temsil edilen durumu uygulamak için çalışır ve node üzerinde bir konteyner çalıştırır. Worker node’lar, her konteynerin durumunu, API’ye sürekli haber verir. Kullanıcılar ise durumu kontrol etmek için objeleri görüntüleyebilirler.

YAML

Kubernetes objeleri genellikle YAML verisi olarak temsil edilir. Aşağıdaki örnek, bir konteyner içerisinde nginx sunucusunu çalıştıran basit bir pod’u gösterir:

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
— name: nginx
image: nginx

apiVersion’u YAML verisinin hangi kubernetes API versiyonu ile uyumlu olduğunu gösterir.

kubectl

Bir kubernetes komut satırı aracıdır. Kubernetes cluster’ında komutlar çalıştırmanıza olanak sağlar. Kubectl’ı uygulama dağıtmak, cluster kaynaklarını incelemek ve loglara bakmak için kullanabilirsiniz.

Kubectl, kubernetes objelerini oluşturma, görüntüleme, modifiye etme, silme gibi işlemleri yapmak için kullanılır. Kubectl kubernetes API ile arka planda komutlarınızı yerine getirmek için iletişim kurar.

Pod’lar ile Konteyner Yönetimi

Pod, bir ya da daha fazla konteynerden oluşan, aynı depolama ve ağ kaynaklarını kullanan, konteynerlerin nasıl çalıştırılacağına dair özellikleri barındıran bir bileşendir.

Pod, cluster içinde birbiriyle yakın bağlantıda olan bir yada daha fazla konteynerden oluşan bir objedir.

Pod Özellikleri

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
— name: nginx
image: nginx

kind — obje tipini belirtir.

metadata.name — pod objesinin ismi.

spec.containers — pod’da yer alan bir ya da daha fazla konteynerin listesini sağlar.

spec.containers[].image — çalıştırmak istediğiniz yazılımı içeren konteyner imajının adını belirtir.

Bulutta Kubernetes

Birçok bulut sağlayıcı, birkaç klik ile cluster oluşturabileceğiniz yönetilen bir kubernetes platformunu barındırır.

Amazon Web Services

Amazon EKS — Elastic Kubernetes Service: Yönetilen bir kubernetes altyapısıyla kolayca uygulamalarınızı çalıştırmanıza olanak sağlar.

Amazon EC2 — Elastic Compute Cloud: Sanal makinelerle, kendi kubernetes cluster’ınızı kurabilir ve yönetebilirsiniz.

Amazon ECR — Elastic Container Registry: Bulutta, konteyner imajlarınızı güvenli bir şekilde saklayabilir ve yönetebilirsiniz.

Azure

Microsoft’un ise Azure Kubernetes Service (AKS) çözümü vardır. Ayrıca AKS, Azure’un continuous integration / continuous delivery (CI/CD) gibi devops özellikleri ile entegredir.

Google

Google Kubernetes Engine (GKE) ile kendi çözümünü sunar. GKE, çoklu-alan (multi-zone) ve bölgesel (region) cluster’lar ile yüksek erişilebilirlikli bazı kullanışlı özellikler sunar.

Kaynak:

Diğer yazılarıma ulaşmak için:

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

☁️ Ümit Eroğlu 🌍🛰
☁️ Ümit Eroğlu 🌍🛰

Written by ☁️ Ümit Eroğlu 🌍🛰

Software, Cloud, DevOps, IoT, GIS, Remote Sensing.

No responses yet

Write a response