कुबेरनेट्स नेटवर्किंग - कुबेरनेट्स में नेटवर्किंग अवधारणाओं के लिए एक व्यापक गाइड



कुबेरनेट्स नेटवर्किंग का यह ब्लॉग कुबेरनेट्स में शामिल अवधारणाओं जैसे फली, सेवाओं और प्रवेश नेटवर्क के साथ गहरा गोता लगाएगा।

पिछले ब्लॉग पर , आपको कुबेरनेट्स पर एक समझ मिल गई होगी। Kubernetes नेटवर्किंग पर इस ब्लॉग में, मैं मुख्य रूप से Kubernetes में शामिल नेटवर्किंग अवधारणाओं पर ध्यान केंद्रित करूँगा।

कुबेरनेट्स नेटवर्किंग पर इस ब्लॉग में, आप निम्नलिखित विषयों को समझेंगे:





कुबेरनेट क्या है?

आप कुबेरनेट्स को एक ओपन-सोर्स कंटेनर ऑर्केस्ट्रेशन टूल के रूप में परिभाषित कर सकते हैं जो कंटेनरीकृत अनुप्रयोगों की तैनाती को स्वचालित करने के लिए एक पोर्टेबल मंच प्रदान करता है।

अब, कुबेरनेट्स के साथ काम करने वाले किसी भी व्यक्ति को कुबेरनेट्स क्लस्टर की स्पष्ट समझ होनी चाहिए क्योंकि इससे आपको कुबेरनेट्स नेटवर्किंग को समझने में मदद मिलेगी।



कुबेरनेट्स क्लस्टर

कुबेरनेट्स प्लेटफ़ॉर्म वांछित राज्य प्रबंधन प्रदान करता है, जो क्लस्टर सेवाओं को चलाने में सक्षम बनाता है, बुनियादी ढांचे में खिलाया गया कॉन्फ़िगरेशन। एक उदाहरण से समझाता हूं।

एक YAML फ़ाइल पर विचार करें जिसमें सभी कॉन्फ़िगरेशन जानकारी हैं जिन्हें क्लस्टर सेवाओं में फीड करने की आवश्यकता है। तो, यह फ़ाइल क्लस्टर सेवाओं के एपीआई को खिलाया जाता है, और फिर यह क्लस्टर सेवाओं पर निर्भर करेगा कि वे पर्यावरण में पॉड्स को कैसे शेड्यूल करें। तो, मान लीजिए कि पॉड 1 के लिए तीन प्रतिकृतियों के साथ दो कंटेनर चित्र हैं, और दो प्रतिकृतियों के साथ पॉड 2 के लिए एक कंटेनर छवि है, यह श्रमिकों को इन पॉड-प्रतिकृति जोड़े को आवंटित करने के लिए क्लस्टर सेवाओं तक होगा।

जावा में कमांड लाइन तर्क पारित करना

कुबेरनेट्स क्लस्टर - कुबेरनेट्स नेटवर्किंग - एडुर्का



उपरोक्त आरेख का संदर्भ लें। अब, जैसा कि आप देख सकते हैं कि क्लस्टर सेवाओं ने पहले कार्यकर्ता को दो पॉड प्रतिकृति जोड़े के साथ आवंटित किया है, दूसरा कार्यकर्ता एक पॉड-प्रतिकृति जोड़ी के साथ और तीसरा कार्यकर्ता दो पॉड प्रतिकृति जोड़े के साथ। अब, यह क्यूबलेट प्रक्रिया है जो श्रमिकों के साथ क्लस्टर सेवाओं के संचार के लिए जिम्मेदार है।

तो, क्लस्टर सेवाओं का यह पूरा सेटअप और श्रमिक स्वयं इसे बनाते हैं कुबेरनेट्स क्लस्टर !!

कैसे, आपको लगता है कि ये व्यक्तिगत रूप से आवंटित फली एक दूसरे के साथ संवाद करते हैं?

उत्तर Kubernetes नेटवर्किंग में निहित है!

नए अपडेट पाने के लिए हमारे youtube चैनल को सब्सक्राइब करें ..!

