के3डी Rancher/SUSE K3s Kubernetes वितरण के आसपास एक ओपन-सोर्स रैपर है जो आपको डॉकर के अंदर कंट्रोल प्लेन चलाने की सुविधा देता है। संपूर्ण स्टैक डॉकर में चलता है, जो आपको पूरी तरह से कंटेनरीकृत क्लस्टर प्रदान करता है जो हल्का और स्थापित करने में आसान है।

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

यह लेख आपको दिखाएगा कि कैसे एक साधारण K3d क्लस्टर के साथ उठना और चलना है। आपको दोनों की आवश्यकता होगी कुबेक्टली और डॉकर v20.10.5 या नया आपके सिस्टम पर आपके शुरू होने से पहले ही इंस्टॉल हो चुका है। K3d Linux, Mac (होमब्रे के माध्यम से), और विंडोज (चॉकलेट के माध्यम से) पर काम करता है। यह मार्गदर्शिका Linux के साथ प्रयोग पर केंद्रित है; k3d अन्य प्लेटफार्मों के लिए सीएलआई स्थापना निर्देश उपलब्ध हैं दस्तावेज़ीकरण में.

K3d CLI स्थापित करना

k3d CLI आपके क्लस्टर बनाने और प्रबंधित करने के लिए प्रबंधन आदेश प्रदान करता है। आप नवीनतम सीएलआई पा सकते हैं गिटहब पर या चलाओ स्थापना स्क्रिप्ट स्वचालित रूप से आपके सिस्टम के लिए सही डाउनलोड प्राप्त करने के लिए।

$ curl -s  | bash

स्क्रिप्ट जमा करता है k3d अपने में द्विआधारी /usr/local/bin निर्देशिका। चलाने का प्रयास करें k3d version आपके इंस्टॉलेशन के सफल होने की जाँच करने के लिए कमांड:

$ k3d version
k3d version v5.4.6
k3s version v1.24.4-k3s1 (default)

एक क्लस्टर बनाना

K3d CLI प्रदान करता है a cluster create स्वचालित रूप से एक नया क्लस्टर बनाने और शुरू करने का आदेश:

$ k3d cluster create
INFO[0000] Prep: Network                                
INFO[0000] Created network 'k3d-k3s-default'            
INFO[0000] Created image volume k3d-k3s-default-images  
INFO[0000] Starting new tools node...                   
INFO[0001] Creating node 'k3d-k3s-default-server-0'     
INFO[0001] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.4.6' 
INFO[0002] Pulling image 'docker.io/rancher/k3s:v1.24.4-k3s1' 
INFO[0002] Starting Node 'k3d-k3s-default-tools'        
INFO[0008] Creating LoadBalancer 'k3d-k3s-default-serverlb' 
INFO[0009] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.6' 
INFO[0012] Using the k3d-tools node to gather environment information 
INFO[0012] HostIP: using network gateway 172.25.0.1 address 
INFO[0012] Starting cluster 'k3s-default'               
INFO[0012] Starting servers...                          
INFO[0012] Starting Node 'k3d-k3s-default-server-0'     
INFO[0016] All agents already running.                  
INFO[0016] Starting helpers...                          
INFO[0016] Starting Node 'k3d-k3s-default-serverlb'     
INFO[0022] Injecting records for hostAliases (incl. host.k3d.internal) and for 2 network members into CoreDNS configmap... 
INFO[0025] Cluster 'k3s-default' created successfully!  
INFO[0025] You can now use it like this:                
kubectl cluster-info

क्लस्टर का नाम होगा k3s-default जब आप बिना किसी तर्क के कमांड चलाते हैं। इसे कमांड के पहले तर्क के रूप में शामिल करके अपना नाम सेट करें:

$ k3d cluster create demo
...

K3d स्वचालित रूप से आपकी Kubernetes कॉन्फ़िग फ़ाइल को संशोधित करता है (.kube/config) अपने नए क्लस्टर से कनेक्शन शामिल करने के लिए। यह कनेक्शन को डिफ़ॉल्ट के रूप में चिह्नित करता है इसलिए kubectl आदेश अब आपके K3d परिवेश को लक्षित करेंगे।

$ kubectl cluster-info
Kubernetes control plane is running at 
CoreDNS is running at /api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at /api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy

दौड़ना docker ps दिखाएगा कि दो कंटेनर शुरू हो गए हैं, एक K3s के लिए और दूसरा K3d के प्रॉक्सी के लिए जो आपके क्लस्टर में ट्रैफ़िक को अग्रेषित करता है:

