यदि आप क्लाउड कंप्यूटिंग के बढ़ते प्रचलन से परिचित हैं, तो आपने Kubernetes के बारे में अवश्य सुना होगा। आधुनिक एप्लिकेशन विकास में, विभिन्न इंफ्रास्ट्रक्चर सेटअप्स को प्रबंधित करने के लिए यह सीखने का एक प्रमुख टूल है।
इस परिचयात्मक लेख में, हम Kubernetes और उसके घटकों का एक अवलोकन देंगे, साथ ही इसे लोकल रूप से लागू करने पर एक व्यापक ट्यूटोरियल भी साझा करेंगे। यदि आप इस ट्यूटोरियल को पूरक करने के लिए व्यावहारिक सीखना चाहते हैं, तो हमारा Introduction to Kubernetes कोर्स देखें।
Kubernetes क्या है?
Kubernetes एक ओपन-सोर्स कंटेनर ऑर्केस्ट्रेशन प्लेटफ़ॉर्म है जो कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट, स्केलिंग और प्रबंधन को स्वचालित करता है। मूल रूप से Google द्वारा विकसित, यह बड़े पैमाने पर कंटेनर चलाने के लिए डिफ़ॉल्ट मानक बन गया है।
यह व्यक्तिगत कंटेनरों के प्रबंधन की जटिलता को अमूर्त कर देता है और डेवलपर्स को अपनी एप्लिकेशन बनाने और डिप्लॉय करने पर ध्यान केंद्रित करने देता है।
Kubernetes का उपयोग क्यों करें?
Kubernetes के उपयोग के कुछ प्रमुख लाभ यहां हैं:
कंटेनर ऑर्केस्ट्रेशन: क्लस्टर में कंटेनरों के वितरण और शेड्यूलिंग को स्वचालित करता है।
स्केलेबिलिटी और सेल्फ-हीलिंग: हॉरिज़ॉन्टल स्केलिंग (कंटेनरों की प्रतिकृति बनाना) और वर्टिकल स्केलिंग (संसाधन आबंटन समायोजित करना) को सरल बनाता है, वह भी सेल्फ-हीलिंग क्षमताओं के साथ।
हाई अवेलेबिलिटी: सुनिश्चित करता है कि कंटेनर (और इस प्रकार आपकी सेवाएं) कुछ नोड्स के फेल होने पर भी चालू रहें।
पोर्टेबिलिटी: अंतर्निहित इंफ्रास्ट्रक्चर को अमूर्त करता है, जिससे ऑन-प्रिमाइसेस और विभिन्न क्लाउड प्रदाताओं पर चलाना आसान हो जाता है।
कुशल संसाधन उपयोग: संसाधन उपयोग के आधार पर कंटेनरों का आकार बदलता है, जिससे आबंटन का अनुकूलन और लागत में कमी होती है।
Kubernetes विभिन्न अनुप्रयोगों में उपयोगी है, जैसे:
DevOps: कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट, स्केलिंग और प्रबंधन को स्वचालित करता है।
माइक्रोसर्विसेज: बड़े मोनोलिथिक एप्लिकेशनों को छोटे, प्रबंधनीय सर्विसेज में विभाजित करता है, जिससे फुर्ती और स्केलेबिलिटी बढ़ती है।
बिग डेटा: कंटेनरों का उपयोग करके जटिल बिग डेटा सिस्टम की डिप्लॉयमेंट और प्रबंधन को सरल बनाता है।
एज कंप्यूटिंग: एज डिवाइसेज़ पर Kubernetes चलाने में सक्षम बनाता है ताकि डेटा को उत्पत्ति के निकट ही प्रोसेस और विश्लेषित किया जा सके, लेटेंसी कम हो और प्रदर्शन बेहतर हो।
कंटीन्यूस डिलीवरी: Jenkins और GitLab जैसे टूल्स के साथ एकीकृत होकर स्वचालित कंटीन्यूस डिलीवरी पाइपलाइनों का समर्थन करता है।
यह समझने के लिए कि Kubernetes कैसे काम करता है, आपको इसके प्रमुख सिद्धांतों की अच्छी समझ होनी चाहिए।
इनमें 4 मुख्य अवधारणाएँ शामिल हैं:
क्लस्टर्स
पॉड्स
नेमस्पेसेज़
ऑपरेटर
हम नीचे इनके बारे में विस्तार से देखेंगे।
क्लस्टर्स
Kubernetes क्लस्टर्स नोड्स के समूह होते हैं, जो कि व्यक्तिगत मशीनें होती हैं जो Kubernetes सॉफ़्टवेयर चलाती हैं। क्लस्टर एप्लिकेशनों और सेवाओं के प्रबंधन के लिए कंट्रोल प्लेन के रूप में कार्य करता है।
एक सामान्य सेटअप में, क्लस्टर में एक मास्टर नोड और कई वर्कर नोड्स होते हैं। मास्टर नोड क्लस्टर के भीतर सभी गतिविधियों के समन्वयन के लिए ज़िम्मेदार होता है, जबकि वर्कर नोड्स कंटेनरों को चलाने और प्रबंधित करने का काम संभालते हैं।
पॉड्स
Kubernetes में पॉड्स डिप्लॉयमेंट की सबसे छोटी इकाई हैं। इनमें एक या अधिक कंटेनर हो सकते हैं, साथ ही साझा स्टोरेज संसाधन और नेटवर्किंग सेटिंग्स भी।
हर पॉड का अपना एक यूनिक IP पता होता है और वह इसी पते के माध्यम से उसी क्लस्टर के अन्य पॉड्स से संचार कर सकता है। इससे एप्लिकेशन के विभिन्न घटकों के बीच कुशल संचार संभव होता है।
पॉड्स सिंगल या मल्टी-कंटेनर दोनों हो सकते हैं और प्रत्येक के अपने उपयोग के मामले होते हैं।
सिंगल-कंटेनर पॉड्स: सबसे सामान्य प्रकार, जिसमें एक ही कंटेनर चलता है। यह सरल एप्लिकेशन या ऐसे माइक्रोसर्विसेज के लिए उपयोगी है जिन्हें केवल एक कंटेनर की आवश्यकता होती है।
मल्टी-कंटेनर पॉड्स: कई कंटेनर सह-स्थित होकर साथ चलते हैं। यह जटिल एप्लिकेशनों के लिए लाभकारी है जहां अलग-अलग कंटेनरों को एक-दूसरे से संचार और संसाधन साझा करने की आवश्यकता होती है।
नेमस्पेसेज़
नेमस्पेसेज़ एक ही क्लस्टर के भीतर संसाधनों को तार्किक रूप से विभाजित करने का तरीका प्रदान करते हैं। इससे संसाधनों के बेहतर संगठन और प्रबंधन के साथ-साथ अधिक कड़े सुरक्षा नियंत्रण संभव होते हैं।
नेमस्पेसेज़ का उपयोग विभिन्न परिवेशों जैसे डेवलपमेंट, स्टेजिंग और प्रोडक्शन को प्रबंधित करने के लिए भी किया जा सकता है। इससे सुनिश्चित होता है कि संसाधन पृथक रहें और अन्य परिवेशों में किए गए परिवर्तनों से प्रभावित न हों।
अपने क्लस्टर में नेमस्पेसेज़ देखने के लिए, आप यह कमांड उपयोग कर सकते हैं:
नेमस्पेसेज़ के बीच स्विच करने के लिए, निम्नलिखित का उपयोग करें
kubectl config set-context --current--namespace<namespace name>संचालित द्वारा
ऑपरेटर
ऑपरेटर ऐसे सॉफ़्टवेयर एक्सटेंशन हैं जो Kubernetes संसाधनों के प्रबंधन को स्वचालित करने में मदद करते हैं। वे कस्टम कंट्रोलर्स और API एक्सटेंशंस का उपयोग करके जटिल कार्यों को अधिक कुशलता और स्वतः प्रबंधित करते हैं।
ऑपरेटर का उपयोग करने से आपके क्लस्टर में एप्लिकेशनों और संसाधनों के प्रबंधन को काफी सरल बनाया जा सकता है। कार्यों को स्वचालित करने और उन्नत सुविधाएं प्रदान करने की उनकी क्षमता के साथ, वे Kubernetes उपयोगकर्ताओं के बीच तेजी से लोकप्रिय हो रहे हैं।
Kubernetes के कोर कंपोनेंट्स
अधिकांश Kubernetes परिवेशों में कोर कंपोनेंट्स का एक सेट होता है।
API सर्वर: यह कंपोनेंट सभी Kubernetes संसाधनों के लिए केंद्रीय प्रबंधन बिंदु के रूप में कार्य करता है। यह उपयोगकर्ताओं और अन्य कंपोनेंट्स से अनुरोध प्राप्त करता है और फिर क्लस्टर को प्रबंधित करने के लिए नीतियों को लागू करता है।
कंट्रोलर मैनेजर: कंट्रोलर मैनेजर क्लस्टर की वांछित स्थिति को बनाए रखने के लिए ज़िम्मेदार होता है, जो क्लस्टर के भीतर ऑब्जेक्ट्स में किए गए परिवर्तनों की लगातार निगरानी और सामंजस्य करता है।
etcd: यह एक वितरित की-वैल्यू स्टोर है जो Kubernetes के लिए प्राथमिक डेटा स्टोर के रूप में कार्य करता है। यह सभी क्लस्टर डेटा को संग्रहीत करता है और डेटा सुसंगतता और उपलब्धता सुनिश्चित करता है।
kubelet: यह एजेंट क्लस्टर के प्रत्येक नोड पर चलता है और कंटेनरों के प्रबंधन के लिए ज़िम्मेदार होता है, यह सुनिश्चित करते हुए कि वे अपनी निर्दिष्ट कॉन्फ़िगरेशन के अनुसार चल रहे हैं।
Kube Proxy: यह कंपोनेंट प्रत्येक नोड पर चलता है और नेटवर्क ट्रैफ़िक को सही कंटेनर तक रूट करने के लिए ज़िम्मेदार होता है।
Kubernetes कैसे काम करता है
जैसा कि हमने स्थापित किया है, Kubernetes क्लस्टर्स में कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट, स्केलिंग और प्रबंधन को स्वचालित करता है। यह बिना मैनुअल हस्तक्षेप के उच्च उपलब्धता, कुशल संसाधन उपयोग और सेल्फ-हीलिंग सुनिश्चित करता है।
व्यक्तिगत कंटेनरों का प्रबंधन करने के बजाय, Kubernetes उन्हें Pods में समूहित करता है और उन्हें वर्कर नोड्स में वितरित करता है, जो सिस्टम की वांछित स्थिति बनाए रखने के लिए कंट्रोल प्लेन के साथ संचार करते हैं।
संक्षेप में, Kubernetes इस प्रकार काम करता है:
एप्लिकेशन डिप्लॉयमेंट परिभाषित करें: आप YAML फ़ाइल में वांछित स्थिति निर्दिष्ट करते हैं, जिसमें रेप्लिकाज, संसाधन सीमाएँ और नेटवर्किंग नियम शामिल होते हैं।
वर्कलोड्स का शेड्यूल करें: शेड्यूलर संसाधन उपलब्धता के आधार पर पॉड्स को वर्कर नोड्स को असाइन करता है।
क्लस्टर स्टेट प्रबंधित करें: कंट्रोलर मैनेजर सुनिश्चित करता है कि सिस्टम सही संख्या में पॉड्स बनाए रखे, और असफल होने वालों को बदल दे।
नेटवर्किंग संभालें: Kubernetes, Services और Ingress कंट्रोलर्स के माध्यम से सेवाओं के बीच संचार और बाहरी एक्सेस का प्रबंधन करता है।
स्केल और सेल्फ-हील: Kubernetes मांग के आधार पर चल रहे पॉड्स की संख्या समायोजित करता है और विफल कंटेनरों को स्वतः रीस्टार्ट करता है।
इंफ्रास्ट्रक्चर की जटिलता को संभालकर, Kubernetes टीमों को डिप्लॉयमेंट प्रबंधन के बजाय एप्लिकेशन बनाने पर ध्यान केंद्रित करने देता है, जिससे यह विभिन्न उद्योगों में स्केलेबल, रेज़िलिएंट वर्कलोड्स के लिए आवश्यक बन जाता है।
सामान्य पारिभाषिक शब्दावली और अवधारणाएँ
आइए कुछ प्रमुख शब्दों और उनकी परिभाषाओं पर नज़र डालें जिन्हें आपको जानना चाहिए:
YAML मैनिफेस्ट्स: ये कॉन्फ़िगरेशन फ़ाइलें होती हैं जो आपकी एप्लिकेशन या इंफ्रास्ट्रक्चर की वांछित स्थिति परिभाषित करती हैं। इनका उपयोग Kubernetes में संसाधन बनाने, अपडेट करने और हटाने के लिए किया जा सकता है।
StatefulSets बनाम Deployments: ये Kubernetes में दो प्रकार के कंट्रोलर्स हैं जो पॉड्स के लाइफसाइकल का प्रबंधन करते हैं। Deployments आमतौर पर स्टेटलेस एप्लिकेशनों के लिए और StatefulSets स्टेटफुल एप्लिकेशनों के लिए उपयोग किए जाते हैं।
Services: ये क्लस्टर के भीतर आपकी एप्लिकेशन तक पहुंच के लिए स्थिर IP पता और DNS नाम प्रदान करती हैं। वे विभिन्न पॉड्स के बीच संचार भी सक्षम करती हैं।
ConfigMaps: इनका उपयोग की-वैल्यू पेयर्स में कॉन्फ़िगरेशन डेटा संग्रहीत करने के लिए किया जाता है, जिसे आपकी एप्लिकेशन एक्सेस कर सकती है।
Secrets: ConfigMaps के समान, इनका उपयोग पासवर्ड्स या API कीज़ जैसे संवेदनशील जानकारी संग्रहीत करने के लिए किया जाता है।
Kubernetes के साथ शुरुआत करना
Kubernetes के साथ काम करना भयावह लग सकता है, खासकर इसकी विभिन्न पारिभाषिक शब्दावली और अवधारणाओं को समझने के संदर्भ में। हालांकि, एक बार जब आप इन आवश्यक शब्दों को अच्छी तरह समझ लेते हैं, तो प्लेटफ़ॉर्म पर नेविगेट करना काफी आसान हो जाता है।
आइए Kubernetes के साथ उपयोग होने वाले कुछ टूल्स को देखते हैं।
शुरुआत करने वालों के लिए टूल्स
Kubernetes के शुरुआती उपयोगकर्ता के रूप में, सीधे क्लाउड पर एप्लिकेशन डिप्लॉय करना भारी पड़ सकता है। ऐसे में, आप लोकल रूप से डिप्लॉय करने के लिए कुछ सामान्य टूल्स का उपयोग कर सकते हैं।
यहां 2 सबसे आमतौर पर उपयोग होने वाले टूल्स हैं:
1. Minikube
Minikube एक हल्का Kubernetes इम्प्लीमेंटेशन है जो एकल होस्ट मशीन पर चल सकता है। यह आमतौर पर आपके लैपटॉप या वर्कस्टेशन पर एक वर्चुअल मशीन (VM) में सिंगल-नोड क्लस्टर चलाता है।
इसे क्यों उपयोग करें:
सेटअप और टियर-डाउन करना आसान।
लोकल डेवलपमेंट और प्रूफ़-ऑफ-कॉन्सेप्ट के लिए बढ़िया।
पूरे क्लस्टर की तुलना में न्यूनतम संसाधन उपयोग।
Minikube कैसे इंस्टॉल करें (Windows पर उदाहरण):
# Install via Windows Package Manager
winget install Kubernetes.minikubeसंचालित द्वारा
आपको निम्न इंस्टॉलेशन संदेश दिखाई देना चाहिए। यदि शर्तें और नियम स्वीकार करने के लिए पूछा जाए, तो “Y” से सहमति दें।
इसके बाद, Minikube पर एक सरल क्लस्टर शुरू करने के लिए, निम्न start कमांड का उपयोग करें:
# Start a single-node cluster
minikube startसंचालित द्वारा
यह जांचने के लिए कि क्लस्टर नोड सफलतापूर्वक शुरू हो गया है, get कमांड चलाएँ:
# Verify the cluster is running
kubectl get nodesसंचालित द्वारा
नोट: आपके लोकल मशीन पर kubectl API सर्वर इंस्टॉल होना चाहिए (कई मामलों में यह Minikube के साथ स्वतः इंस्टॉल हो जाता है)।
2. Kind (Kubernetes in Docker)
Kind का अर्थ है Kubernetes in Docker। यह Docker कंटेनरों को Kubernetes क्लस्टर में "नोड्स" के रूप में उपयोग करता है, और एक सरल, कंटेनर-आधारित लोकल क्लस्टर वातावरण प्रदान करता है।
इसे क्यों उपयोग करें:
कई परिदृश्यों में Minikube की तुलना में तेज़ स्टार्टअप।
एक साथ कई टेस्ट क्लस्टर बनाना आसान, CI/CD पाइपलाइनों के लिए आदर्श।
कम ओवरहेड के कारण अक्सर स्वचालित टेस्ट वातावरण में उपयोग किया जाता है।
Kind कैसे इंस्टॉल करें (Windows पर उदाहरण):
# Install Kind with Windows Package Manager
winget install Kubernetes.kindसंचालित द्वारा
इंस्टॉल होने के बाद, आप create cluster कमांड का उपयोग करके एक सरल क्लस्टर बना सकते हैं और उसे एक नाम दे सकते हैं।
# Create a basic cluster
kind create cluster --name example-clusterसंचालित द्वारा
यह जांचने के लिए कि आपका Kubernetes kind क्लस्टर शुरू हो गया है, निम्न get कमांड का उपयोग करें।
# Check running clusters
kind get clustersसंचालित द्वारा
आप kubectl इंटरफ़ेस के माध्यम से क्लस्टर के साथ इंटरेक्ट भी कर सकते हैं:
# Interact with your Kind cluster using kubectl
kubectl get nodesसंचालित द्वारा
नोट: सुनिश्चित करें कि Docker इंस्टॉल और चल रहा है।
क्लाउड प्रदाता (EKS, GKE, AKS)
क्लाउड पर Kubernetes चलाते समय, चुनने के लिए कुछ क्लाउड प्रदाता ये हैं:
1. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS एक प्रबंधित सेवा है जो आपको अपना कंट्रोल प्लेन या वर्कर नोड्स प्रबंधित किए बिना AWS पर Kubernetes चलाने में आसानी देती है। यह लोड बैलेंसिंग, स्टोरेज, ऑटो-स्केलिंग और मॉनिटरिंग जैसी अतिरिक्त सुविधाओं के लिए अन्य AWS सेवाओं के साथ एकीकृत होता है।
कुछ अतिरिक्त सुविधाएँ:
अन्य AWS सेवाओं (जैसे IAM, CloudWatch, ECR) के साथ इंटीग्रेशन प्रदान करता है।
प्लेटफ़ॉर्म में स्केलेबिलिटी और हाई अवेलेबिलिटी अंतर्निहित हैं।
2. Google GKE (Google Kubernetes Engine)
Google GKE Google Cloud Platform पर Kubernetes चलाने के लिए पूर्णतः प्रबंधित सेवा है। यह ऑटोमैटिक स्केलिंग, सेल्फ-हीलिंग क्षमताएँ और अन्य Google Cloud सेवाओं के साथ इंटीग्रेशन प्रदान करती है।
कुछ अतिरिक्त सुविधाएँ:
Cloud Logging, Cloud Monitoring और Container Registry जैसे GCP सेवाओं के साथ गहरा इंटीग्रेशन।
ऑटोपायलट मोड प्रदान करता है, जो क्लस्टर इंफ्रास्ट्रक्चर को स्वतः प्रबंधित करता है।
3. Azure AKS (Azure Kubernetes Service)
Azure AKS सर्वरलेस Kubernetes क्लस्टर्स प्रदान करता है जो Azure Storage, Networking और Load Balancing जैसी अन्य Azure सेवाओं के साथ पूर्णतः एकीकृत हैं। इसमें Helm और Prometheus जैसे DevOps टूल्स के लिए बिल्ट-इन सपोर्ट भी है।
कुछ अतिरिक्त सुविधाएँ:
Azure Active Directory, Azure Monitor, Container Registry आदि के साथ इंटीग्रेट होता है।
Azure Container Instances का उपयोग करके सर्वरलेस Kubernetes (वर्चुअल नोड्स) प्रदान करता है।
Kubernetes सीखने के संसाधन
पहली बार Kubernetes सीखना भारी लग सकता है, लेकिन शुरुआत करने में मदद के लिए बहुत से संसाधन उपलब्ध हैं।
Kubernetes में एप्लिकेशन चलाने के लिए, आप एक संरचित वर्कफ़्लो का पालन करते हैं जिसमें क्लस्टर सेट करना, कंटेनराइज्ड एप्लिकेशन डिप्लॉय करना, उसे एक सेवा के रूप में एक्सपोज़ करना और आवश्यकता अनुसार स्केल करना शामिल है।
हमने इस प्रक्रिया को अपने Kubernetes ट्यूटोरियल में विस्तार से कवर किया है, लेकिन यहां एक उच्च-स्तरीय सारांश है:
Kubernetes क्लस्टर सेट करें
टेस्टिंग और डेवलपमेंट के लिए लोकल क्लस्टर बनाने हेतु Minikube का उपयोग करें। Minikube इंस्टॉल करें और अपना क्लस्टर इस प्रकार शुरू करें:
Kubernetes बड़े पैमाने पर कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट और प्रबंधन के लिए एक शक्तिशाली प्लेटफ़ॉर्म है, जो डेटा इंजीनियरों के लिए लोचदार और विश्वसनीय डेटा प्रोसेसिंग वातावरण की आवश्यकता को पूरा करता है।
यदि आप Kubernetes के बारे में और सीखने में रुचि रखते हैं, तो हमारा Introduction to Kubernetes कोर्स शुरू करने के लिए एकदम उपयुक्त है।
Kubernetes FAQs
क्या Kubernetes और Docker एक ही हैं?⌄
नहीं, Kubernetes एक कंटेनर ऑर्केस्ट्रेशन टूल है जबकि Docker एक कंटेनराइज़ेशन प्लेटफ़ॉर्म है। वे कंटेनरों को प्रबंधित और डिप्लॉय करने के लिए साथ काम करते हैं, लेकिन उनके उद्देश्य अलग-अलग हैं।
Kubernetes का उपयोग करने के क्या लाभ हैं?⌄
Kubernetes कंटेनरों के प्रबंधन और डिप्लॉयमेंट को आसान बनाता है, एप्लिकेशनों की स्केलेबिलिटी और उपलब्धता में सुधार करता है, और स्वचालित अपडेट व रोलबैक का समर्थन करता है।
क्या Kubernetes किसी भी प्रकार के परिवेश में उपयोग किया जा सकता है?⌄
हाँ, Kubernetes का उपयोग ऑन-प्रिमाइसेस और क्लाउड दोनों परिवेशों में किया जा सकता है। यह अत्यंत बहुमुखी है और विभिन्न इंफ्रास्ट्रक्चर सेटअप्स के अनुरूप ढल सकता है।
क्या Kubernetes सीखना कठिन है?⌄
हालाँकि सीखने में समय लगता है, लेकिन ऑनलाइन बहुत से संसाधन उपलब्ध हैं, जैसे DataCamp और स्वयं Kubernetes के स्टार्टर गाइड्स।
Kubernetes की आर्किटेक्चर क्या है?⌄
Kubernetes क्लाइंट-सर्वर आर्किटेक्चर का पालन करता है, जिसमें मास्टर नोड क्लस्टर को नियंत्रित करता है और वर्कर नोड्स एप्लिकेशन वर्कलोड्स चलाते हैं। यह पूरे सिस्टम के कुशल संचार और प्रबंधन की अनुमति देता है।
मैं ऑस्टिन हूँ—एक ब्लॉगर और टेक राइटर, जिसके पास स्वास्थ्य सेवा क्षेत्र में डेटा वैज्ञानिक और डेटा विश्लेषक के रूप में वर्षों का अनुभव है। जीवविज्ञान की पृष्ठभूमि से अपनी टेक यात्रा शुरू करने के बाद, अब मैं अपने टेक ब्लॉग के माध्यम से दूसरों को भी यही बदलाव करने में मदद करता हूँ। प्रौद्योगिकी के प्रति मेरे जुनून ने मुझे दर्जनों SaaS कंपनियों के लिए लिखने के लिए प्रेरित किया है, जहाँ मैं अपनी अनुभूतियाँ साझा करता हूँ और दूसरों को प्रेरित करता हूँ।
यदि आप क्लाउड कंप्यूटिंग के बढ़ते प्रचलन से परिचित हैं, तो आपने Kubernetes के बारे में अवश्य सुना होगा। आधुनिक एप्लिकेशन विकास में, विभिन्न इंफ्रास्ट्रक्चर सेटअप्स को प्रबंधित करने के लिए यह सीखने का एक प्रमुख टूल है।
इस परिचयात्मक लेख में, हम Kubernetes और उसके घटकों का एक अवलोकन देंगे, साथ ही इसे लोकल रूप से लागू करने पर एक व्यापक ट्यूटोरियल भी साझा करेंगे। यदि आप इस ट्यूटोरियल को पूरक करने के लिए व्यावहारिक सीखना चाहते हैं, तो हमारा Introduction to Kubernetes कोर्स देखें।
Kubernetes क्या है?
Kubernetes एक ओपन-सोर्स कंटेनर ऑर्केस्ट्रेशन प्लेटफ़ॉर्म है जो कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट, स्केलिंग और प्रबंधन को स्वचालित करता है। मूल रूप से Google द्वारा विकसित, यह बड़े पैमाने पर कंटेनर चलाने के लिए डिफ़ॉल्ट मानक बन गया है।
यह व्यक्तिगत कंटेनरों के प्रबंधन की जटिलता को अमूर्त कर देता है और डेवलपर्स को अपनी एप्लिकेशन बनाने और डिप्लॉय करने पर ध्यान केंद्रित करने देता है।
Kubernetes का उपयोग क्यों करें?
Kubernetes के उपयोग के कुछ प्रमुख लाभ यहां हैं:
Kubernetes विभिन्न अनुप्रयोगों में उपयोगी है, जैसे:
Kubernetes के प्रमुख सिद्धांत
यह समझने के लिए कि Kubernetes कैसे काम करता है, आपको इसके प्रमुख सिद्धांतों की अच्छी समझ होनी चाहिए।
इनमें 4 मुख्य अवधारणाएँ शामिल हैं:
हम नीचे इनके बारे में विस्तार से देखेंगे।
क्लस्टर्स
Kubernetes क्लस्टर्स नोड्स के समूह होते हैं, जो कि व्यक्तिगत मशीनें होती हैं जो Kubernetes सॉफ़्टवेयर चलाती हैं। क्लस्टर एप्लिकेशनों और सेवाओं के प्रबंधन के लिए कंट्रोल प्लेन के रूप में कार्य करता है।
एक सामान्य सेटअप में, क्लस्टर में एक मास्टर नोड और कई वर्कर नोड्स होते हैं। मास्टर नोड क्लस्टर के भीतर सभी गतिविधियों के समन्वयन के लिए ज़िम्मेदार होता है, जबकि वर्कर नोड्स कंटेनरों को चलाने और प्रबंधित करने का काम संभालते हैं।
पॉड्स
Kubernetes में पॉड्स डिप्लॉयमेंट की सबसे छोटी इकाई हैं। इनमें एक या अधिक कंटेनर हो सकते हैं, साथ ही साझा स्टोरेज संसाधन और नेटवर्किंग सेटिंग्स भी।
हर पॉड का अपना एक यूनिक IP पता होता है और वह इसी पते के माध्यम से उसी क्लस्टर के अन्य पॉड्स से संचार कर सकता है। इससे एप्लिकेशन के विभिन्न घटकों के बीच कुशल संचार संभव होता है।
पॉड्स सिंगल या मल्टी-कंटेनर दोनों हो सकते हैं और प्रत्येक के अपने उपयोग के मामले होते हैं।
नेमस्पेसेज़
नेमस्पेसेज़ एक ही क्लस्टर के भीतर संसाधनों को तार्किक रूप से विभाजित करने का तरीका प्रदान करते हैं। इससे संसाधनों के बेहतर संगठन और प्रबंधन के साथ-साथ अधिक कड़े सुरक्षा नियंत्रण संभव होते हैं।
नेमस्पेसेज़ का उपयोग विभिन्न परिवेशों जैसे डेवलपमेंट, स्टेजिंग और प्रोडक्शन को प्रबंधित करने के लिए भी किया जा सकता है। इससे सुनिश्चित होता है कि संसाधन पृथक रहें और अन्य परिवेशों में किए गए परिवर्तनों से प्रभावित न हों।
अपने क्लस्टर में नेमस्पेसेज़ देखने के लिए, आप यह कमांड उपयोग कर सकते हैं:
नेमस्पेसेज़ के बीच स्विच करने के लिए, निम्नलिखित का उपयोग करें
ऑपरेटर
ऑपरेटर ऐसे सॉफ़्टवेयर एक्सटेंशन हैं जो Kubernetes संसाधनों के प्रबंधन को स्वचालित करने में मदद करते हैं। वे कस्टम कंट्रोलर्स और API एक्सटेंशंस का उपयोग करके जटिल कार्यों को अधिक कुशलता और स्वतः प्रबंधित करते हैं।
कुछ लोकप्रिय ऑपरेटर शामिल हैं:
ऑपरेटर का उपयोग करने से आपके क्लस्टर में एप्लिकेशनों और संसाधनों के प्रबंधन को काफी सरल बनाया जा सकता है। कार्यों को स्वचालित करने और उन्नत सुविधाएं प्रदान करने की उनकी क्षमता के साथ, वे Kubernetes उपयोगकर्ताओं के बीच तेजी से लोकप्रिय हो रहे हैं।
Kubernetes के कोर कंपोनेंट्स
अधिकांश Kubernetes परिवेशों में कोर कंपोनेंट्स का एक सेट होता है।
स्रोत: Kubernetes
यहां कंपोनेंट्स की सूची और उनके कार्य दिए गए हैं:
Kubernetes कैसे काम करता है
जैसा कि हमने स्थापित किया है, Kubernetes क्लस्टर्स में कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट, स्केलिंग और प्रबंधन को स्वचालित करता है। यह बिना मैनुअल हस्तक्षेप के उच्च उपलब्धता, कुशल संसाधन उपयोग और सेल्फ-हीलिंग सुनिश्चित करता है।
व्यक्तिगत कंटेनरों का प्रबंधन करने के बजाय, Kubernetes उन्हें Pods में समूहित करता है और उन्हें वर्कर नोड्स में वितरित करता है, जो सिस्टम की वांछित स्थिति बनाए रखने के लिए कंट्रोल प्लेन के साथ संचार करते हैं।
संक्षेप में, Kubernetes इस प्रकार काम करता है:
इंफ्रास्ट्रक्चर की जटिलता को संभालकर, Kubernetes टीमों को डिप्लॉयमेंट प्रबंधन के बजाय एप्लिकेशन बनाने पर ध्यान केंद्रित करने देता है, जिससे यह विभिन्न उद्योगों में स्केलेबल, रेज़िलिएंट वर्कलोड्स के लिए आवश्यक बन जाता है।
सामान्य पारिभाषिक शब्दावली और अवधारणाएँ
आइए कुछ प्रमुख शब्दों और उनकी परिभाषाओं पर नज़र डालें जिन्हें आपको जानना चाहिए:
Kubernetes के साथ शुरुआत करना
Kubernetes के साथ काम करना भयावह लग सकता है, खासकर इसकी विभिन्न पारिभाषिक शब्दावली और अवधारणाओं को समझने के संदर्भ में। हालांकि, एक बार जब आप इन आवश्यक शब्दों को अच्छी तरह समझ लेते हैं, तो प्लेटफ़ॉर्म पर नेविगेट करना काफी आसान हो जाता है।
आइए Kubernetes के साथ उपयोग होने वाले कुछ टूल्स को देखते हैं।
शुरुआत करने वालों के लिए टूल्स
Kubernetes के शुरुआती उपयोगकर्ता के रूप में, सीधे क्लाउड पर एप्लिकेशन डिप्लॉय करना भारी पड़ सकता है। ऐसे में, आप लोकल रूप से डिप्लॉय करने के लिए कुछ सामान्य टूल्स का उपयोग कर सकते हैं।
यहां 2 सबसे आमतौर पर उपयोग होने वाले टूल्स हैं:
1. Minikube
Minikube एक हल्का Kubernetes इम्प्लीमेंटेशन है जो एकल होस्ट मशीन पर चल सकता है। यह आमतौर पर आपके लैपटॉप या वर्कस्टेशन पर एक वर्चुअल मशीन (VM) में सिंगल-नोड क्लस्टर चलाता है।
इसे क्यों उपयोग करें:
Minikube कैसे इंस्टॉल करें (Windows पर उदाहरण):
आपको निम्न इंस्टॉलेशन संदेश दिखाई देना चाहिए। यदि शर्तें और नियम स्वीकार करने के लिए पूछा जाए, तो “Y” से सहमति दें।
इसके बाद, Minikube पर एक सरल क्लस्टर शुरू करने के लिए, निम्न
startकमांड का उपयोग करें:यह जांचने के लिए कि क्लस्टर नोड सफलतापूर्वक शुरू हो गया है,
getकमांड चलाएँ:नोट: आपके लोकल मशीन पर
kubectlAPI सर्वर इंस्टॉल होना चाहिए (कई मामलों में यह Minikube के साथ स्वतः इंस्टॉल हो जाता है)।2. Kind (Kubernetes in Docker)
Kind का अर्थ है Kubernetes in Docker। यह Docker कंटेनरों को Kubernetes क्लस्टर में "नोड्स" के रूप में उपयोग करता है, और एक सरल, कंटेनर-आधारित लोकल क्लस्टर वातावरण प्रदान करता है।
इसे क्यों उपयोग करें:
Kind कैसे इंस्टॉल करें (Windows पर उदाहरण):
इंस्टॉल होने के बाद, आप
create clusterकमांड का उपयोग करके एक सरल क्लस्टर बना सकते हैं और उसे एक नाम दे सकते हैं।यह जांचने के लिए कि आपका Kubernetes kind क्लस्टर शुरू हो गया है, निम्न
getकमांड का उपयोग करें।आप
kubectlइंटरफ़ेस के माध्यम से क्लस्टर के साथ इंटरेक्ट भी कर सकते हैं:नोट: सुनिश्चित करें कि Docker इंस्टॉल और चल रहा है।
क्लाउड प्रदाता (EKS, GKE, AKS)
क्लाउड पर Kubernetes चलाते समय, चुनने के लिए कुछ क्लाउड प्रदाता ये हैं:
1. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS एक प्रबंधित सेवा है जो आपको अपना कंट्रोल प्लेन या वर्कर नोड्स प्रबंधित किए बिना AWS पर Kubernetes चलाने में आसानी देती है। यह लोड बैलेंसिंग, स्टोरेज, ऑटो-स्केलिंग और मॉनिटरिंग जैसी अतिरिक्त सुविधाओं के लिए अन्य AWS सेवाओं के साथ एकीकृत होता है।
कुछ अतिरिक्त सुविधाएँ:
2. Google GKE (Google Kubernetes Engine)
Google GKE Google Cloud Platform पर Kubernetes चलाने के लिए पूर्णतः प्रबंधित सेवा है। यह ऑटोमैटिक स्केलिंग, सेल्फ-हीलिंग क्षमताएँ और अन्य Google Cloud सेवाओं के साथ इंटीग्रेशन प्रदान करती है।
कुछ अतिरिक्त सुविधाएँ:
3. Azure AKS (Azure Kubernetes Service)
Azure AKS सर्वरलेस Kubernetes क्लस्टर्स प्रदान करता है जो Azure Storage, Networking और Load Balancing जैसी अन्य Azure सेवाओं के साथ पूर्णतः एकीकृत हैं। इसमें Helm और Prometheus जैसे DevOps टूल्स के लिए बिल्ट-इन सपोर्ट भी है।
कुछ अतिरिक्त सुविधाएँ:
Kubernetes सीखने के संसाधन
पहली बार Kubernetes सीखना भारी लग सकता है, लेकिन शुरुआत करने में मदद के लिए बहुत से संसाधन उपलब्ध हैं।
यहां कुछ अनुशंसित संसाधन हैं:
Kubernetes डिप्लॉयमेंट उदाहरण
Kubernetes में एप्लिकेशन चलाने के लिए, आप एक संरचित वर्कफ़्लो का पालन करते हैं जिसमें क्लस्टर सेट करना, कंटेनराइज्ड एप्लिकेशन डिप्लॉय करना, उसे एक सेवा के रूप में एक्सपोज़ करना और आवश्यकता अनुसार स्केल करना शामिल है।
हमने इस प्रक्रिया को अपने Kubernetes ट्यूटोरियल में विस्तार से कवर किया है, लेकिन यहां एक उच्च-स्तरीय सारांश है:
Kubernetes क्लस्टर सेट करें
टेस्टिंग और डेवलपमेंट के लिए लोकल क्लस्टर बनाने हेतु Minikube का उपयोग करें। Minikube इंस्टॉल करें और अपना क्लस्टर इस प्रकार शुरू करें:
एप्लिकेशन डिप्लॉय करें
अपनी एप्लिकेशन की वांछित स्थिति को Deployment YAML फ़ाइल में परिभाषित करें। उदाहरण के लिए, Nginx वेब सर्वर को डिप्लॉय करना इस प्रकार दिखता है:
डिप्लॉयमेंट लागू करें:
एप्लिकेशन को सेवा के रूप में एक्सपोज़ करें
एप्लिकेशन को सुलभ बनाने के लिए, निम्न का उपयोग करके एक Service बनाएँ:
बाहरी URL प्राप्त करें और अपने ब्राउज़र में ऐप खोलें:
एप्लिकेशन को स्केल और मॉनिटर करें
Kubernetes आपको एप्लिकेशनों को आसानी से स्केल करने देता है। रेप्लिकाज बढ़ाने के लिए:
चल रहे पॉड्स देखें:
डीबगिंग के लिए लॉग देखें:
उन्नत प्रोजेक्ट्स के लिए आगे खोजबीन करने हेतु कुछ उदाहरण यहां हैं:
निष्कर्ष
Kubernetes बड़े पैमाने पर कंटेनराइज्ड एप्लिकेशनों की डिप्लॉयमेंट और प्रबंधन के लिए एक शक्तिशाली प्लेटफ़ॉर्म है, जो डेटा इंजीनियरों के लिए लोचदार और विश्वसनीय डेटा प्रोसेसिंग वातावरण की आवश्यकता को पूरा करता है।
यदि आप Kubernetes के बारे में और सीखने में रुचि रखते हैं, तो हमारा Introduction to Kubernetes कोर्स शुरू करने के लिए एकदम उपयुक्त है।