विभिन्न कुबेरनेट्स पुनरारंभ नीतियों को कैसे सेट करें I

Vibhinna Kuberanetsa Punararambha Nitiyom Ko Kaise Seta Karem I



हम इस लेख में विशेष रूप से विभिन्न कुबेरनेट्स पुनरारंभ नीतियों के बारे में बात करेंगे। आइए पहले कुबेरनेट्स को फिर से शुरू करने के लिए उपयोग की जाने वाली विभिन्न नीतियों पर चर्चा करें। क्लस्टर में एक निश्चित कार्यभार को तैनात होने से रोकने के लिए आप इन नीतियों का उपयोग कर सकते हैं। जबकि क्लस्टर में कड़े मानकों को लागू करना आम तौर पर अनुपालन सुनिश्चित करने के लिए किया जाता है, क्लस्टर प्रशासकों को सुझाए गए कई सर्वोत्तम अभ्यासों का भी पालन करना चाहिए।

कुबेरनेट्स पुनरारंभ नीति क्या है?

प्रत्येक कुबेरनेट्स पॉड एक विशिष्ट जीवनचक्र का पालन करता है। यह 'लंबित' चरण में शुरू होता है और, यदि एक या अधिक प्राथमिक कंटेनरों को सफलतापूर्वक लॉन्च किया जाता है, तो 'रनिंग' चरण में संक्रमण होता है। पॉड में कंटेनर सफल होते हैं या विफल, इस पर निर्भर करते हुए, प्रक्रिया 'सफल' या 'असफल' चरण पर चलती है।







लागू कंटेनरों के स्तर पर नीति को पुनः आरंभ करने के लिए, तीन विकल्पों का उपयोग किया जा सकता है:



हमेशा

जब भी एक कंटेनर समाप्त होता है, कुबेरनेट्स एक नया उत्पादन करता है क्योंकि पॉड को हर समय सक्रिय रहने की आवश्यकता होती है।



विफलता पर

यदि कंटेनर 0 के अलावा रिटर्न कोड से बाहर निकलता है, तो यह केवल एक बार पुनरारंभ होता है। 0 (सफलता) लौटाने वाले कंटेनरों के लिए पुनरारंभ करना आवश्यक नहीं है।





कभी नहीँ

कंटेनर फिर से शुरू होने में विफल रहा।

अब, अगले भाग में, हम चर्चा करेंगे कि आप पॉड को कैसे पुनः आरंभ कर सकते हैं।



कुबेरनेट्स में एक पॉड को कैसे पुनः आरंभ करें?

कुबेरनेट्स पॉड को फिर से शुरू करने के लिए, kubectl टूल का उपयोग करके आदेश जारी करें। यह KubeAPI सर्वर से कनेक्ट होगा। आइए उपलब्ध विकल्पों का पता लगाएं:

एक फली के भीतर एक कंटेनर को पुनः आरंभ करना

एक पॉड में कई कंटेनर हो सकते हैं। दूसरी ओर, जब आप इससे जुड़ते हैं तो आप अनिवार्य रूप से एक पॉड के भीतर प्राथमिक कंटेनर से जुड़ते हैं। यदि आपने एक से अधिक परिभाषित किए हैं तो आप प्रत्येक कंटेनर से कनेक्ट कर सकते हैं जिसे आपने किसी मामले में परिभाषित किया है।

आप नीचे एक बहु-कंटेनर पॉड विनिर्देश उदाहरण देख सकते हैं:


यह एक साझा मात्रा और दो कंटेनरों का वर्णन करता है। HTML फाइल को NGINX कंटेनर द्वारा सर्व किया जाएगा और हर सेकंड Ubuntu कंटेनर HTML फाइल में एक डेट स्टैम्प जोड़ेगा।

चूंकि आपने निर्दिष्ट नहीं किया है कि किस कंटेनर से कनेक्ट करना है, जब आप उस पॉड से कनेक्ट करने का प्रयास करते हैं तो यह स्वचालित रूप से पहले वाले (NGINX) को चुन लेगा। स्क्रीनशॉट नीचे संलग्न है:


