हेलो मिनीक्यूब
यह ट्यूटोरियल आपको मिनिक्यूब और काटाकोडा का उपयोग करते हुए कुबेरनेट्स पर एक साधारण ऐप चलाने का तरीका दिखाता है। काटाकोडा आपके ब्राउज़र पर मुफ़्त कुबेरनेट्स वातावरण प्रदान करता है।
उद्देश्य
- मिनीक्यूब में एक नमूना एप्लीकेशन डेप्लॉय करें।
- ऐप को चलाएं।
- एप्लिकेशन लॉग देखें।
शुरू करने से पहले
यह ट्यूटोरियल एक कंटेनर इमेज प्रदान करता है जो सभी अनुरोधों को प्रतिध्वनित करने के लिए NGINX का उपयोग करता है।
एक मिनीक्यूब क्लस्टर बनाएं
Launch Terminal पर क्लिक करें।
minikube start चलाएँ। इससे पहले कि आप minikube dashboard चलाएं, आपको एक नया टर्मिनल खोलना चाहिए, वहां minikube dashboard शुरू करना चाहिए, और फिर मुख्य टर्मिनल पर वापस जाना चाहिए।ब्राउज़र में कुबेरनेट्स डैशबोर्ड खोलें:
minikube dashboardकेवल काटाकोडा वातावरण के लिए: टर्मिनल फलक के शीर्ष पर, प्लस(+) चिह्न पर क्लिक करें, और फिर Select port to view on Host 1 क्लिक करें।
केवल काटाकोडा वातावरण के लिए:
30000टाइप करें, और फिर Display Port क्लिक करें।
dashboard कमांड डैशबोर्ड ऐड-ऑन को इस्तेमाल के लिए तैयार करता है और प्रॉक्सी को डिफ़ॉल्ट वेब ब्राउज़र में खोलता है।
आप डैशबोर्ड पर कुबेरनेट्स संसाधन जैसे डेप्लॉयमेंट और सर्विस बना सकते हैं।
यदि आप किसी वातावरण(environment) में रुट(root) के रूप में इस्तेमाल कर रहे हैं, तो URL से डैशबोर्ड खोलना देखें।
आमतौर पर, डैशबोर्ड केवल आंतरिक कुबेरनेट्स वर्चुअल नेटवर्क के भीतर से ही पहुँचा जा सकता है।
डैशबोर्ड को कुबेरनेट्स वर्चुअल नेटवर्क के बाहर से एक्सेस करने योग्य बनाने के लिए dashboard कमांड एक अस्थायी प्रॉक्सी बनाता है।
प्रॉक्सी को रोकने और प्रक्रिया से बाहर निकलने के लिए Ctrl+C का प्रयोग करें।
कमांड से बाहर निकलने के बाद, डैशबोर्ड कुबेरनेट्स क्लस्टर में चलता रहता है।
आप डैशबोर्ड तक पहुंचने और प्रॉक्सी बनाने के लिए फिर से dashboard कमांड चला सकते हैं।
URL से डैशबोर्ड खोलें
यदि आप वेब ब्राउज़र नहीं खोलना चाहते हैं, तो URL प्राप्त करने के लिए url फ़्लैग के साथ dashboard कमांड चलाएँ:
minikube dashboard --url
डेप्लॉयमेंट बनाएँ
कुबेरनेट्स पॉड एक या अधिक कंटेनरों का एक समूह है, जो प्रशासन और नेटवर्किंग के उद्देश्यों के लिए एक साथ बंधे होते हैं। इस ट्यूटोरियल के पॉड में केवल एक कंटेनर है। कुबेरनेट्स डेप्लॉयमेंट आपके पॉड के स्वास्थ्य की जाँच करता है और यदि पॉड बंद हो जाता है तो पॉड के कंटेनर को पुनः आरंभ करता है। पॉड्स के निर्माण और स्केलिंग को प्रबंधित करने के लिए डेप्लॉयमेंट अनुशंसित तरीका है।
पॉड को प्रबंधित करने वाला डेप्लॉयमेंट बनाने के लिए
kubectl createकमांड का उपयोग करें। पॉड प्रदान की गई डॉकर इमेज के आधार पर एक कंटेनर चलाता है।kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4डेप्लॉयमेंट देखें:
kubectl get deploymentsआउटपुट कुछ इस समान होगा:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1mपॉड देखें:
kubectl get podsआउटपुट कुछ इस समान होगा:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1mक्लस्टर इवेंट देखें:
kubectl get eventskubectlकॉन्फ़िगरेशन देखें:kubectl config view
kubectl कमांड के बारे में अधिक जानकारी के लिए kubectl अवलोकन देखें।सर्विस बनाएं
आमतौर पर, पॉड कुबेरनेट्स क्लस्टर के भीतर अपने आंतरिक IP पते से ही पहुँचा जा सकता है।
hello-node कंटेनर को कुबेरनेट्स वर्चुअल नेटवर्क के
बाहर से सुलभ बनाने के लिए,पॉड को
कुबेरनेट्स Service(सर्विस) के रूप में बेनकाब करना होगा।
kubectl exposeकमांड का उपयोग करके पॉड को सार्वजनिक इंटरनेट पर एक्सपोज़ करें:kubectl expose deployment hello-node --type=LoadBalancer --port=8080--type=LoadBalancerफ्लैग इंगित करता है कि आप क्लस्टर के बाहर अपने सर्विस को प्रदर्शित करना चाहते हैं।इमेज के अंदर एप्लिकेशन कोड
k8s.gcr.io/echoserverकेवल TCP पोर्ट 8080 पर सुनता है। यदि आपने किसी भिन्न पोर्ट को एक्सपोज़ करने के लिएkubectl एक्सपोज़का उपयोग किया है, तो क्लाइंट उस अन्य पोर्ट से जुड़ नहीं सकते।आपके द्वारा बनाई गई सर्विस देखें:
kubectl get serviceआउटपुट कुछ इस समान होगा:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23mलोड बैलेंसर्स का समर्थन करने वाले क्लाउड प्रदाताओं पर, सर्विस तक पहुंचने के लिए एक बाहरी IP पते का प्रावधान किया जाएगा। मिनीक्यूब पर,
LoadBalancerटाइपminikube serviceकमांड से सर्विस को पहुंच योग्य बनाता है।निम्न आदेश चलाएँ:
minikube service hello-nodeकेवल काटाकोडा वातावरण के लिए: प्लस(+) चिह्न पर क्लिक करें, और फिर Select port to view on Host 1 क्लिक करें।
केवल काटाकोडा वातावरण के लिए: सेवाओं के आउटपुट में
8080के विपरीत प्रदर्शित 5 अंकों का पोर्ट नंबर नोट करें। यह पोर्ट नंबर बेतरतीब ढंग से उत्पन्न होता है और यह आपके लिए भिन्न हो सकता है। पोर्ट नंबर टेक्स्ट बॉक्स में अपना नंबर टाइप करें, फिर डिस्प्ले पोर्ट पर क्लिक करें। पहले के उदाहरण का उपयोग करते हुए, आप30369टाइप करेंगे।यह एक ब्राउज़र विंडो खोलता है जो आपके ऐप की प्रतिक्रिया दिखाती है।
ऐडऑन सक्षम करें
मिनीक्यूब टूल में बिल्ट-इन ऐडऑन(add on) का एक समूह शामिल है जिसे स्थानीय कुबेरनेट्स वातावरण में सक्षम, अक्षम और खोला जा सकता है।
वर्तमान में उपलब्ध ऐडऑन की सूची:
minikube addons listआउटपुट कुछ इस समान होगा:
addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidia-driver-installer: disabled nvidia-gpu-device-plugin: disabled registry: disabled registry-creds: disabled storage-provisioner: enabled storage-provisioner-gluster: disabledएक ऐडऑन सक्षम करें, उदाहरण के लिए,
metrics-server:minikube addons enable metrics-serverआउटपुट कुछ इस समान होगा:
The 'metrics-server' addon is enabledआपके द्वारा बनाई गई पॉड और सर्विस देखें:
kubectl get pod,service -n kube-systemआउटपुट कुछ इस समान होगा:
NAME READY STATUS RESTARTS AGE pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m pod/metrics-server-67fb648c5 1/1 Running 0 26s pod/etcd-minikube 1/1 Running 0 34m pod/influxdb-grafana-b29w8 2/2 Running 0 26s pod/kube-addon-manager-minikube 1/1 Running 0 34m pod/kube-apiserver-minikube 1/1 Running 0 34m pod/kube-controller-manager-minikube 1/1 Running 0 34m pod/kube-proxy-rnlps 1/1 Running 0 34m pod/kube-scheduler-minikube 1/1 Running 0 34m pod/storage-provisioner 1/1 Running 0 34m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26smetrics-serverअक्षम करें:minikube addons disable metrics-serverआउटपुट कुछ इस समान होगा:
metrics-server was successfully disabled
साफ - सफाई
अब आप अपने क्लस्टर में बनाए गए संसाधनों को साफ कर सकते हैं:
kubectl delete service hello-node
kubectl delete deployment hello-node
वैकल्पिक रूप से, मिनिक्यूब वर्चुअल मशीन (VM) को बंद करें:
minikube stop
वैकल्पिक रूप से, मिनिक्यूब VM को डिलीट करें:
minikube delete
आगे क्या है
- डेप्लॉयमेंट ऑब्जेक्ट के बारे में अधिक जाने।
- एप्लीकेशन डेप्लॉय करने के बारे में अधिक जाने।
- सर्विस ऑब्जेक्ट के बारे में अधिक जाने।