DevOps बूटकैंप · पाठ

स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स

यह सुनिश्चित करने के लिए जीवंतता और तत्परता प्रोब्स कॉन्फ़िगर कीजिए कि आपके ऐप्लिकेशन स्वस्थ हैं और ट्रैफ़िक संभालने के लिए तैयार हैं।

पाठ 3, कुल 4 में से12 चरण

स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

ऐप्स को स्वस्थ रखना

Kubernetes को कैसे पता चलता है कि आपका अनुप्रयोग वास्तव में काम कर रहा है? केवल कंटेनर का चलना पर्याप्त नहीं है; ट्रैफ़िक संभालने के लिए उसका स्वस्थ और तैयार होना भी आवश्यक है।

Kubernetes आपके अनुप्रयोगों की निगरानी के लिए प्रोब नामक विशेष जाँचों का उपयोग करता है। ये प्रोब यह सुनिश्चित करने में सहायता करते हैं कि आपके उपयोगकर्ताओं को हमेशा विश्वसनीय सेवा मिले।

लाइवनेस प्रोब क्या हैं

लाइवनेस प्रोब जाँचता है कि आपका अनुप्रयोग अभी भी सक्रिय और प्रतिक्रियाशील है या नहीं। यदि लाइवनेस प्रोब विफल हो जाए, तो Kubernetes मानता है कि आपका कंटेनर अस्वस्थ है और उसे फिर से शुरू कर देता है।

इसे हृदय-गति मॉनिटर की तरह समझिए: यदि हृदय रुक जाए, तो फिर से शुरू करना आवश्यक होता है! इससे डेडलॉक या अनुप्रयोग के क्रैश होने जैसी समस्याओं से उबरने में सहायता मिलती है।

लाइवनेस प्रोब की मूल बातें

आप विभिन्न विधियों का उपयोग करके लाइवनेस प्रोब कॉन्फ़िगर कर सकते हैं:

  • HTTP GET: निर्दिष्ट पथ पर HTTP अनुरोध भेजता है।
  • TCP सॉकेट: जाँचता है कि किसी पोर्ट से TCP कनेक्शन खोला जा सकता है या नहीं।
  • Exec कमांड: कंटेनर के भीतर कोई कमांड चलाता है।

वेब अनुप्रयोगों के लिए HTTP GET बहुत सामान्य है। Pod के YAML में इसे परिभाषित करने का एक अंश यहाँ दिया गया है:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

लाइवनेस प्रोब का प्रयोग

यह Python Flask ऐप /healthz पर दो अनुरोधों के बाद क्रैश होकर अस्वस्थ स्थिति का अनुकरण करेगा। Kubernetes प्रोब इसका पता लगाकर कंटेनर को फिर से शुरू कर देगा।

पहले, इसे app.py के रूप में सहेजें:

from flask import Flask, Response
import os
import time

app = Flask(__name__)
request_count = 0

@app.route('/healthz')
def health_check():
    global request_count
    request_count += 1
    if request_count > 2:
        print("Liveness probe failing! Exiting...")
        os._exit(1) # Simulate a crash
    print(f"Liveness probe successful (count: {request_count})")
    return Response("OK", status=200)

@app.route('/')
def home():
    return "Hello from the Liveness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

लाइवनेस प्रोब चलाना

अब देखते हैं कि Kubernetes लाइवनेस प्रोब का उपयोग कैसे करता है। यदि आप इसे निम्न YAML के साथ तैनात करते हैं, तो स्वास्थ्य जाँच विफल होने पर Kubernetes Pod को फिर से शुरू कर देगा:

apiVersion: v1
kind: Pod
metadata:
  name: liveness-demo
spec:
  containers:
  - name: liveness-container
    image: python:3.9-slim-buster
    command: ["python", "app.py"]
    ports:
    - containerPort: 8080
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5
      failureThreshold: 1
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: liveness-app-config

# (You'd need a ConfigMap for app.py, omitted for brevity)

तैनात होने के बाद, 2 सफल जाँचों के पश्चात तीसरी जाँच विफल हो जाएगी और Kubernetes कंटेनर को फिर से शुरू कर देगा।

रेडिनेस प्रोब क्या हैं

रेडिनेस प्रोब जाँचता है कि आपका अनुप्रयोग ट्रैफ़िक संभालने के लिए तैयार है या नहीं। यदि रेडिनेस प्रोब विफल हो जाए, तो Kubernetes उस Pod को ट्रैफ़िक भेजना बंद कर देगा, लेकिन उसे फिर से शुरू नहीं करेगा।

स्टार्टअप के दौरान (जैसे, डेटाबेस कनेक्शन की प्रतीक्षा करते समय) या व्यवस्थित रूप से बंद होने के दौरान यह अत्यंत महत्वपूर्ण है। ऐसे समझें: "क्या स्टोर ग्राहकों के लिए खुला है?"

रेडिनेस प्रोब की मूल बातें