अब आप वर्तमान में सक्रिय कंटेनर के अंदर PID 1 प्रक्रिया को समाप्त करने का प्रयास कर सकते हैं। इसे पूरा करने के लिए निम्नलिखित कमांड को रूट के रूप में चलाएँ:


आप नीचे बताए गए कुबेक्टल टूल का भी उपयोग कर सकते हैं:


पॉड विनिर्देश के अनुसार, K8s अब नष्ट हो चुके कंटेनर को फिर से चालू करने का प्रयास करेगा। उसके लिए, 'वर्णन' कमांड का उपयोग इस प्रकार किया जाता है:


यहाँ उपरोक्त आदेश का परिणाम है:


वर्तमान स्थिति 'जा रही है,' जबकि पिछली स्थिति 'समाप्त' थी। इसका मतलब है कि कंटेनर को फिर से चालू किया गया था, इसके अनुसार। हालांकि, सभी कंटेनर रूट क्रेडेंशियल्स तक नहीं पहुंच सकते हैं। यही कारण है कि यह तरीका बहुत उपयोगी नहीं हो सकता है।

स्केलिंग द्वारा पॉड को फिर से शुरू करना

पॉड की प्रतिकृति की संख्या को 0 तक स्केल करना और फिर इसे 1 तक स्केल करना इसे पुनः आरंभ करने का सबसे सरल तरीका है। आपको इसके बजाय एक परिनियोजन का निर्माण करना चाहिए क्योंकि पॉड पर स्केल कमांड का उपयोग नहीं किया जा सकता है। इसे पूरा करने का एक आसान तरीका यहां दिया गया है:


स्केल को 0 और फिर उसके बाद 1 तक। ऐसा करने से, फली को समाप्त कर दिया जाएगा और फिर क्लस्टर में फिर से तैनात किया जाएगा:


प्रतिकृतियां 1 पर सेट हैं जैसा कि आप इस छवि में देख सकते हैं।


परिनियोजन विवरण देखने के लिए, हमने अब 'कुबेक्टल परिनियोजन प्राप्त करें' का उपयोग किया है। निम्नलिखित आदेश और परिणाम दोनों की एक सूची है:

इसे हटाकर और इसे फिर से तैनात करके एक पॉड को फिर से शुरू करना

'कुबेक्टल डिलीट' कमांड का उपयोग करके, आप एक पॉड को हटा सकते हैं और फिर इसे फिर से तैनात कर सकते हैं। हालांकि, यह दृष्टिकोण बल्कि विघटनकारी है, इसलिए इसकी सलाह नहीं दी जाती है।

रोलआउट का उपयोग करके पॉड को पुनरारंभ करना

ऊपर वर्णित तरीके से एक पॉड को पुनरारंभ करने के लिए, आपको या तो मौजूदा पॉड को नष्ट करना होगा और फिर एक नया पॉड बनाना होगा, या प्रतिकृति को नीचे और फिर ऊपर की ओर स्केल करना होगा। Kubernetes संस्करण 1.15 के साथ, आप रोलिंग फैशन में परिनियोजन को पुनरारंभ कर सकते हैं। पॉड को फिर से शुरू करने के लिए यह सुझाई गई प्रक्रिया है। आरंभ करने के लिए बस निम्नलिखित कमांड दर्ज करें:


अब, यदि आप किसी भिन्न टर्मिनल पर परिनियोजन स्थिति पर नज़र रखते हैं, तो आप निम्न प्रकार से ईवेंट के प्रवाह को देखेंगे:


यदि यह स्वस्थ है, तो यह परिनियोजन की पिछली प्रतिकृति को छोटा कर देगा और फली की एक नई प्रतिकृति को स्पिन कर देगा। परिणाम समान है, इस दृष्टिकोण को छोड़कर, अंतर्निहित ऑर्केस्ट्रेशन को कुबेरनेट्स द्वारा नियंत्रित किया गया था।