$ docker ps
CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS         PORTS                             NAMES
9b6b610ad312   ghcr.io/k3d-io/k3d-proxy:5.4.6     "/bin/sh -c nginx-pr..."   3 minutes ago   Up 3 minutes   80/tcp, 0.0.0.0:42879->6443/tcp   k3d-k3s-default-serverlb
842cc90b78bf   rancher/k3s:v1.24.4-k3s1           "/bin/k3s server --t..."   3 minutes ago   Up 3 minutes                                     k3d-k3s-default-server-0

अपने क्लस्टर का उपयोग करना

अपने क्लस्टर के साथ बातचीत करने और अपने पॉड्स को तैनात करने के लिए परिचित Kubectl कमांड का उपयोग करें:

$ kubectl run nginx --image nginx:latest
pod/nginx created

$ kubectl expose pod/nginx --port 80 --type NodePort
service/nginx exposed

अपने एनजीआईएनएक्स सर्वर तक पहुँचने के लिए, पहले अपने कुबेरनेट्स नोड को सौंपा गया आईपी पता खोजें:

$ kubectl get nodes -o wide
NAME                       STATUS   ROLES                  AGE    VERSION        INTERNAL-IP   EXTERNAL-IP   OS-IMAGE   KERNEL-VERSION      CONTAINER-RUNTIME
k3d-k3s-default-server-0   Ready    control-plane,master   102s   v1.24.4+k3s1   172.27.0.2            K3s dev    5.4.0-125-generic   containerd://1.6.6-k3s1

उपयोग करने के लिए सही IP है 172.27.0.2.

इसके बाद अपने को सौंपा गया NodePort खोजें nginx सर्विस:

$ kubectl get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.43.0.1               443/TCP        5m49s
nginx        NodePort    10.43.235.233           80:31214/TCP   1s

एक्सपोज़्ड पोर्ट नंबर है 31214. एक अनुरोध करना 172.17.0.2:31214 डिफ़ॉल्ट एनजीआईएनएक्स स्वागत पृष्ठ जारी करना चाहिए:

$ curl 



Welcome to nginx!
...

आप सेवाओं को उजागर करने और इनग्रेड नेटवर्किंग स्थापित करने के बारे में अधिक मार्गदर्शन प्राप्त कर सकते हैं K3d प्रलेखन के भीतर.

K3s झंडे को सक्षम करना

cluster create कमांड मानक K3s क्लस्टर निर्माण प्रक्रिया को लपेटता है। आप पास कर सकते हैं K3s . के माध्यम से तर्क आपूर्ति करके --k3s-arg झंडे ध्वज का मान एक तर्क होना चाहिए जिसे K3d K3s बाइनरी कॉल करने पर शामिल किया जाएगा।

$ k3s cluster create --k3s-arg "--disable=traefik"

यह उदाहरण K3s को इसके बिल्ट-इन को अक्षम करने का निर्देश देता है ट्रैफ़िक अवयव।

आपके होस्ट पर चल रही सेवाओं तक पहुंचना

K3d में आपके द्वारा चलाए जाने वाले कुछ कार्यभार को आपके Docker होस्ट पर पहले से चल रही सेवाओं तक पहुँचने की आवश्यकता हो सकती है। K3d एक होस्टनाम प्रदान करता है जिसे कहा जाता है host.k3d.internal इसके डिफ़ॉल्ट DNS कॉन्फ़िगरेशन के भीतर। यह स्वचालित रूप से आपकी होस्ट मशीन का समाधान करेगा। कुबेरनेट्स के बाहर चल रहे मौजूदा डेटाबेस, फ़ाइल शेयर और अन्य एपीआई तक पहुंचने के लिए आप अपने पॉड्स के भीतर इस विशेष होस्टनाम का संदर्भ दे सकते हैं।

स्थानीय डॉकर छवियों का उपयोग करना

आपका K3d/K3s क्लस्टर आपकी स्थानीय डॉकर छवियों तक नहीं पहुंच सकता है। क्लस्टर और उसके सभी घटक चल रहे हैं अंदर डोकर। केवल होस्ट पर मौजूद निजी छवि का उपयोग करने का प्रयास विफल हो जाएगा और एक त्रुटि की रिपोर्ट करेगा।

इसे हल करने के दो तरीके हैं: या तो अपनी छवि को रजिस्ट्री में धकेलें, या K3d’s . का उपयोग करें छवि आयात सुविधा एक स्थानीय छवि को अपने क्लस्टर में कॉपी करने के लिए। पहली विधि आम तौर पर पसंद की जाती है क्योंकि यह आपकी छवि भंडारण को केंद्रीकृत करती है और आपको किसी भी वातावरण से छवियों तक पहुंचने देती है। हालांकि, स्थानीय परिवर्तनों का त्वरित परीक्षण करते समय आप अपने द्वारा अभी-अभी बनाई गई छवि को सीधे आयात करना चाह सकते हैं:

$ k3d image import demo-image:latest

