İlk (Durumsuz) Uygulamayı Dağıtma

Kubernetes’e Giriş

Frank Heilmann

Platform Architect and Freelance Instructor

"kubectl" Hakkında Daha Fazlası

  • kubectl: Kubernetes nesneleriyle etkileşim için temel komut
  • Nesneler örn. pod, service vb.

$$

  • Tipik kullanım kalıpları:

    • kubectl create -f <Manifest.yml>: yeni nesneler oluşturur; -f “filename” içindir
    • kubectl apply -f <Manifest.yml>: yeni nesneler oluşturur ve nesnelerin durumunu değiştirir
    • kubectl get <object>: Kubernetes’te dağıtılan nesnelere genel bakış
    • kubectl describe <object>: bir nesne hakkında ayrıntılı bilgi

    $$

  • Ayrıntılı yardım: --help komut satırı seçeneği ile

Kubernetes’e Giriş

Manifestler Hakkında Daha Fazlası

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.4
        ports:
        - containerPort: 80
  • Unutmayın: Manifestler beyanidir (declarative)
  • Genelde YAML, fakat JSON da olabilir
  • İki önemli bölüm:
    • metadata: nesne/kaynak hakkında temel bilgiler
    • spec: nesnenin/kaynağın istenen durumunu tanımlar
  • Dağıtılacak kaynağa bağlı olarak bölümler oldukça derin olabilir
Kubernetes’e Giriş

Durumsuz Uygulamalar

  • Durumsuz uygulamalar:

    • Genel kavram
    • Kubernetes’e özgü değildir
    • İç durum veya işlenen verinin bağlamını kaydetmez
  • Kesintide, durumsuz uygulamanın yeni bir kopyası oluşturulur ve çalışmaya başlar.

  • Örnekler:
    • Bir veritabanı arka ucunu sorgulayan veritabanı ön ucu
    • Tam metin dizinini sorgulayan bir arama uygulaması
    • IoT sensöründen sıcaklık verilerini °F’den °C’ye çeviren bir veri akışı uygulaması
Kubernetes’e Giriş

Kubernetes Deployment’ları

  • “Durumsuz uygulamalar” Kubernetes’te “Deployment” olarak karşılık bulur
  • Örnek bir Manifest şunlardan oluşur:
    • apiVersion ve kind
    • metadata ve spec
  • spec, replicas sayısını, bir selector ve bir template tanımlar
  • selector hakkında daha sonra
  • template, Deployment’taki pod’ların nasıl oluşturulacağını açıklar
apiVersion: apps/v1
kind: Deployment
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ğıtım

  • Pod oluşturmak ve değişiklikleri uygulamak için kubectl apply -f <manifest.yml>.
  • Kubernetes Control Plane, Deployment’ı Nodelara atar.
    • Ardından, Pod’lar Nodelar üzerinde tetiklenip oluşturulur.
  • Pod’lar benzersiz ama rastgele (öngörülemez) bir tanımlayıcı alır; her Pod “diğerleriyle eşdeğerdir”.
Kubernetes’e Giriş

Hadi pratik yapalım!

Kubernetes’e Giriş

Preparing Video For Download...