अपने ऐप को एक्सपोज़ करने के लिए किसी सर्विस का उपयोग करना

उद्देश्य

  • कुबेरनेट्स में सर्विस के बारे में जानें
  • समझें कि लेबल और लेबल चयनकर्ता ऑब्जेक्ट किसी सर्विस से कैसे संबंधित हैं
  • सर्विस का उपयोग करके कुबेरनेट्स क्लस्टर के बाहर किसी एप्लिकेशन को एक्सपोज़ करें

कुबेरनेट्स सर्विसों का अवलोकन

कुबेरनेट्स पॉड्स नश्वर हैं। पॉड में वास्तव में एक जीवनचक्र होता है। जब एक कार्यकर्ता नोड बंद हो जाता है, तो नोड पर चलने वाले पॉड भी खो जाते हैं। एक रेप्लिकासेट तब आपके एप्लिकेशन को चालू रखने के लिए नए पॉड्स के निर्माण करके क्लस्टर को वांछित स्थिति में वापस चला सकता है। एक अन्य उदाहरण के रूप में, 3 रेप्लिका के साथ एक इमेज प्रोसेसिंग बैकएंड पर विचार करें। वे रेप्लिका विनिमेय हैं; फ्रंट-एंड सिस्टम को बैकएंड रेप्लिका की परवाह नहीं करनी चाहिए या भले ही पॉड खो जाए और फिर से बनाया जाए। कुबेरनेट्स क्लस्टर में प्रत्येक पॉड का एक अद्वितीय IP पता होता है, यहां तक कि एक ही नोड पर पॉड्स के भी, इसलिए पॉड्स के बीच परिवर्तनों को स्वचालित रूप से समेटने का एक तरीका होना चाहिए ताकि आपके एप्लिकेशन कार्य करना जारी रखें।

कुबेरनेट्स में सर्विस एक अमूर्त है जो पॉड्स के तार्किक सेट और उन्हें एक्सेस करने के लिए एक निति परिभाषित करता है। सर्विस निर्भर पॉड्स के बीच एक युग्मन को सक्षम करती है। सभी कुबेरनेट्स ऑब्जेक्ट्स की तरह YAML (अधिमानित) या JSON का उपयोग करके एक सर्विस को परिभाषित किया जाता है। सर्विस द्वारा लक्षित पॉड्स का सेट आमतौर पर एक लेबल सेलेक्टर द्वारा निर्धारित किया जाता है (नीचे देखें कि आप selector शामिल किए बिना सर्विस क्यों उपयोग करना चाहेंगे।)

यद्यपि प्रत्येक पॉड का एक विशिष्ट आईपी पता होता है, लेकिन उन आईपी को सर्विस के बिना क्लस्टर के बाहर उजागर नहीं किया जाता है। सर्विस आपके एप्लिकेशन को ट्रैफ़िक प्राप्त करने देती हैं। ServiceSpec: में type निर्दिष्ट करके सर्विसों को अलग-अलग तरीकों से उजागर किया जा सकता है:

  • क्लस्टर IP (डिफ़ॉल्ट) - क्लस्टर में किसी आंतरिक IP पर सर्विस को एक्सपोज़ करें। यह प्रकार सर्विस को केवल क्लस्टर के भीतर से ही पहुंच योग्य बनाता है।
  • नोडपोर्ट - NAT का उपयोग करके क्लस्टर में प्रत्येक चयनित नोड के एक ही पोर्ट पर सेवा को प्रदर्शित करता है। <NodeIP>:<NodePort> का उपयोग करके किसी सेवा को क्लस्टर के बाहर से एक्सेस योग्य बनाता है। क्लस्टरआईपी का सुपरसेट।
  • लोड बैलेंसर - मौजूदा क्लाउड (यदि समर्थित हो) में एक बाहरी लोड बैलेंसर बनाता है और सर्विस को एक निश्चित, बाहरी आईपी असाइन करता है। नोडपोर्ट का सुपरसेट।
  • एक्सटर्नल-नाम - सेवा को externalName फ़ील्ड (जैसे foo.bar.example.com) की सामग्री से मैप करता है, एक लौटाकर CNAME अपने मान के साथ रिकॉर्ड करें। किसी भी प्रकार का कोई प्रॉक्सी सेट अप नहीं किया गया है। इस प्रकार के लिए v1.7 या उच्चतर kube-dns, या कोरडीएनएस संस्करण 0.0.8 या उच्चतर की आवश्यकता होती है।

विभिन्न प्रकार की सर्विसओं के बारे में अधिक जानकारी स्रोत आईपी का उपयोग करना ट्यूटोरियल में मिल सकती है। एप्लिकेशन को सर्विसओं से जोड़ना भी देखें।

इसके अतिरिक्त, ध्यान दें कि सर्विसओं के साथ कुछ उपयोग के मामले हैं जिनमें विनिर्देश में selector को परिभाषित नहीं करना शामिल है। selector के बिना बनाई गई सर्विस भी अनुरूप एंडपॉइन्ट ऑब्जेक्ट नहीं बनाएगी। यह उपयोगकर्ताओं को विशिष्ट एंडपॉइन्ट के लिए किसी सर्विस को मैन्युअल रूप से मैप करने की अनुमति देता है। एक और संभावना है कि कोई सलेक्टर क्यों नहीं हो सकता है, कि आप सख्ती से type: ExternalName का उपयोग कर रहे हैं।

सारांश

  • पॉड्स को बाहरी ट्रैफ़िक में एक्सपोज़ करना
  • एकाधिक पॉड्स में संतुलन ट्रैफ़िक लोड करें
  • लेबल का उपयोग

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


सेवाएं और लेबल

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

सर्विस लेबल और चयनकर्ताओं का उपयोग करके पॉड्स के एक सेट से मेल खाती हैं, एक समूहबद्ध आदिम जो Kubernetes में ऑब्जेक्ट पर तार्किक संचालन की अनुमति देता है . लेबल वस्तुओं से जुड़े कुंजी/मूल्य जोड़े होते हैं और इन्हें किसी भी तरह से उपयोग किया जा सकता है:

  • डिप्लॉयमेंट,परीक्षण और प्रोडक्शन के लिए वस्तुओं को नामित करें
  • संस्करण टैग जोड़ें
  • टैग का उपयोग करके ऑब्जेक्ट्स को वर्गीकृत करें


लेबल को निर्माण के समय या बाद में ऑब्जेक्ट्स से जोड़ा जा सकता है। उन्हें किसी भी समय परिवर्तित किया जा सकता है। आइए अब सर्विस का उपयोग करके हमारे ऐप को एक्सपोज़ करें और कुछ लेबल लागू करें।