कुबेरनेट्स पॉड्स को विभिन्न तरीकों से कैसे पुनः आरंभ किया जा सकता है?

आइए सबसे पहले डॉकटर कंटेनर से शुरुआत करें। निम्नलिखित कमांड के साथ, डॉकर कंटेनरों को पुनः आरंभ किया जा सकता है:

> डॉकर पुनरारंभ कंटेनर_आईडी

लेकिन कुबेरनेट्स में, पॉड्स को फिर से शुरू करने के लिए कोई तुलनीय आदेश नहीं है, खासकर अगर कोई निर्दिष्ट YAML फ़ाइल नहीं है। एक विकल्प के रूप में, आप kubectl कमांड का उपयोग करके कुबेरनेट पॉड्स को पुनः आरंभ कर सकते हैं। निम्नलिखित आदेश सूचीबद्ध हैं:

कुबेक्टल सेट एनवी कमांड

कुबेक्टल स्केल कमांड का उपयोग करने का एक तरीका है। यह पॉड की प्रतिकृतियों की संख्या को संशोधित करेगा जिन्हें पुनः आरंभ करने की आवश्यकता है। नीचे एक उदाहरण आदेश दिया गया है कि पॉड में प्रतिकृतियों को दो कैसे सेट किया जाए:

> kubectl स्केल परिनियोजन प्रथम-परिनियोजन --प्रतिकृतियां = 2

रोलआउट पुनरारंभ आदेश

यहां, हम कुबेरनेट पॉड्स को पुनरारंभ करने के लिए रोलआउट रीस्टार्ट कमांड का उपयोग करने का तरीका प्रदर्शित करेंगे:

> kubectl रोलआउट पुनरारंभ परिनियोजन प्रथम-परिनियोजन -एन डेमो-नेमस्पेस

नियंत्रक को कमांड द्वारा प्रत्येक पॉड को व्यक्तिगत रूप से नष्ट करने के लिए कहा जाता है। यह तब रेप्लिकासेट का उपयोग करके नए पॉड को स्केल करता है। जब तक नियंत्रक फिर से शुरू होता है, तब तक हर नया पॉड हर मौजूदा पॉड से अधिक हाल का नहीं होता है, यह प्रक्रिया जारी रहती है।

डिलीट पॉड कमांड

यह खंड कुबेरनेट पॉड्स को फिर से शुरू करने के लिए रिमूव कमांड का उपयोग करने के तरीके पर जाएगा। आप देख सकते हैं कि हमने इस इमेज में पॉड एपीआई ऑब्जेक्ट से छुटकारा पाने के लिए अगले कमांड का इस्तेमाल किया:

. > kubectl पॉड फ़र्स्ट-पॉड हटाएं -एन डेमो_नामस्थान

पॉड ऑब्जेक्ट को हटाकर अपेक्षित एक का खंडन किया जाता है क्योंकि कुबेरनेट्स एपीआई घोषणात्मक है। प्रत्याशित के साथ स्थिरता बनाए रखने के लिए, पॉड को फिर से बनाया जाता है।

पिछली कमांड का उपयोग करके एक बार में एक पॉड को फिर से चालू किया जा सकता है। कई पॉड्स को पुनरारंभ करने के लिए संलग्न आदेश देखें:

> kubectl प्रतिकृतिसेट पॉड्स-मल्टीपल-एन डेमो_नामस्पेस को हटा दें

उपरोक्त कमांड प्रत्येक पॉड को पॉड के पूरे रेप्लिकासेट को हटाकर और फिर इसे स्क्रैच से बनाकर फिर से शुरू करता है।

निष्कर्ष

यह पोस्ट विभिन्न कुबेरनेट्स पुनरारंभ नीतियों के बारे में जानकारी प्रदान करती है। हमने नमूना उदाहरणों की सहायता से प्रत्येक चरण का वर्णन किया है। साथ ही, इन आदेशों को आज़माएं और देखें कि वे क्या आउटपुट उत्पन्न करते हैं।