कुबेरनेट्स वर्कशॉप
- कुबेरनेट्स वर्कशॉप: शुरुआती के लिए सम्पूर्ण गाइड
परिचय
कुबेरनेट्स (Kubernetes), जिसे अक्सर K8s के रूप में संक्षिप्त किया जाता है, एक ओपन-सोर्स कंटेनर ऑर्केस्ट्रेशन प्रणाली है जो एप्लीकेशनों को डिप्लॉय, स्केल और मैनेज करने को स्वचालित करती है। यह गूगल द्वारा विकसित किया गया था और अब क्लाउड नेटिव कंप्यूटिंग फाउंडेशन (CNCF) द्वारा अनुरक्षित है। कुबेरनेट्स आधुनिक एप्लीकेशन डेवलपमेंट और डिप्लॉयमेंट के लिए एक अनिवार्य उपकरण बन गया है, खासकर माइक्रोसर्विस आर्किटेक्चर में। यह लेख शुरुआती लोगों के लिए कुबेरनेट्स की मूल अवधारणाओं, आर्किटेक्चर और बुनियादी कार्यों को समझने के लिए एक व्यापक गाइड प्रदान करता है।
कुबेरनेट्स क्यों?
कुबेरनेट्स के उपयोग के कई फायदे हैं:
- पोर्टेबिलिटी: कुबेरनेट्स विभिन्न वातावरणों में एप्लीकेशनों को डिप्लॉय करने की क्षमता प्रदान करता है, चाहे वह ऑन-प्रिमाइसेस, पब्लिक क्लाउड, या हाइब्रिड क्लाउड हो।
- स्केलेबिलिटी: कुबेरनेट्स एप्लीकेशनों को आसानी से स्केल करने की अनुमति देता है, मांग के अनुसार संसाधनों को स्वचालित रूप से जोड़ना या घटाना।
- स्वचालन: कुबेरनेट्स डिप्लॉयमेंट, रोलबैक, और हेल्थ मॉनिटरिंग सहित कई कार्यों को स्वचालित करता है, जिससे ऑपरेशनल ओवरहेड कम होता है।
- उच्च उपलब्धता: कुबेरनेट्स एप्लीकेशनों को विफलताओं से बचाने के लिए सेल्फ-हीलिंग क्षमताओं प्रदान करता है।
- संसाधन उपयोग: कुबेरनेट्स संसाधनों का कुशलतापूर्वक उपयोग करता है, जिससे लागत कम होती है।
कुबेरनेट्स की मूलभूत अवधारणाएँ
कुबेरनेट्स को समझने के लिए, कुछ मूलभूत अवधारणाओं को जानना आवश्यक है:
- पॉड (Pod): कुबेरनेट्स में डिप्लॉयमेंट की सबसे छोटी इकाई एक पॉड है। एक पॉड में एक या अधिक कंटेनर हो सकते हैं जो एक ही नेटवर्क नेमस्पेस और स्टोरेज वॉल्यूम साझा करते हैं।
- डिप्लॉयमेंट (Deployment): डिप्लॉयमेंट पॉड की वांछित स्थिति को परिभाषित करता है, जैसे कि कितने रेप्लिका पॉड चलाने हैं और उन्हें कैसे अपडेट करना है।
- सर्विस (Service): सर्विस पॉड के एक सेट को एक स्थिर आईपी एड्रेस और डीएनएस नाम के माध्यम से उजागर करता है, जिससे अन्य एप्लीकेशन या उपयोगकर्ता उनसे जुड़ सकते हैं।
- नेमस्पेस (Namespace): नेमस्पेस कुबेरनेट्स क्लस्टर के भीतर संसाधनों को अलग करने का एक तरीका है। यह विभिन्न टीमों या परियोजनाओं के लिए संसाधनों को व्यवस्थित करने में उपयोगी है।
- वॉल्यूम (Volume): वॉल्यूम डेटा को स्टोर करने के लिए उपयोग किए जाते हैं और पॉड के जीवनचक्र से स्वतंत्र होते हैं।
- नोड (Node): नोड एक वर्कर मशीन है जो कुबेरनेट्स क्लस्टर का हिस्सा है। यह पॉड को चलाता है।
- क्लस्टर (Cluster): क्लस्टर कई नोडों का एक समूह है जो एक साथ काम करते हैं।
कुबेरनेट्स आर्किटेक्चर
कुबेरनेट्स आर्किटेक्चर में दो मुख्य घटक होते हैं:
- कंट्रोल प्लेन (Control Plane): कंट्रोल प्लेन क्लस्टर के समग्र प्रबंधन के लिए जिम्मेदार है। इसमें शामिल हैं:
* एपीआई सर्वर (API Server): कुबेरनेट्स एपीआई के माध्यम से क्लस्टर के साथ इंटरैक्ट करने के लिए एक फ्रंटएंड प्रदान करता है। * एटसीडी (etcd): क्लस्टर की स्थिति को स्टोर करने के लिए एक डिस्ट्रीब्यूटेड की-वैल्यू स्टोर। * शेड्यूलर (Scheduler): पॉड को नोड पर असाइन करने के लिए जिम्मेदार। * कंट्रोलर मैनेजर (Controller Manager): क्लस्टर की स्थिति को बनाए रखने के लिए विभिन्न कंट्रोलर चलाता है।
- वर्कर नोड्स (Worker Nodes): वर्कर नोड्स एप्लीकेशनों को चलाने के लिए जिम्मेदार हैं। प्रत्येक नोड में शामिल हैं:
* कुबेलेट (Kubelet): कंट्रोल प्लेन से निर्देशों को निष्पादित करता है और पॉड को चलाता है। * कंटेनर रनटाइम (Container Runtime): कंटेनर को चलाने के लिए जिम्मेदार (जैसे, डॉकर, कंटेनरडी )। * कुबे-प्रॉक्सी (Kube-proxy): नेटवर्क प्रॉक्सी और लोड बैलेंसिंग प्रदान करता है।
**विवरण** | | क्लस्टर प्रबंधन | | कुबेरनेट्स एपीआई के माध्यम से इंटरैक्शन | | क्लस्टर स्थिति भंडारण | | पॉड असाइनमेंट | | क्लस्टर स्थिति रखरखाव | | एप्लीकेशन निष्पादन | | पॉड निष्पादन | | कंटेनर प्रबंधन | | नेटवर्क प्रॉक्सी | |
कुबेरनेट्स के साथ शुरुआत करना
कुबेरनेट्स के साथ शुरुआत करने के लिए, आपको निम्नलिखित टूल की आवश्यकता होगी:
- kubectl: कुबेरनेट्स क्लस्टर के साथ इंटरैक्ट करने के लिए कमांड-लाइन टूल।
- एक कुबेरनेट्स क्लस्टर: आप एक स्थानीय क्लस्टर स्थापित कर सकते हैं (जैसे, मिनिक्यूब, किंडल) या क्लाउड प्रदाता द्वारा प्रबंधित क्लस्टर का उपयोग कर सकते हैं (जैसे, जीकेई, ईकेएस, एजेडएस)।
बुनियादी kubectl कमांड
यहां कुछ बुनियादी kubectl कमांड दिए गए हैं:
- kubectl get pods: सभी पॉड की सूची प्राप्त करें।
- kubectl create deployment <deployment-name> --image=<image-name>: एक नया डिप्लॉयमेंट बनाएँ।
- kubectl expose deployment <deployment-name> --type=LoadBalancer --port=80 --target-port=8080: एक सर्विस बनाएँ जो डिप्लॉयमेंट को उजागर करे।
- kubectl scale deployment <deployment-name> --replicas=<number>: डिप्लॉयमेंट के रेप्लिका की संख्या को स्केल करें।
- kubectl delete deployment <deployment-name>: एक डिप्लॉयमेंट को हटाएँ।
- kubectl logs <pod-name>: पॉड के लॉग देखें।
एक साधारण एप्लीकेशन डिप्लॉय करना
मान लीजिए कि आपके पास एक साधारण वेब एप्लीकेशन है जो डॉकर इमेज के रूप में पैकेज किया गया है। आप इस एप्लीकेशन को कुबेरनेट्स पर डिप्लॉय करने के लिए निम्नलिखित चरणों का पालन कर सकते हैं:
1. एक डिप्लॉयमेंट कॉन्फ़िगरेशन फ़ाइल (deployment.yaml) बनाएँ:
```yaml apiVersion: apps/v1 kind: Deployment metadata:
name: my-app-deployment
spec:
replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app-container image: your-docker-image:latest ports: - containerPort: 8080
```
2. डिप्लॉयमेंट बनाएँ:
```bash kubectl apply -f deployment.yaml ```
3. एक सर्विस कॉन्फ़िगरेशन फ़ाइल (service.yaml) बनाएँ:
```yaml apiVersion: v1 kind: Service metadata:
name: my-app-service
spec:
type: LoadBalancer selector: app: my-app ports: - port: 80 targetPort: 8080
```
4. सर्विस बनाएँ:
```bash kubectl apply -f service.yaml ```
5. सर्विस के बाहरी आईपी एड्रेस का पता लगाएँ और अपने ब्राउज़र में एप्लीकेशन एक्सेस करें।
कुबेरनेट्स में नेटवर्किंग
कुबेरनेट्स में नेटवर्किंग एक महत्वपूर्ण पहलू है। पॉड के बीच संचार और बाहरी एक्सेस को प्रबंधित करने के लिए कई अवधारणाएँ शामिल हैं:
- क्लस्टर आईपी (ClusterIP): प्रत्येक सर्विस को एक क्लस्टर आईपी मिलता है, जिसका उपयोग क्लस्टर के भीतर से सर्विस को एक्सेस करने के लिए किया जा सकता है।
- नोड पोर्ट (NodePort): नोड पोर्ट सर्विस को प्रत्येक नोड के आईपी एड्रेस पर एक पोर्ट के माध्यम से उजागर करता है।
- लोड बैलेंसर (LoadBalancer): लोड बैलेंसर सर्विस को बाहरी रूप से उजागर करता है और ट्रैफ़िक को पॉड के बीच वितरित करता है।
- इनग्रेस (Ingress): इनग्रेस एक एपीआई ऑब्जेक्ट है जो बाहरी ट्रैफ़िक को क्लस्टर के भीतर की सेवाओं के लिए रूट करता है।
कुबेरनेट्स में स्टोरेज
कुबेरनेट्स में स्टोरेज विभिन्न प्रकार के वॉल्यूम का समर्थन करता है:
- एमटीपी (EmptyDir): एक अस्थायी वॉल्यूम जो पॉड के जीवनचक्र के दौरान मौजूद रहता है।
- होस्ट पथ (HostPath): नोड पर एक फ़ाइल या निर्देशिका को माउंट करता है।
- परसिस्टेंट वॉल्यूम (PersistentVolume): क्लस्टर में स्टोरेज का एक टुकड़ा, जो पॉड के जीवनचक्र से स्वतंत्र है।
- परसिस्टेंट वॉल्यूम क्लेम (PersistentVolumeClaim): स्टोरेज के लिए एक अनुरोध, जो एक परसिस्टेंट वॉल्यूम से बंधा हो सकता है।
कुबेरनेट्स में मॉनिटरिंग और लॉगिंग
कुबेरनेट्स में एप्लीकेशनों की मॉनिटरिंग और लॉगिंग महत्वपूर्ण है। आप विभिन्न टूल का उपयोग कर सकते हैं:
- प्रोमेथियस (Prometheus): एक ओपन-सोर्स मॉनिटरिंग सिस्टम।
- ग्राफाना (Grafana): एक डेटा विज़ुअलाइज़ेशन टूल।
- ईएलके स्टैक (ELK Stack): (इलास्टिकसर्च, लॉगस्टैश, किबाना) लॉगिंग और विश्लेषण के लिए।
उन्नत अवधारणाएँ
कुबेरनेट्स में कई उन्नत अवधारणाएँ हैं, जिनमें शामिल हैं:
- हेल्म (Helm): कुबेरनेट्स एप्लीकेशनों को पैकेज, कॉन्फ़िगर और डिप्लॉय करने के लिए एक पैकेज मैनेजर।
- ऑपरेटर (Operator): कस्टम कंट्रोलर जो एप्लीकेशनों को स्वचालित रूप से प्रबंधित करते हैं।
- सर्विस मेश (Service Mesh): सर्विस-टू-सर्विस संचार को प्रबंधित करने के लिए एक इंफ्रास्ट्रक्चर लेयर (जैसे, इस्टिओ, लिंक्ड)।
- कुबेरनेट्स फेडरेशन (Kubernetes Federation): कई क्लस्टरों में एप्लीकेशनों को डिप्लॉय और प्रबंधित करने के लिए।
निष्कर्ष
कुबेरनेट्स एक शक्तिशाली और लचीला कंटेनर ऑर्केस्ट्रेशन सिस्टम है जो आधुनिक एप्लीकेशन डेवलपमेंट और डिप्लॉयमेंट को सरल बनाता है। यह लेख कुबेरनेट्स की मूल अवधारणाओं, आर्किटेक्चर और बुनियादी कार्यों का परिचय प्रदान करता है। कुबेरनेट्स को सीखने और मास्टर करने के लिए अभ्यास और प्रयोग आवश्यक है।
आगे की पढ़ाई के लिए संसाधन
कंटेनर, डॉकर, माइक्रोसर्विस आर्किटेक्चर, क्लाउड नेटिव कंप्यूटिंग फाउंडेशन, मिनिक्यूब, किंडल, जीकेई, ईकेएस, एजेडएस, इलास्टिकसर्च, प्रोमेथियस, ग्राफाना, इस्टिओ, लिंक्ड, ऑन-प्रिमाइसेस, पब्लिक क्लाउड, हाइब्रिड क्लाउड, कंटेनरडी, तकनीकी विश्लेषण, वॉल्यूम विश्लेषण, रणनीतियाँ।
अभी ट्रेडिंग शुरू करें
IQ Option पर रजिस्टर करें (न्यूनतम जमा $10) Pocket Option में खाता खोलें (न्यूनतम जमा $5)
हमारे समुदाय में शामिल हों
हमारे Telegram चैनल @strategybin से जुड़ें और प्राप्त करें: ✓ दैनिक ट्रेडिंग सिग्नल ✓ विशेष रणनीति विश्लेषण ✓ बाजार की प्रवृत्ति पर अलर्ट ✓ शुरुआती के लिए शिक्षण सामग्री