Ansible Kubernetes (K8s) इन्वेंटरी स्रोत

Ansible Kubernetes K8s Inventari Srota



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

Google ने कुबेरनेट्स नामक आसानी से सुलभ प्रबंधन सॉफ्टवेयर लॉन्च किया, जिसे K8s के रूप में भी जाना जाता है, जिसका उपयोग शून्य-डाउनटाइम इंस्टॉलेशन सुविधाओं, स्वचालित प्रत्यावर्तन और स्केलेबिलिटी के साथ मशीनों के रिमोट सेट पर वर्चुअलाइज्ड कॉन्फ़िगरेशन को प्रबंधित करने के लिए किया जाता है, जो कुबेरनेट्स प्लगइन को अत्यंत अनुकूलनीय प्रदान करता है। Ansible में वास्तुकला। आवश्यक कार्यक्षमता के लिए REST API की उपलब्धता के माध्यम से, कुबेरनेट्स का प्राथमिक लक्ष्य उन जटिलताओं को छुपाना है जो कई कंटेनरों को नियंत्रित करने से जुड़ी हैं।







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



Ansible में कुबेरनेट्स इन्वेंटरी स्रोत का उपयोग करने की पूर्वापेक्षाएँ

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



  • Ansible परिदृश्य में काम करने के लिए, हम पहले Ansible टूल को सर्वर पर सेट करते हैं और सुनिश्चित करते हैं कि आपके पास Ansible संस्करण 2.11.7 है ताकि हम आसानी से Kubernetes प्लगइन का उपयोग कर सकें।
  • कुबेरनेट्स प्लगइन का आकलन करने के लिए, हमें कुबेरनेट्स क्लस्टर के साथ एक दूरस्थ सर्वर डिवाइस की आवश्यकता होती है।
  • दूरस्थ होस्ट वर्तमान में Ansible निर्देशों और प्लेबुक, साथ ही एक निर्मित इन्वेंट्री फ़ाइल को निष्पादित करने के लिए कॉन्फ़िगर किया गया है। लक्ष्य रिमोट डिवाइस का नाम K8s मास्टर नोड है।
  • पायथन का संस्करण 3.6 या उससे ऊपर का है जिसे Ansible नियंत्रक के उपकरण पर स्थापित किया जाना चाहिए। यह टारगेट रिमोट होस्ट डिवाइस में भी हो सकता है।
  • पायथन के ओपनशिफ्ट मॉड्यूल का संस्करण 0.6 या उससे ऊपर है। हमें संस्करण 3.11 या इसके बाद के संस्करण के एक पीवाईएएमएल मॉड्यूल की भी आवश्यकता है। दोनों मॉड्यूल को रिमोट सर्वर डिवाइस के साथ-साथ कंट्रोलर डिवाइस में भी सेट किया जाना चाहिए।

उदाहरण:





यहाँ पहला उदाहरण है जहाँ हम कुबेरनेट्स को अंसिबल में लागू करते हैं। ऐसा करने के लिए, हम कुबेरनेट्स इन्वेंट्री स्रोत को लागू करने के लिए किसी भी अन्सिबल वातावरण का उपयोग करते हैं। कुबेरनेट्स इन्वेंटरी प्लगइन का उपयोग करके निम्नलिखित सूचीबद्ध प्रक्रियाओं को निम्नलिखित परिदृश्य में किया जाता है:

  • Ansible में K8s क्लस्टर में नए नामस्थान का कार्यान्वयन।
  • Ansible प्लेबुक का उपयोग करके nginx पॉड का निर्माण।
  • Ansible में nginx परिनियोजन का निर्माण।

अवधारणाओं और निष्पादन को समझने में सरल बनाने के लिए, हम उदाहरण को कई चरणों में लागू करते हैं।



चरण 1: Ansible में K8s क्लस्टर में नया नाम स्थान लागू करें

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

[ जड़ @ मास्टर जवाब देने योग्य ] # नैनो  nginx_pod.yml

अब, 'pod.yml' प्लेबुक बनाई गई है और Ansible के नए टर्मिनल में लॉन्च की गई है। हम स्क्रिप्ट लिखना शुरू करते हैं। प्लेबुक में, हम सबसे पहले एपीआई संस्करण को परिभाषित करते हैं जिसका उपयोग हम अन्सिबल पॉड में करते हैं जो 'v1' है। हम जिस नेमस्पेस को परिभाषित करते हैं, वह 'एन्सिबल-नेमस्पेस' है। फिर, हम ansible-namespace के मेटाडेटा को सूचीबद्ध करते हैं। मेटाडेटा में, हम nginx सॉफ़्टवेयर और उस लेबल का उपयोग करते हैं जिसमें मूल्य दृश्यपटल का एक स्तर होता है। मार्गदर्शिका के विनिर्देश में, हम कंटेनर में संग्रहीत नाम और छवि को सूचीबद्ध करते हैं; दोनों में nginx है।

चरण 2: Ansible में मेनिफेस्ट दस्तावेज़ बनाएँ