नेटवर्किंग अवधारणाओं के साथ हल करने के लिए मुख्य रूप से 4 समस्याएं हैं।

  • कंटेनर कंटेनर संचार के लिए
  • पॉड टू पॉड कम्युनिकेशन
  • सेवा संचार के लिए फली
  • सेवा संचार के लिए बाहरी

अब, मैं आपको बताता हूं कि कुबेरनेट्स नेटवर्किंग के साथ उपरोक्त समस्याएं कैसे हल की जाती हैं।

कुबेरनेट्स नेटवर्किंग

एक क्लस्टर में लोगों को पॉड्स, सेवाओं और बाहरी सेवाओं के बीच संचार कुबेरनेट्स नेटवर्किंग की अवधारणा में लाता है।

तो, आपकी बेहतर समझ के लिए मुझे निम्नलिखित में अवधारणाओं को विभाजित करने दें।

  • फली और कंटेनर संचार
  • सेवाएँ
  • Ingress Network के माध्यम से बाहरी सेवाओं से जुड़ना

फली और कंटेनर संचार

इससे पहले कि मैं आपको बताऊं कि फली कैसे संवाद करते हैं, मैं आपको पेश करता हूं कि फली क्या हैं?

फली

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

अब, मैं आपको संक्षेप में बताता हूं कि ये पॉड कैसे संवाद करते हैं?

संचार के 2 प्रकार हैं। द अंतर-नोड संचार और यह इंट्रा-नोड संचार।

तो, आइए इंट्रा-नोड संचार के साथ शुरू करें, लेकिन इससे पहले मैं आपको पॉड नेटवर्क के घटकों से परिचित कराऊं।

इंट्रा-नोड अंडर नेटवर्क

इंट्रा-नोड पॉड नेटवर्क मूल रूप से एक ही पॉड पर दो अलग-अलग नोड्स के बीच संचार है। एक उदाहरण से आपको समझाता हूं।

मान लीजिए कि एक पैकेट पॉड 1 से पॉड 2 तक जा रहा है।

  • पैकेट पॉड 1 के नेटवर्क को eth0 पर छोड़ देता है और मूल नेटवर्क को veth0 में दर्ज करता है
  • फिर, पैकेट लिनक्स ब्रिज (cbr0) पर गुजरता है जो एआरपी अनुरोध का उपयोग करके गंतव्य को बचाता है
  • इसलिए, अगर वीथ 1 में आईपी है, तो पुल को अब पता है कि पैकेट को आगे कहां भेजना है।

अब, इसी तरह मैं आपको इंटर-नोड पॉड संचार के बारे में बताता हूं।

लर्निंग Kubernetes में रुचि रखते हैं?
नेटवर्क के तहत इंटर-नोड

विभिन्न नेटवर्क नेमस्पेस, नेटवर्क इंटरफेस और एक लिनक्स ब्रिज वाले दो नोड्स पर विचार करें।

अब, मान लीजिए कि एक पैकेट पॉड 1 से पॉड 4 तक यात्रा करता है जो एक अलग नोड पर है।

  • पैकेट फली 1 नेटवर्क को छोड़ देता है और मूल नेटवर्क को veth0 में दर्ज करता है
  • फिर पैकेट लिनक्स ब्रिज (cbr0) पर जाता है जिसकी जिम्मेदारी गंतव्य को खोजने के लिए ARP अनुरोध करना है।
  • पुल के बाद पता चलता है कि इस पॉड में गंतव्य का पता नहीं है, पैकेट मुख्य नेटवर्क इंटरफ़ेस eth0 पर वापस आता है।
  • पैकेट अब नोड 1 को दूसरे नोड पर गंतव्य को खोजने के लिए छोड़ देता है और रूट टेबल पर प्रवेश करता है जो पैकेट को नोड पर ले जाता है जिसके CIDR ब्लॉक में पॉड 4 है।
  • तो, अब पैकेट नोड 2 तक पहुंचता है और फिर पुल पैकेट ले जाता है जो एआरपी से अनुरोध करता है कि वह पता लगाए कि आईपी वीथ0 से संबंधित है।
  • अंत में, पैकेट पाइप-जोड़ी को पार करता है और पॉड 4 तक पहुंचता है।