रेडिनेस प्रोब को लाइवनेस प्रोब की तरह ही HTTP GET, TCP सॉकेट या Exec कमांड का उपयोग करके कॉन्फ़िगर किया जाता है। मुख्य अंतर इनके प्रभाव का है:

  • लाइवनेस: विफलता होने पर कंटेनर को फिर से शुरू करता है।
  • रेडिनेस: विफलता होने पर Pod को सेवा एंडपॉइंट से हटा देता है (कोई ट्रैफ़िक नहीं)।

रेडिनेस प्रोब का एक अंश यहाँ दिया गया है:

readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5

रेडिनेस प्रोब का प्रयोग

यह Flask ऐप ऐसे अनुप्रयोग का अनुकरण करता है, जिसे आरंभ होने में कुछ समय लगता है (जैसे, डेटाबेस से कनेक्ट होने में)। यह केवल 5 सेकंड बाद "ready" की रिपोर्ट करेगा।

इसे ready_app.py के रूप में सहेजें:

from flask import Flask, Response
import time

app = Flask(__name__)
start_time = time.time()
READY_AFTER_SECONDS = 5

@app.route('/ready')
def readiness_check():
    if time.time() - start_time > READY_AFTER_SECONDS:
        print("Readiness probe successful: App is ready!")
        return Response("READY", status=200)
    else:
        print("Readiness probe failing: App not ready yet...")
        return Response("NOT READY", status=503)

@app.route('/')
def home():
    return "Hello from the Readiness Probe Demo!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

रेडीनेस प्रोब चलाना

इस YAML के साथ तैनात किए जाने पर, Pod को पहले initialDelaySeconds और फिर /ready के 200 OK लौटाने में लगने वाले समय तक ट्रैफ़िक प्राप्त नहीं होगा।

apiVersion: v1
kind: Pod
metadata:
  name: readiness-demo
spec:
  containers:
  - name: readiness-container
    image: python:3.9-slim-buster
    command: ["python", "ready_app.py"]
    ports:
    - containerPort: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 10
      periodSeconds: 3
    volumeMounts:
    - name: app-volume
      mountPath: /app
  volumes:
  - name: app-volume
    configMap:
      name: readiness-app-config

# (You'd need a ConfigMap for ready_app.py, omitted for brevity)

इससे यह सुनिश्चित होता है कि ट्रैफ़िक केवल वास्तव में तैयार इंस्टेंस तक ही जाए।

लाइवनेस बनाम रेडीनेस

दोनों प्रोब का सही उपयोग करना महत्वपूर्ण है:

  • लाइवनेस प्रोब: यह पता लगाने के लिए उपयोग किया जाता है कि आपका अनुप्रयोग क्रैश हो गया है या ऐसी स्थिति में है जिससे वह स्वयं ठीक नहीं हो सकता। इसके विफल होने पर Kubernetes कंटेनर को पुनः प्रारंभ करता है।
  • रेडीनेस प्रोब: यह पता लगाने के लिए उपयोग किया जाता है कि आपका अनुप्रयोग अनुरोध स्वीकार करने और संसाधित करने के लिए तैयार है या नहीं। इसके विफल होने पर Kubernetes Pod को ट्रैफ़िक भेजना रोक देता है।

आपके अनुप्रयोगों को मजबूत बनाए रखने के लिए दोनों अलग-अलग, लेकिन एक-दूसरे के पूरक उद्देश्य पूरे करते हैं।

अपनी समझ जाँचें

लाइवनेस और रेडीनेस प्रोब के बारे में निम्नलिखित में से कौन-से कथन TRUE हैं?

प्रोब: मुख्य बातें

इस पाठ में आपने Kubernetes में लाइवनेस और रेडीनेस प्रोब के बारे में सीखा। ये स्वास्थ्य-जाँच आपके अनुप्रयोगों की विश्वसनीयता और उपलब्धता बनाए रखने के लिए अत्यंत महत्वपूर्ण हैं:

  • लाइवनेस प्रोब अस्वस्थ कंटेनर का पता लगाते हैं और उन्हें पुनः प्रारंभ करवाते हैं।
  • रेडीनेस प्रोब यह नियंत्रित करते हैं कि कोई Pod नेटवर्क ट्रैफ़िक प्राप्त करने के लिए कब तैयार है।

इनका प्रभावी उपयोग यह सुनिश्चित करता है कि आपके अनुप्रयोग हमेशा प्रतिक्रियाशील रहें और समस्याओं का सामना मजबूती से कर सकें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
142
पाठ
568

अक्सर पूछे जाने वाले प्रश्न

क्या “स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स” पाठ निःशुल्क है?

हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स” में मैं क्या सीखूँगा?

यह सुनिश्चित करने के लिए जीवंतता और तत्परता प्रोब्स कॉन्फ़िगर कीजिए कि आपके ऐप्लिकेशन स्वस्थ हैं और ट्रैफ़िक संभालने के लिए तैयार हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. kubectl logs से लॉगिंग
  2. Prometheus और Grafana से मेट्रिक्स
  3. स्वास्थ्य जाँच: जीवंतता और तत्परता प्रोब्स
  4. वितरित ट्रेसिंग और इवेंट
← DevOps बूटकैंप पर वापस जाएँ