यह आदेश बना देगा demo-image:latest आपके क्लस्टर के अंदर उपलब्ध है।

K3d आपके लिए एक छवि रजिस्ट्री भी बना और उजागर कर सकता है। रजिस्ट्रियां आपके क्लस्टर के साथ सबसे अच्छी तरह से बनाई जाती हैं क्योंकि K3d तब क्लस्टर की पहुंच को स्वचालित रूप से कॉन्फ़िगर कर सकता है:

$ k3d cluster create --registry-create demo-registry

यह एक रजिस्ट्री के साथ एक नया क्लस्टर शुरू करता है जिसे कहा जाता है demo-registry. रजिस्ट्री अपने स्वयं के डॉकर कंटेनर में चलेगी। आप उस पोर्ट नंबर की खोज कर सकते हैं जिस पर रजिस्ट्री चल रही है docker ps -f name=-registryकहाँ पे आपके क्लस्टर का नाम है। इस रजिस्ट्री में छवियों को पुश करने से वे आपके क्लस्टर में पॉड्स तक पहुंच योग्य हो जाएंगी।

$ docker tag demo-image:latest k3d-demo-registry.localhost:12345/demo-image:latest
$ docker push k3d-demo-registry.localhost:12345/demo-image:latest

आप रजिस्ट्रियां भी बना सकते हैं मांग पर लेकिन आपको इसकी आवश्यकता होगी अपने क्लस्टर को मैन्युअल रूप से पुन: कॉन्फ़िगर करें कनेक्शन विवरण की आपूर्ति करने के लिए।

अपने क्लस्टर को रोकना

आपका K3d क्लस्टर तब तक लगातार चलेगा जब तक आप इसे स्वयं बंद नहीं करते। cluster stop आपके क्लस्टर के डेटा को संरक्षित करते हुए कमांड डॉकर कंटेनर चलाना बंद कर देता है:

$ k3d cluster stop k3s-default

भविष्य में अपने क्लस्टर को पुनः प्रारंभ करें cluster start आज्ञा:

$ k3d cluster start k3s-default

अपने क्लस्टर को हटाना

आप किसी भी समय क्लस्टर को चलाकर हटा सकते हैं cluster delete आदेश और उसके नाम की आपूर्ति। यह क्लस्टर के सभी निशानों को हटा देगा, डॉकटर कंटेनरों और इसे प्रदान करने वाले संस्करणों को हटा देगा। आपके सभी क्लस्टर को हटाने से आपका होस्ट केवल K3d CLI स्थापित के साथ एक साफ स्लेट पर वापस आ जाएगा।

$ k3d cluster delete k3s-default
INFO[0000] Deleting cluster 'k3s-default'               
INFO[0001] Deleting cluster network 'k3d-k3s-default'   
INFO[0001] Deleting 2 attached volumes...               
INFO[0001] Removing cluster details from default kubeconfig... 
INFO[0001] Removing standalone kubeconfig file (if there is one)... 
INFO[0001] Successfully deleted cluster k3s-default!

हटाने की प्रक्रिया स्वचालित रूप से आपके Kubeconfig से क्लस्टर के संदर्भ हटा देती है।

सारांश

K3d आपको एक कंटेनरीकृत Kubernetes क्लस्टर चलाने देता है। जहां भी डॉकर उपलब्ध है, यह एक संपूर्ण K3s वातावरण प्रदान करता है। K3d सपोर्ट करता है एकाधिक नोड्सके लिए एकीकृत समर्थन है छवि रजिस्ट्रियांऔर बनाने के लिए इस्तेमाल किया जा सकता है अत्यधिक उपलब्ध क्लस्टर कई नियंत्रण विमानों के साथ।

पहले से ही डॉकर चलाने वाले डेवलपर्स अपने काम के माहौल में कुबेरनेट्स को जल्दी से जोड़ने के लिए K3d का उपयोग कर सकते हैं। K3d हल्का है, प्रबंधन में आसान है, और आपकी मशीन में कोई अन्य सिस्टम सेवाएं नहीं जोड़ता है। यह इसे स्थानीय उपयोग के लिए एक बढ़िया विकल्प बनाता है लेकिन डॉकर पर इसकी निर्भरता का मतलब है कि यह उत्पादन मेजबानों के लिए उपयुक्त नहीं हो सकता है जहां आप एक और निर्भरता नहीं जोड़ना चाहते हैं। अन्य Kubernetes वितरण जैसे Minikube, Microk8s, और सादा K3s सभी व्यवहार्य विकल्प हैं।

setTimeout(function(){
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=’2.0′;
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s) } (window, document,’script’,

fbq(‘init’, ‘335401813750447’);
fbq(‘track’, ‘PageView’);
},3000);

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.