तो, यह है कि फली कैसे एक दूसरे के साथ संवाद करते हैं। अब, चलो आगे बढ़ते हैं और देखते हैं कि पॉड्स के संचार में सेवाएं कैसे मदद करती हैं।

तो, आपको क्या लगता है कि सेवाएं क्या हैं?

सेवाएँ

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

अब, विभिन्न सेवा प्रकार हैं जो आपको अपने क्लस्टर आईपी पते के बाहर एक सेवा को उजागर करने का विकल्प देते हैं।

सेवाओं के प्रकार

मुख्य रूप से 4 प्रकार की सेवाएं हैं।

क्लस्टर: यह डिफ़ॉल्ट सेवा प्रकार है जो क्लस्टर के भीतर सेवा को केवल पहुंच योग्य बनाकर क्लस्टर-आंतरिक IP पर सेवा को उजागर करता है।

NodePort: यह प्रत्येक नोड के IP पर एक स्थिर पोर्ट पर सेवा को उजागर करता है। से एक क्लस्टर सेवा, जिसके लिए NodePort सेवा रूट करेगी, स्वचालित रूप से बनाई गई है। हम क्लस्टर के बाहर NodePort सेवा से संपर्क कर सकते हैं।

भार संतुलन: यह सेवा प्रकार है जो क्लाउड प्रदाता के लोड बैलेंसर का उपयोग करके सेवा को बाहरी रूप से उजागर करता है। तो, NodePort और ClusterIP सेवाएं, जिनके लिए बाहरी लोड बैलेंसर रूट होगा, स्वचालित रूप से बनाई जाती हैं।

बाहरी नाम : यह सेवा प्रकार सेवा को सामग्री की तरह मैप करता है बाहरी नाम लौटकर मैदान CNAME इसके मूल्य के साथ रिकॉर्ड।

तो, दोस्तों जो सभी सेवाओं के बारे में था। अब, आप सोच रहे होंगे कि बाहरी सेवाएँ इन नेटवर्कों से कैसे जुड़ती हैं?

खैर, इसके अलावा और कोई नहीं है Ingress नेटवर्क

Ingress नेटवर्क

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

अब, मैं आपको उदाहरण के साथ Ingress Network के कामकाज की व्याख्या करता हूं।

हमारे पास 2 नोड्स हैं, जिसमें एक लिनक्स ब्रिज के साथ पॉड और रूट नेटवर्क नेमस्पेस है। इसके अतिरिक्त, हमारे पास एक नया आभासी ईथरनेट उपकरण भी है, जिसे फलालैन0 (नेटवर्क प्लगइन) कहा जाता है, जो रूट नेटवर्क में जोड़ा जाता है।

अब, हम चाहते हैं कि पैकेट पॉड 1 से फली 4 तक बहे।

  • इसलिए, पैकेट पॉड 1 के नेटवर्क को eth0 पर छोड़ देता है और रूट नेटवर्क को veth0 में दर्ज करता है।
  • फिर इसे cbr0 पर पास कर दिया जाता है, जो गंतव्य को खोजने के लिए ARP अनुरोध करता है और इसके बाद पता चलता है कि इस नोड पर गंतव्य IP पता किसी के पास नहीं है।
  • इस प्रकार, पुल पैकेट को फलालैन0 पर भेजता है क्योंकि नोड का मार्ग तालिका फलालैन0 से कॉन्फ़िगर किया गया है।
  • अब, फलालैन डेमॉन सभी पॉड आईपी और उनके संबंधित नोड्स को जानने के लिए कुबेरनेट्स के एपीआई सर्वर से पॉड्स आईपी के लिए नोड्स नोड्स के लिए मैपिंग बनाने के लिए बात करता है।
  • नेटवर्क प्लगइन यूडीपी पैकेट में इस पैकेट को लपेटता है, अतिरिक्त हेडर के साथ स्रोत को बदलता है और आईपी को उनके संबंधित नोड्स में भेजता है और इस पैकेट को eth0 के माध्यम से बाहर भेजता है।
  • अब, चूंकि रूट टेबल पहले से ही जानता है कि नोड्स के बीच ट्रैफ़िक कैसे रूट किया जाता है, यह पैकेट को गंतव्य नोड 2 पर भेजता है।
  • पैकेट नोड 2 के eth0 पर आता है और फ़्लेननेल0 से डी-कैप्युलेट में वापस जाता है और इसे रूट नेटवर्क नेमस्पेस में वापस लाता है।
  • फिर से, पैकेट को वेथ 1 से संबंधित आईपी का पता लगाने के लिए एआरपी अनुरोध करने के लिए लिनक्स ब्रिज पर भेजा जाता है।
  • पैकेट आखिरकार रूट नेटवर्क को पार करता है और गंतव्य Pod4 तक पहुंचता है।

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

