Durum Korumalı Bir Uygulamayı Dağıtma, Ölçekleme ve İzleme

Kubernetes’e Giriş

Frank Heilmann

Platform Architect and Freelance Instructor

Durumsuz Uygulamalara Özet

  • Kısa özet: Durumsuz uygulamalar Kubernetes'te "Deployments" ile eşleşir
  • Uygulamanın her Pod'u aynı görevi yaptığında kullanılır
  • Durum korumalı uygulamalarda Pod'lar bir sete aittir; farklı görevler ve veriler üzerinde çalışabilir
  • Deployments hakkında öğrendiklerimizin çoğu StatefulSet'lere de uygulanır
Kubernetes’e Giriş

Durum Korumalı Uygulamalar

  • Durum korumalı uygulamalar:

    • genel kavram
    • Kubernetes'e iyi uyar
    • bir miktar durumu saklar
  • Kesildiğinde veya durduğunda, yeni bir replika (Pod) kaydedilen durumu okuyup buradan devam edebilir

  • Örnek:
    • Bir veritabanı arka ucu (örn. PostgreSQL), 3 Pod kullanan bir önyüze veri sağlar.
    • Pod'lardan herhangi biriyle veriyi güncellediğimizde, bu verinin kalıcı olması gerekir
    • Bir Pod sonlandığında, yenisi oluşturulur ve kaydedilen durumu devralmalıdır
Kubernetes’e Giriş

Kubernetes StatefulSet'ler

  • Durum korumalı uygulamalar "Kubernetes StatefulSet"lere karşılık gelir
  • Örnek bir manifest şu bölümlerden oluşur:
    • apiVersion, kind, metadata, spec, template
  • replicas, StatefulSet içindeki Pod sayısını tanımlar
  • selector hakkında daha sonra
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Kubernetes’e Giriş

Bir Kubernetes Kümesine Dağıtma

  • StatefulSet, Deployments gibi dağıtılır: kubectl apply -f <manifest.yml>
  • Dağıtıldıktan sonra, StatefulSet bir Deployment'tan farklı oluşturulur:
    • Pod'lar bir Deployment'taki gibi hepsi birden değil, sırayla oluşturulur
    • Pod'lar pod-0, pod-1, pod-2 gibi öngörülebilir adlar alır
  • Bu şu anlama gelir: Deployment Pod'larının aksine, StatefulSet Pod'larının kimliği ve durumu vardır
  • Bu nedenle, farklı kimlikteki StatefulSet Pod'ları uygulamada farklı roller üstlenebilir
Kubernetes’e Giriş

Bir StatefulSet'i Ölçekleme

  • Deployments gibi, StatefulSet'ler de ölçeklenebilir:
    • Manifest'teki replicas sayısını değiştirip yeniden uygulayın
    • Ya da kubectl scale statefulsets ... komutunu kullanın
  • Ölçek artırırken Pod'lar sırayla oluşturulur:
    • ör. önce pod-0, pod-1, pod-2; sonra pod-3, ardından pod-4 eklenir
  • Ölçek azaltırken en son oluşturulan Pod'lar önce silinir:
    • ör. önce pod-4, sonra pod-3
Kubernetes’e Giriş

Bir StatefulSet'i İzleme

  • Deployments'te olduğu gibi, izleme kesinti, ani yük artışı veya eksik depolama gibi sorunlara tepki vermeyi sağlar
  • Burada temel izleme görevleri için kubectl kullanıyoruz
  • Tipik komutlar: Deployments ile aynıdır
  • Örnek 1: kubectl get pods, bir StatefulSet'teki tüm pod'ları mevcut durumlarıyla döndürür
  • Örnek 2: kubectl get services, bir StatefulSet'in kullanabileceği tüm servisleri döndürür
Kubernetes’e Giriş

Hadi pratik yapalım!

Kubernetes’e Giriş

Preparing Video For Download...