इस Kubeadm ट्यूटोरियल में, हम आपको Kubeadm कमांड के बारे में जानने के लिए आवश्यक हर चीज़ का पता लगाएंगे और Kubernetes (K8s) में क्लस्टर बनाने और क्लस्टर घटकों को प्रबंधित करने के लिए उनका उपयोग कैसे करें।
आप न केवल Kubeadm का उपयोग करके अपना खुद का Kubernetes क्लस्टर बनाना सीखेंगे, बल्कि आप क्लस्टर घटकों को प्रबंधित करने की कला में भी महारत हासिल करेंगे, और Kubeadm की सर्वोत्तम प्रथाओं की खोज करेंगे।
Kubeadm की दुनिया में इस रोमांचक यात्रा पर हमारे साथ जुड़ें, जहां आप आसानी से कंटेनरों को व्यवस्थित करने की शक्ति को अनलॉक करेंगे।
आइए एक साथ गोता लगाएँ और Kubeadm विशेषज्ञ बनें! इससे पहले कि हम kubeadm
के बारे में गहराई से जानें, स्व-होस्टेड Kubernetes (K8s) वास्तव में क्या है?
स्व-होस्टेड कुबेरनेट्स, जिसे "बेयर मेटल" या "ऑन-प्रिमाइसेस" कुबेरनेट्स परिनियोजन के रूप में भी जाना जाता है, क्लाउड प्रदाता (जैसे एडब्ल्यूएस द्वारा ईकेएस) द्वारा प्रदान की गई प्रबंधित कुबेरनेट्स सेवा पर भरोसा किए बिना कुबेरनेट्स को सीधे भौतिक या आभासी मशीनों पर चलाने को संदर्भित करता है। ).
यहां स्व-होस्टेड कुबेरनेट्स के कुछ फायदे और नुकसान दिए गए हैं:
स्व-होस्टेड कुबेरनेट्स के साथ, आपके पास क्लस्टर कॉन्फ़िगरेशन, नेटवर्किंग और बुनियादी ढांचे पर पूरा नियंत्रण होता है। यह आपको अपनी विशिष्ट आवश्यकताओं और बुनियादी ढांचे की क्षमताओं के अनुसार क्लस्टर को अनुकूलित और अनुकूलित करने की अनुमति देता है।
प्रबंधित कुबेरनेट्स सेवाओं का उपयोग करने की तुलना में स्व-होस्टिंग कुबेरनेट्स अधिक लागत प्रभावी हो सकता है, विशेष रूप से दीर्घकालिक तैनाती के लिए, जिसमें अक्सर अतिरिक्त शुल्क लगता है। स्व-होस्टिंग आपको मौजूदा हार्डवेयर संसाधनों का लाभ उठाने और प्रबंधित सेवाओं की ओवरहेड लागत से बचने की अनुमति देता है। (और ढेर सारा पैसा बचाएं)
सेल्फ-होस्टिंग कुबेरनेट्स आपको नेटवर्क नीतियों, एन्क्रिप्शन, एक्सेस नियंत्रण और अनुपालन आवश्यकताओं जैसे सुरक्षा उपायों पर सीधा नियंत्रण देता है। यह आपको अपने संगठन की आवश्यकताओं और नियामक मानकों के लिए विशिष्ट सर्वोत्तम कुबेरनेट्स सुरक्षा प्रथाओं को लागू करने की अनुमति देता है। (log4j, कोई घंटी बजाओ?)
स्व-होस्टेड कुबेरनेट्स आपको अन्य किरायेदारों के साथ साझा किए बिना विशेष रूप से अपने क्लस्टर के लिए संसाधन आवंटित करने की अनुमति देता है। यह बेहतर संसाधन उपयोग को सक्षम बनाता है और संभावित प्रदर्शन समस्याओं से बचाता है जो साझा वातावरण में संसाधन विवाद से उत्पन्न हो सकते हैं।
स्व-होस्टिंग कुबेरनेट्स को अंतर्निहित बुनियादी ढांचे के प्रबंधन और रखरखाव में विशेषज्ञता की आवश्यकता होती है।
आप सर्वर, नेटवर्किंग, स्टोरेज और क्लस्टर के अन्य घटकों के प्रावधान, कॉन्फ़िगरेशन और निगरानी के लिए जिम्मेदार हैं। इसमें समय लग सकता है और इसके लिए समर्पित संसाधनों और अतिरिक्त नियुक्तियों की आवश्यकता होगी।
स्वचालित स्केलिंग क्षमताओं की पेशकश करने वाली प्रबंधित सेवाओं की तुलना में स्व-होस्ट किए गए कुबेरनेट क्लस्टर को स्केल करना अधिक जटिल हो सकता है।
आपको चरम भार को संभालने के लिए पहले से संसाधनों की योजना बनाने और प्रावधान करने की आवश्यकता है, और नोड्स जोड़ने या हटाने के लिए मैन्युअल हस्तक्षेप की आवश्यकता हो सकती है।
स्व-होस्टेड कुबेरनेट्स अतिरिक्त परिचालन जटिलताओं का परिचय देता है, जैसे अपग्रेड, पैच, बैकअप और उच्च उपलब्धता का प्रबंधन। इन कार्यों के लिए सावधानीपूर्वक योजना, परीक्षण और समन्वय की आवश्यकता होती है ताकि क्लस्टर और अनुप्रयोगों में न्यूनतम व्यवधान सुनिश्चित किया जा सके या फिर उत्पादन डाउनटाइम में वृद्धि हो सके।
Kubeadm एक कमांड-लाइन टूल है जो Kubernetes क्लस्टर को स्थापित करने और प्रबंधित करने की प्रक्रिया को सरल बनाता है, जिससे तकनीकी समुदाय के सदस्यों के लिए कंटेनर ऑर्केस्ट्रेशन की दुनिया में गोता लगाना आसान हो जाता है।
kubeadm
को अपने भरोसेमंद सहायक के रूप में सोचें जो क्लस्टर सेटअप की बारीकियों का ध्यान रखता है, जिससे आप बड़ी तस्वीर पर ध्यान केंद्रित कर सकते हैं।
यह आवश्यक घटकों को कॉन्फ़िगर करने, प्रमाणपत्र तैयार करने और यह सुनिश्चित करने जैसे जटिल कार्यों को स्वचालित करता है कि आपका क्लस्टर सर्वोत्तम प्रथाओं का पालन करता है।
kubeadm
कैसे काम करता है इसे बेहतर ढंग से समझने के लिए आइए कुछ उदाहरणों और कमांडों पर एक नज़र डालें।
उदाहरण कमांड #1: ` kubeadm init
उपरोक्त कमांड का उपयोग कैसे करें यहां बताया गया है।
kubeadm init --pod-network-cidr=192.168.0.0/16
यह कमांड मास्टर नोड पर नियंत्रण विमान को आरंभ करता है। यह आवश्यक प्रमाणपत्र तैयार करता है, एपीआई सर्वर आदि सेट करता है, और अन्य महत्वपूर्ण घटक।
` -पॉड-नेटवर्क-सीआईडीआर` ध्वज क्लस्टर में पॉड नेटवर्क के लिए आईपी एड्रेस रेंज निर्दिष्ट करता है।
उदाहरण कमांड #2: ` kubeadm join
kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>
यह कमांड एक वर्कर नोड को क्लस्टर से जोड़ता है। आपको टोकन और डिस्कवरी टोकन सीए प्रमाणपत्र हैश के साथ मास्टर नोड का आईपी और पोर्ट प्रदान करना होगा, जिसे नियंत्रण विमान आरंभीकरण के दौरान प्राप्त किया जा सकता है।
आदेश: ` kubeadm reset
kubeadm reset --force
यह कमांड एक क्लस्टर को रीसेट करता है, सभी स्थापित घटकों को हटाता है और नोड को उसकी पूर्व-कुबेरनेट्स स्थिति में लौटाता है। ` --force` ध्वज एक संपूर्ण रीसेट सुनिश्चित करता है।
कमांड: ` kubeadm upgrade
यहां उपरोक्त kubeadm
कमांड का उपयोग करने का तरीका बताया गया है।
kubeadm upgrade plan
यह कमांड आपके कुबेरनेट्स संस्करण को अपग्रेड करने में आपकी सहायता करता है। यह उपलब्ध अपग्रेड की जांच करता है और नियंत्रण विमान घटकों को अपग्रेड करने के लिए एक योजना प्रदान करता है।
यहां आमतौर पर उपयोग किए जाने वाले kubeadm कमांड की एक सूची दी गई है, जिसके बाद एक प्रासंगिक उदाहरण दिया गया है।
kubeadm init --pod-network-cidr=192.168.0.0/16
उपरोक्त उदाहरण में, कमांड मास्टर नोड पर नियंत्रण विमान को आरंभ करता है, प्रमाणपत्र बनाता है और आवश्यक घटकों को स्थापित करता है। ` -पॉड-नेटवर्क-सीआईडीआर` ध्वज पॉड नेटवर्क आईपी एड्रेस रेंज निर्दिष्ट करता है।
kubeadm join <master-node-ip>:<master-node-port> --token <token> --discovery-token-ca-cert-hash <hash>
उपरोक्त कमांड एक टोकन और डिस्कवरी टोकन सीए सर्टिफिकेट हैश का उपयोग करके निर्दिष्ट मास्टर नोड से कनेक्ट करके एक वर्कर नोड को क्लस्टर में जोड़ता है।
kubeadm reset --force
उपरोक्त आदेश एक नोड को रीसेट करता है, सभी स्थापित कुबेरनेट्स घटकों को हटा देता है और इसे उसकी पूर्व-कुबेरनेट्स स्थिति में लौटा देता है। ` --force` ध्वज एक संपूर्ण रीसेट सुनिश्चित करता है।
kubeadm upgrade plan
उपरोक्त कमांड एक अपग्रेड योजना प्रदान करता है, जो नियंत्रण विमान घटकों के लिए उपलब्ध अपग्रेड की जांच करता है।
kubeadm token create
यह kubeadm कमांड क्लस्टर में नोड्स को जोड़ने के लिए उपयोग किए जाने वाले प्रमाणीकरण टोकन का प्रबंधन करता है। यह उदाहरण एक नया टोकन उत्पन्न करता है।
kubeadm config print init-defaults
उपरोक्त कमांड kubeadm कॉन्फ़िगरेशन फ़ाइलों का प्रबंधन करता है। यह उदाहरण क्लस्टर आरंभीकरण के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन को प्रिंट करता है।
kubeadm version
उपरोक्त कमांड kubeadm के संस्करण को प्रिंट करता है।
kubeadm config images list
वर्तमान कुबेरनेट्स संस्करण के लिए आवश्यक छवियों की सूची मुद्रित करने के लिए उपरोक्त आदेश का उपयोग करें।
यह कमांड आपको मैन्युअल कंटेनर छवि प्रबंधन के लिए आवश्यक कंटेनर छवियों को निर्धारित करने में मदद करता है। कॉन्फ़िगरेशन छवियाँ खींचने के लिए ` सूची` को ` पुल` से बदलें।
kubeadm token create --print-join-command
उपरोक्त कमांड एक नया टोकन उत्पन्न करता है जिसका उपयोग क्लस्टर में नोड्स को जोड़ने के लिए किया जा सकता है। ' --प्रिंट-जॉइन-कमांड ' ध्वज वर्कर नोड्स पर निष्पादित होने वाले जॉइन कमांड को प्रदर्शित करता है।
kubeadm token list
उपरोक्त आदेश सक्रिय टोकन को उनके संबंधित निर्माण समय और समाप्ति के साथ सूचीबद्ध करता है।
kubeadm token delete <token_value>
किसी विशिष्ट टोकन को हटाने के लिए उपरोक्त आदेश का उपयोग करें, जिससे यह नोड जुड़ने के लिए अनुपयोगी हो जाएगा।
kubeadm config migrate --old-config kubeadm.conf --new-config kubeadm.yaml
उपरोक्त कमांड एक कॉन्फ़िगरेशन फ़ाइल को पुराने संस्करण से नए संस्करण में स्थानांतरित करता है, जिससे कॉन्फ़िगरेशन का सुचारू उन्नयन संभव हो जाता है।
kubeadm certs check-expirationkubeadm certs certificate-key
उपरोक्त आदेश नियंत्रण विमान घटकों द्वारा उपयोग किए गए प्रमाणपत्रों की समाप्ति स्थिति की जांच करते हैं और समाप्ति के करीब प्रमाणपत्रों के लिए चेतावनी प्रदान करते हैं। दूसरा कमांड कुंजी उत्पन्न करता है।
kubeadm init phase kubelet-start --config config.yaml
InitConfiguration फ़ाइल से, उपरोक्त कमांड क्यूबलेट फ़्लैग के साथ एक गतिशील वातावरण फ़ाइल बनाता है।
kubeadm join phase control-plane-prepare
उपरोक्त कमांड एक वर्कर नोड को नियंत्रण विमान से जोड़ने के दौरान एक विशिष्ट चरण को निष्पादित करता है। यह उदाहरण ` कंट्रोल-प्लेन-तैयार` चरण चलाता है, जो वर्कर नोड को कंट्रोल प्लेन नोड बनने के लिए तैयार करता है।
kubeadm kubeconfig user --client-name=foo --config=bar
kubeadm कॉन्फिग फ़ाइल बार का उपयोग करके foo नाम के एक अतिरिक्त उपयोगकर्ता के लिए kubeconfig
फ़ाइल को आउटपुट करने के लिए उपरोक्त कमांड का उपयोग करें।
kubeadm reset phase preflight
उपरोक्त कमांड एक नोड की रीसेट प्रक्रिया के दौरान एक विशिष्ट चरण को निष्पादित करता है। यह उदाहरण ` preflight
चरण चलाता है, जो कुबेरनेट्स घटकों को हटाने से पहले पूर्व-रीसेट जांच करता है।
kubeadm upgrade plan
उपरोक्त आदेश नियंत्रण विमान घटकों के लिए एक अपग्रेड योजना प्रदर्शित करता है, जो उपलब्ध संस्करण और अपग्रेड के लिए आवश्यक कार्रवाई दिखाता है।
kubeadm upgrade apply v1.22.2
नियंत्रण विमान पर एक विशिष्ट कुबेरनेट्स संस्करण लागू करने के लिए उपरोक्त कमांड का उपयोग करें, इसके घटकों को निर्दिष्ट संस्करण में अपग्रेड करें।
kubeadm upgrade node
यह कमांड कंट्रोल प्लेन के संस्करण से मेल खाने के लिए वर्कर नोड पर kubelet
और क्यूब-प्रॉक्सी को अपग्रेड करता है।
kubeadm
का उपयोग करके Kubernetes क्लस्टर बनाने के लिए, आपको यह सुनिश्चित करना होगा कि आपका वातावरण आवश्यक शर्तों को पूरा करता है।
यहां kubeadm
का उपयोग करके कुबेरनेट्स क्लस्टर बनाने के बारे में चरण-दर-चरण मार्गदर्शिका दी गई है, जिसमें पूर्वापेक्षाएँ, विस्तृत निर्देश, उदाहरण और आदेश शामिल हैं।
डॉकर स्थापित होने के साथ समर्थित लिनक्स वितरण (उदाहरण के लिए, उबंटू, सेंटओएस, या रेड हैट एंटरप्राइज लिनक्स) चलाने वाली दो या दो से अधिक मशीनें।
प्रति मशीन 2 GiB या अधिक RAM की अनुशंसा की जाती है; इससे कम कुछ भी आपके सॉफ़्टवेयर के लिए सीमित जगह छोड़ता है।
सभी मशीनों पर स्वैप स्थान अक्षम करें।
प्रत्येक मशीन के लिए एक अद्वितीय होस्टनाम, मैक पता और product_uuid सेट करें।
क्लस्टर की सभी मशीनों में पूर्ण नेटवर्क कनेक्टिविटी है। आप किसी सार्वजनिक या निजी नेटवर्क से जुड़ सकते हैं.
अपने फ़ायरवॉल में आवश्यक पोर्ट (जैसे, 6443, 2379-2380, 10250, 10251, 10252) खोलें।
सभी मशीनों पर, अपने लिनक्स वितरण के लिए डॉकर गाइड का उपयोग करके डॉकर स्थापित करें।
सभी मशीनों पर निम्नलिखित कमांड का उपयोग करके ` kubeadm
,` kubelet
, और ` kubectl
इंस्टॉल करें:
sudo apt-get update && sudo apt-get install -y apt-transport-https curlcurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubelet kubeadm kubectlsudo apt-mark hold kubelet kubeadm kubectl
वांछित नियंत्रण विमान नोड पर, ` kubeadm init
कमांड का उपयोग करके क्लस्टर को प्रारंभ करें:
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
नोट: यदि आप किसी भिन्न पॉड नेटवर्क का उपयोग करने की योजना बना रहे हैं तो ` -pod-network-cidr` ध्वज को समायोजित करें।
आरंभीकरण पूरा होने के बाद, कमांड एक टोकन और हैश के साथ ` kubeadm join
कमांड आउटपुट करेगा। इस कमांड को कॉपी करना सुनिश्चित करें क्योंकि इसका उपयोग बाद में वर्कर नोड्स को क्लस्टर में जोड़ने के लिए किया जाएगा।
kubectl
के लिए क्लस्टर कॉन्फ़िगरेशन सेट करें नियंत्रण विमान नोड पर, आवश्यक निर्देशिका बनाएं और kubeconfig
फ़ाइल की प्रतिलिपि बनाएँ:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
नियंत्रण विमान नोड पर, एक पॉड नेटवर्क ऐड-ऑन तैनात करें। उदाहरण के लिए, आप केलिको का उपयोग कर सकते हैं:
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
प्रत्येक वर्कर नोड पर, ` kubeadm join
कमांड चलाएँ जो नियंत्रण विमान आरंभीकरण (चरण 2 से) के दौरान उत्पन्न हुआ था। यह आदेश आम तौर पर इस तरह दिखता है:
sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
नियंत्रण विमान नोड पर, ` kubectl
का उपयोग करके क्लस्टर की स्थिति जांचें:
kubectl get nodes
बधाई हो! आपने ` kubeadm
उपयोग करके सफलतापूर्वक Kubernetes क्लस्टर बनाया है। अब आप अपने एप्लिकेशन को क्लस्टर पर तैनात और प्रबंधित कर सकते हैं।
kubeadm
के साथ क्लस्टर घटकों को कैसे प्रबंधित करें kubeadm
के साथ क्लस्टर घटकों को प्रबंधित करने के लिए, आप क्लस्टर को अपग्रेड करने, नोड्स जोड़ने या हटाने और नियंत्रण विमान को प्रबंधित करने जैसे कार्य करने के लिए विभिन्न कमांड का उपयोग कर सकते हैं।
यहां kubeadm
के साथ क्लस्टर घटकों को प्रबंधित करने के तरीके के बारे में चरण-दर-चरण मार्गदर्शिका दी गई है, जिसमें कोड टिप्पणियों के साथ विस्तृत आदेश भी शामिल हैं।
नियंत्रण विमान नोड पर कुबेरनेट्स के वर्तमान संस्करण की जाँच करें:
kubectl version --short
वांछित कुबेरनेट्स संस्करण से मिलान करने के लिए सभी नोड्स पर ` kubeadm
, ` kubelet
, और ` kubectl
को अपग्रेड करें:
# Upgrade kubeadmsudo apt-get updatesudo apt-get install -y kubeadm=<desired_version># Upgrade kubelet and kubectlsudo apt-get updatesudo apt-get install -y kubelet=<desired_version> kubectl=<desired_version># Hold the packages to prevent automatic upgradessudo apt-mark hold kubeadm kubelet kubectl
नियंत्रण विमान नोड पर, अपग्रेड प्रक्रिया आरंभ करें:
sudo kubeadm upgrade plansudo kubeadm upgrade apply <desired_version>
Upgrade the kubelet configuration on all nodes:
sudo kubeadm upgrade node
अपग्रेड स्थिति सत्यापित करें:
kubectl get nodeskubectl version --short
कंट्रोल प्लेन नोड पर, एक नया kubeadm जॉइन कमांड जनरेट करें:
sudo kubeadm token create --print-join-command
वर्कर नोड पर, उन्हें क्लस्टर में शामिल करने के लिए kubeadm join कमांड चलाएँ:
sudo kubeadm join <control_plane_IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
नए कार्यकर्ता नोड्स की स्थिति सत्यापित करें:
kubectl get nodes
जिस नोड को आप हटाना चाहते हैं उसे हटा दें:
kubectl drain <node_name> --ignore-daemonsets
नियंत्रण विमान नोड पर, नोड हटाएँ:
sudo kubeadm reset
नियंत्रण विमान नोड पर, क्लस्टर से नोड हटाएँ:
kubectl delete node <node_name>
नियंत्रण विमान घटकों को नियंत्रण विमान नोड पर अपग्रेड करें:
sudo apt-get update sudo apt-get install -y kubeadm=<desired_version> kubelet=<desired_version> kubectl=<desired_version> sudo kubeadm upgrade plan sudo kubeadm upgrade apply <desired_version> sudo systemctl restart kubelet
अपग्रेड स्थिति सत्यापित करें:
kubectl get nodes kubectl version --short
Drain the control plane node you want to remove:
kubectl drain <control_plane_node> --ignore-daemonsets
कंट्रोल प्लेन नोड पर, निम्नलिखित kubeadm कमांड का उपयोग करके कंट्रोल प्लेन घटकों को हटा दें।
sudo kubeadm reset
कंट्रोल प्लेन नोड पर, क्लस्टर से कंट्रोल प्लेन नोड हटाएं:
kubectl delete node <control_plane_node>
ध्यान दें: Kubeadm के साथ क्लस्टर घटकों को प्रबंधित करने में सावधानी की आवश्यकता होती है, क्योंकि यह क्लस्टर की स्थिरता और उपलब्धता को प्रभावित कर सकता है। सुनिश्चित करें कि आपके पास एक बैकअप योजना है और अपने सेटअप और आवश्यकताओं के लिए विशिष्ट विस्तृत निर्देशों के लिए आधिकारिक कुबेरनेट्स दस्तावेज़ का पालन करें।
जब अपने इच्छित उद्देश्यों के लिए उपयोग किया जाता है, तो Kubeadm एक उत्कृष्ट उपकरण है। कार्य के लिए उचित उपकरण का उपयोग करने और क्यूबेडम से अधिकतम लाभ प्राप्त करने के लिए याद रखने योग्य तीन सर्वोत्तम अभ्यास यहां दिए गए हैं।
सामान्य तौर पर, kubeadm का उपयोग उत्पादन समूहों के लिए नहीं किया जाना चाहिए क्योंकि इसमें नोड और क्लस्टर ऑटोस्केलिंग क्षमता का अभाव है। यह इस तथ्य के कारण है कि नोड ऑटोस्केलिंग के लिए अंतर्निहित बुनियादी ढांचे और हार्डवेयर को नियंत्रित करने की आवश्यकता होती है, जिसे क्यूबेडएम ने अन्य उपकरणों को सौंप दिया है।
Kubeadm में क्लस्टर स्थिति को संग्रहीत करने के लिए डिफ़ॉल्ट रूप से मल्टी-आदि क्लस्टर नहीं है। कुछ गलत होने की स्थिति में आदि का नियमित बैकअप बनाएं।
Kubeadm उन मशीनों को बंद नहीं कर सकता जो उपयोग में नहीं हैं।
इसलिए, kubeadm
उपयोग करके Kubernetes क्लस्टर में लागत को अनुकूलित करने के लिए, आपको वर्कर नोड्स और उनके संसाधन उपयोग को ट्रैक करने के लिए एक बाहरी समाधान का उपयोग करने की आवश्यकता होगी।
इस लेख के लिए मुख्य छविहैकरनून के एआई इमेज जेनरेटर द्वारा प्रॉम्प्ट "कंटेनर्स" के माध्यम से तैयार की गई थी।