अब, जब मैंने आपको कुबेरनेट्स नेटवर्किंग के बारे में बहुत कुछ बताया है, तो मैं आपको एक वास्तविक जीवन का अध्ययन दिखाता हूं।

केस स्टडी: कुबेरनेट्स नेटवर्किंग का उपयोग करते हुए वेल्थ विजार्ड

वेल्थ विजार्ड्स एक ऑनलाइन फाइनेंशियल प्लानिंग प्लेटफ़ॉर्म है जो वित्तीय योजना और स्मार्ट सॉफ्टवेयर तकनीक को एक किफायती कीमत पर विशेषज्ञ सलाह देने के लिए जोड़ती है।

चुनौतियां

अब, कंपनी के लिए अपने क्लाउड वातावरण की पूरी दृश्यता के साथ कोड भेद्यताओं को जल्दी से पता लगाना और समाप्त करना बेहद जरूरी था, लेकिन पहुंच प्रतिबंधों के माध्यम से यातायात को नियंत्रित करना चाहते थे।

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

उन्होंने एक्सेस प्रतिबंधों के माध्यम से यातायात को नियंत्रित करने की अनुमति देने के लिए कुबेरनेट्स की एक नेटवर्क नीति सुविधा का भी उपयोग किया।

अब, समस्या यह थी कि ये नीतियां अनुप्रयोग-उन्मुख हैं और केवल अनुप्रयोगों के साथ ही विकसित हो सकती हैं, लेकिन, इन नीतियों को लागू करने के लिए कोई घटक नहीं था।

इसलिए, इसके लिए एकमात्र समाधान जो कंपनी ढूंढ सकती थी, वह था नेटवर्क प्लग इन का उपयोग करना, और इसलिए उन्होंने वेव नेट का उपयोग करना शुरू कर दिया।

उपाय

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

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

अब, प्रत्येक कुबेरनेट्स नोड पर उसकी तैनाती के साथ, प्लगइन इंटर-पॉड रूटिंग का प्रबंधन करता है और आईपीटबल्स नियमों में हेरफेर करने के लिए उपयोग करता है। सरल शब्दों में, प्रत्येक नीति को कुबेरनेट्स टैग का अनुवाद करने के लिए प्रत्येक मशीन में समन्वित और कॉन्फ़िगर किए गए IPtables नियमों के संग्रह में परिवर्तित किया जाता है।

ठीक है, अब जब आप कुबेरनेट्स नेटवर्किंग के बारे में इतने सिद्धांत से गुजरे हैं, तो मैं आपको दिखाता हूं कि यह व्यावहारिक रूप से कैसे किया जाता है।

व्यावहारिक व क्रियाशील

इसलिए, इस धारणा के साथ कि आप सभी ने कुबेरनेट्स को अपने सिस्टम पर स्थापित किया है, मेरे पास दिखाने के लिए एक परिदृश्य है।

मान लीजिए कि आप उत्पाद का नाम और उत्पाद आईडी स्टोर करना चाहते हैं, इसके लिए आपको एक वेब एप्लिकेशन की आवश्यकता होगी। असल में, आपको वेब एप्लिकेशन के लिए एक कंटेनर की आवश्यकता है और बैकएंड के लिए आपको MySQL के रूप में एक और कंटेनर की आवश्यकता है, और यह कि MySQL कंटेनर को वेब एप्लिकेशन कंटेनर से जोड़ा जाना चाहिए।