अब, हम Ansible की उसी निर्देशिका में एक और दस्तावेज़ बनाते हैं जो '.yml' प्रारूप में परिनियोजन दस्तावेज़ है। मेनिफ़ेस्ट दस्तावेज़ बनाने के लिए, Ansible टर्मिनल में निम्न कमांड का उपयोग करें:

[ जड़ @ मास्टर जवाब देने योग्य ] # नैनो nginx_deployment.yml

मेनिफेस्ट दस्तावेज़ में, हम पहले ऐप संस्करण को फिर से परिभाषित करते हैं जो 'ऐप/v1' है। फिर, हम बताते हैं कि यह किस प्रकार की फ़ाइल है, क्या यह परिनियोजन फ़ाइल है। फिर, हम नेमस्पेस को परिभाषित करते हैं जो कि ansible-namespace है। कार्यान्वयन के निर्माण के लिए, ansible-namespace के अंदर दो प्रतियाँ फली की संख्या दर्शाती हैं। Nginx चित्र 1.14.2 हैं जो पॉड में लॉन्च किए गए हैं। matchLabels पैरामीटर पॉड्स के लिए टैग और उनके विनिर्देशों को स्पेक पैरामीटर के तहत प्रदान करता है। यदि किसी तरह पॉड पर टैग कॉन्फ़िगरेशन जानकारी में निर्दिष्ट टैग से मेल खाते हैं, तो कार्यान्वयन Ansible में प्रकट दस्तावेज़ में होता है।

चरण 3: Ansible में कुबेरनेट्स कार्यान्वयन के लिए मार्गदर्शिका बनाएँ

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

[ जड़ @ मास्टर जवाब देने योग्य ] # नैनो कुबेरनेट्स_मेन.वाईएमएल

प्लेबुक उसी डायरेक्टरी में बनाई जाती है, जहां पिछली प्लेबुक और मेनिफ़ेस्ट दस्तावेज़ Ansible में स्टोर किए जाते हैं। मार्गदर्शिका में, हम पहले उस मार्गदर्शिका की कार्यक्षमता को परिभाषित करते हैं जिसे हम लागू करना चाहते हैं। कनेक्शन बनाने के लिए, हम दूरस्थ होस्ट प्रदान करते हैं जिन्हें हम लक्षित करना चाहते हैं। यहां, हम “सभी” मेजबानों को लक्षित करते हैं। अगला, हम Ansible में Python दुभाषिया को उस पथ का उपयोग करके जाँचने के लिए चर को परिभाषित करते हैं जहाँ यह संग्रहीत है। अब, हम कार्यपुस्तिका में कार्यों को परिभाषित करते हैं। सबसे पहले, हम मिनीक्यूब डिवाइस की स्थिति की जांच करते हैं। अगला, हम प्लेबुक में एक नया कुबेरनेट्स नेमस्पेस बनाते हैं। फिर, nginx_pod.yml और nginx_deployment .yml को दूरस्थ डिवाइस पर डुप्लिकेट करें।

इन yml दस्तावेज़ों के माध्यम से, हम रिमोट डिवाइस में पॉड कार्यान्वयन का निर्माण करते हैं। फिर, हम जांचते हैं कि कुबेरनेट्स पॉड रिमोट डिवाइस में निर्दिष्ट स्थान पर मौजूद है या नहीं।

प्लेबुक समाप्ति के बाद, अब हम इन्वेंट्री फ़ाइल बनाते हैं ताकि हम Ansible कंट्रोलर और टारगेट रिमोट होस्ट के बीच संबंध बना सकें।

सभी:
मेजबान:
k8s_Master_Node:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ********
ansible_connection: एसएसएच
ansible_port: 22

[ जड़ @ मास्टर जवाब देने योग्य ] # ansible-playbook kubernates_main.yml

यहाँ वांछित आउटपुट है जहाँ हम देखते हैं कि कार्य सफलतापूर्वक लक्ष्य मशीन पर रखे गए हैं:

कार्य को लक्ष्य मशीन पर रखे जाने के बाद, हम जाँचते हैं कि 'ansible-namespace' Kubernetes क्लस्टर में है या नहीं। हम निम्नलिखित 'grep' कमांड का उपयोग करते हैं:

[ जड़ @ मास्टर जवाब देने योग्य ] # कुबेक्टल गेट नेमस्पेस | grep ansible-namespace

यदि आप कुबेरनेट्स क्लस्टर के नामस्थान में बनाए गए पॉड की जांच करना चाहते हैं, तो जाँच करने के लिए निम्न कमांड लिखें:

[ जड़ @ मास्टर जवाब देने योग्य ] # kubectl get pods --namespace ansible-namespace

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

[ जड़ @ मास्टर जवाब देने योग्य ] # kubectl परिनियोजन प्राप्त करें --namespace ansible-namespace

निष्कर्ष

हमने सीखा कि Ansible में कुबेरनेट्स इन्वेंट्री स्रोत क्या है। हमने यह भी सीखा कि अंसिबल में कुबेरनेट्स इन्वेंट्री का उपयोग कैसे करें। फिर, हमने एक उदाहरण लागू किया ताकि हम Ansible में कुबेरनेट्स इन्वेंट्री स्रोत के काम करने के बारे में अधिक स्पष्ट रूप से जान सकें।