Stateful एप्लिकेशन का डिप्लॉय, स्केल, और मॉनिटरिंग

Kubernetes परिचय

Frank Heilmann

Platform Architect and Freelance Instructor

Recap: Stateless Applications

  • छोटा रीकैप: stateless एप्लिकेशन Kubernetes में "Deployments" से मैप होते हैं
  • तब उपयोग करें जब ऐप के हर Pod का काम बिल्कुल एक जैसा हो
  • Stateful एप्लिकेशन में जुड़े हुए Pods चाहिए, पर वे अलग काम और अलग डेटा पर काम कर सकते हैं
  • Deployments से सीखा बहुत कुछ StatefulSets पर भी लागू होता है
Kubernetes परिचय

Stateful Applications

  • Stateful ऐप्स:

    • सामान्य कॉन्सेप्ट
    • Kubernetes के लिए उपयुक्त
    • कुछ state सेव करते हैं
  • रुकने या बंद होने पर, नया replica (Pod) सेव्ड state पढ़कर वहीं से काम जारी रख सकता है

  • उदाहरण:
    • एक डेटाबेस बैकएंड (जैसे PostgreSQL) 3 Pods से फ्रंटएंड को डेटा देता है।
    • जब भी हम किसी Pod से डेटा अपडेट करते हैं, वह डेटा persist होना चाहिए
    • किसी Pod के टर्मिनेट होने पर, नया Pod बनता है और उसे सेव्ड state से पिक करना पड़ता है
Kubernetes परिचय

Kubernetes StatefulSets

  • Stateful एप्लिकेशन "Kubernetes StatefulSets" में ट्रांसलेट होते हैं
  • एक sample manifest में वही सेक्शन होते हैं:
    • apiVersion, kind, metadata, spec, template
  • replicas StatefulSet में Pods की संख्या बताता है
  • selector पर आगे बात करेंगे
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 परिचय

Kubernetes क्लस्टर पर डिप्लॉयमेंट

  • StatefulSet को Deployments की तरह डिप्लॉय करें: kubectl apply -f <manifest.yml>
  • डिप्लॉय होने पर, StatefulSet का निर्माण Deployment से अलग होता है:
    • Pods एक-एक कर बनते हैं, Deployment के Pods की तरह एक साथ नहीं
    • Pods को अनुमानित नाम मिलते हैं जैसे pod-0, pod-1, pod-2 आदि
  • मतलब: Deployment के Pods के विपरीत, StatefulSet के Pods की पहचान और state होती है
  • इसलिए, StatefulSet के अलग-अलग Pods अपनी पहचान के अनुसार ऐप में अलग भूमिकाएँ निभा सकते हैं
Kubernetes परिचय

StatefulSet को स्केल करना

  • Deployments की तरह, StatefulSets को scale up या scale down कर सकते हैं:
    • Manifest में replicas बदलकर फिर से apply करें
    • या कमांड kubectl scale statefulsets ... उपयोग करें
  • Scale up पर, नए Pods क्रम से बनेंगे:
    • जैसे, pod-0, pod-1, pod-2 के बाद पहले pod-3, फिर pod-4 जोड़ा जाएगा
  • Scale down पर, जो Pods बाद में बने थे वे पहले हटेंगे:
    • जैसे, पहले pod-4, फिर pod-3
Kubernetes परिचय

StatefulSet की मॉनिटरिंग

  • Deployments की तरह, मॉनिटरिंग से outages, लोड स्पाइक्स, या स्टोरेज की कमी जैसी समस्याओं पर प्रतिक्रिया संभव होती है
  • यहाँ हम बेसिक मॉनिटरिंग टास्क के लिए kubectl इस्तेमाल करेंगे
  • टिपिकल कमांड: Deployments वाली ही तरह
  • उदाहरण 1: kubectl get pods StatefulSet के सभी pods और उनकी current status देता है
  • उदाहरण 2: kubectl get services वे सभी services दिखाता है जिन्हें StatefulSet उपयोग कर सकता है
Kubernetes परिचय

अभ्यास करते हैं!

Kubernetes परिचय

Preparing Video For Download...