मैं कैसे उपर्युक्त उदाहरण को व्यावहारिक रूप से निष्पादित करता हूं।

आएँ शुरू करें!

स्टेप 1: अपनी इच्छित निर्देशिका में एक फ़ोल्डर बनाएँ और उस फ़ोल्डर में कार्य निर्देशिका पथ को बदलें।

mkdir HandsOn cd हैंड्सऑन /

चरण 2: अब वेब एप्लिकेशन और MySQL डेटाबेस के लिए, YAML फाइलें तैनात करें।

चरण 3: एक बार जब आप तैनाती फ़ाइलों को बनाते हैं, तो दोनों अनुप्रयोगों को तैनात करें।

kubectl apply -f webapp.yml kubectl apply -f mysql.yml

चरण 3.1: दोनों तैनाती जांचें।

kubectl को तैनाती मिलती है

चरण 4: अब, आपको दोनों अनुप्रयोगों के लिए सेवाएँ बनानी होंगी।

kubectl apply -f webservice.yml kubectl apply -f sqlservice.yml

कदम 4.1: एक बार सेवाएँ सृजित करने के बाद, सेवाओं को तैनात करें।

चरण 4.2: जांचें कि सेवाएं बनाई गई हैं या नहीं।

kubectl सेवा प्राप्त करें

चरण 5: अब, रनिंग पॉड्स के कॉन्फ़िगरेशन की जांच करें।

kubectl को फली मिलती है

चरण 6: वेबैप पॉड के अंदर कंटेनर में जाएं।

kubectl exec -it container_id bash नैनो var / www / html / index.php

चरण 6.1 : अब, परिवर्तन $ सर्वरनाम लोकलहोस्ट से लेकर SQL सर्विस नाम जो “है webapp-sql1 'इस मामले में, और $ पासवर्ड से ' Edureka ”। इसके अलावा, आवश्यक सभी डेटाबेस विवरण भरें और कीबोर्ड शॉर्टकट का उपयोग करके अपनी index.php फ़ाइल को सहेजें Ctrl + x और उसके बाद दबाएँ बचाने के लिए और दबाएँ दर्ज करें

चरण 7: अब, फली में मौजूद MySQL कंटेनर में जाएं

kubectl इसे कंटेनर_ड बैश निष्पादित करें

चरण 7.1.१: MySQL कंटेनर का उपयोग करने के लिए पहुँच प्राप्त करें।

mysql -u रूट -p edureka

कहां-कहां उपयोगकर्ता का प्रतिनिधित्व करता है और -p आपके मशीन का पासवर्ड है।

चरण 7.2: MySQL में एक डेटाबेस बनाएं जिसका उपयोग वेबएप से डेटा प्राप्त करने के लिए किया जाएगा।

उत्पाद डेटाबेस बनाएँ

कदम 7.3: बनाए गए डेटाबेस का उपयोग करें।

उत्पाद विवरण का उपयोग करें

चरण 7.4: MySQL में इस डेटाबेस में एक तालिका बनाएँ, जिसका उपयोग वेब से डेटा प्राप्त करने के लिए किया जाएगा।

रचनात्मक उत्पाद (उत्पाद_नाम वर्छार (10), उत्पाद_कार (11))

कदम 7.5: अब, कमांड का उपयोग करके MySQL कंटेनर से बाहर निकलें बाहर जाएं

चरण 8: उस पोर्ट नंबर की जांच करें जिस पर आपका वेब एप्लिकेशन काम कर रहा है।

kubectl सेवाएं प्राप्त करें

कदम 8.1: अब, इसके द्वारा आवंटित पोर्ट नंबर पर वेब एप्लिकेशन खोलें।

चरण 9: एक बार जब आप पर क्लिक करें जिज्ञासा दर्ज करें , उस नोड पर जाएं जिसमें आपकी MySQL सेवा चल रही है और फिर कंटेनर के अंदर जाएं।

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

लर्निंग Kubernetes में रुचि रखते हैं?

यदि आपको यह Kubernetes नेटवर्किंग ब्लॉग प्रासंगिक लगता है, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है।