क्लाउड में लागत बचत को अधिकतम करना: लोड बैलेंसर के बिना Kubernetes कैसे चलाएं
जब क्लाउड में कुबरनेट्स चलाने की बात आती है, तो सबसे महत्वपूर्ण खर्चों में से एक प्रत्येक सेवा के लिए लोड बैलैंसर का उपयोग करने से आता है। प्रति लोड बैलैंसर प्रति माह लगभग 15 डॉलर से शुरू होने वाली कीमतों के साथ, लागतें जल्दी बढ़ जाती हैं, खासकर यदि आपके पास बड़ी संख्या में पॉड्स हैं। लेकिन क्या होगा अगर हम आपको बताएं कि उच्च उपलब्धता और स्वचालित फेलओवर के लाभ प्राप्त करते हुए बिना लोड बैलैंसर के कुबरनेट्स चलाने का एक तरीका है? इस लेख में, हम देखेंगे कि आप क्लाउड में लागत कैसे बचा सकते हैं, बिना लोड बैलैंसर के कुबरनेट्स चलाकर।
संस्करण 1: एनजीएनएक्स इंग्रेस के साथ सर्ट मैनेजर का इस्तेमाल करके केवल एक लोड बैलैंसर का उपयोग करें
एक लागत बचाने की रणनीति पूरे क्लस्टर के लिए केवल एक लोड बैलैंसर का उपयोग करना है, बजाय इसके कि प्रत्येक सेवा के लिए अलग लोड बैलैंसर का इस्तेमाल करें। यह एनजीएनएक्स इंग्रेस का उपयोग करके प्राप्त किया जा सकता है, जो क्लस्टर के लिए सभी बाहरी ट्रैफ़िक के लिए एकल प्रवेश बिंदु के रूप में कार्य करता है। एनजीएनएक्स इंग्रेस फिर डोमेन नाम के आधार पर ट्रैफ़िक को उपयुक्त पॉड्स में वितरित करता है, न कि प्रति सेवा एक लोड बैलैंसर बनाए। सबसे अच्छी बात: यदि आप सर्ट मैनेजर जोड़ रहे हैं, तो आपको मुफ्त लेट्सएन्क्रिप्ट एसएसएल प्रमाणपत्र मिलेंगे!
अपने क्लस्टर में एनजीएनएक्स इंग्रेस को तैनात करने का सबसे आसान तरीका हेल्म का उपयोग करना है:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
उसके बाद, अपनी सेवाओं के लिए https और SSL चलाने सुनिश्चित करने के लिए, आपको निम्नलिखित कमांड के साथ सर्ट मैनेजर को तैनात करना होगा:
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
फिर, लेट्सएन्क्रिप्ट को बताने के लिए आपको “क्लस्टरइश्यूअर” बनाना होगा कि आप कौन हैं। अपने ईमेल के अनुकूलित किए गए कंटेंट के साथ एक फ़ाइल “clusterissuer.yaml” बनाएं:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
#अपना ईमेल बदलें
email: EMAIL
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx # सार्वजनिक या nginx, संस्करण के आधार पर
उसके बाद, इसे kubectl apply -f clusterissuer.yaml
के साथ अपने क्लस्टर पर लागू करें और आप सेट हो गए!
एक इंग्रेस बनाना
अब, आपको उस सेवा का नाम प्राप्त करने की आवश्यकता है जिसे आप दुनिया के सामने उजागर करना चाहते हैं। इसे kubectl get service
से प्राप्त कर सकते हैं।
इस उदाहरण में, मान लें कि आपकी सेवा डिफ़ॉल्ट नेमस्पेस में “nginx” नाम की है। अपने डोमेन “test.datafortress.cloud” को इसे रूट करने के लिए, आपको निम्नलिखित testdf-ingress.yaml बनाना होगा:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-nginx-test
namespace: default
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
#अपने डोमेन को बदलें
- test.datafortress.cloud
secretName: tls-secret
rules:
#अपने डोमेन को बदलें
- host: test.datafortress.cloud
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
इसे kubectl apply -f testdf-ingress.yaml
के साथ लागू करें, और अपने नोड द्वारा उपयोग किए जाने वाले लोड बैलैंसर को अपने द्वारा उपयोग किए गए डोमेन को इंगित करें। जल्द ही आपको इसे अपने क्लस्टर में काम करते हुए दिखाई देगा, और आपकी सेवा उस डोमेन पर दिखाई देगी जिसे आपने इंग्रेस में बताया है।
डिबग करने के लिए, nginx पॉड या प्रमाणपत्र देखें।
समस्या आ रही है? हमसे संपर्क करें
और हम आपकी मदद करेंगे!
हालांकि यह समाधान आपको अपने क्लाउड बिल पर पैसे बचा सकता है, ध्यान रखना महत्वपूर्ण है कि बिना लोड बैलैंसर का उपयोग करने से अपनी चुनौतियां हो सकती हैं। उदाहरण के लिए, यदि कोई नोड विफल हो जाता है, तो ट्रैफ़िक स्वचालित रूप से किसी स्वस्थ सर्वर पर नहीं भेजा जाएगा, जिससे आपकी सेवा के लिए डाउनटाइम हो सकता है। कई मामलों में, लोड बैलैंसर अभी भी सबसे अच्छा विकल्प है क्योंकि यह स्वचालित फेलओवर प्रदान करता है और सुनिश्चित करता है कि आपकी सेवाएँ आपके ग्राहकों के लिए उपलब्ध रहें। आपके लिए लागत बचत को संभावित जोखिमों को तौलना और अपनी आवश्यकताओं के लिए सबसे अच्छा समाधान चुनना है।
संस्करण 2: 0 लोड बैलैंसर के साथ और भी अधिक पैसे बचाएँ!
यदि आप अपने क्लाउड बिल पर और भी अधिक पैसे बचाना चाहते हैं, तो उपरोक्त समाधान का एक विकल्प है जो बिल्कुल भी लोड बैलैंसर का उपयोग नहीं करता है! एनजीएनएक्स इंग्रेस का उपयोग करने के बजाय, यह समाधान सर्वर पर नोडपोर्ट 80 और 443 का उपयोग करता है ताकि ट्रैफ़िक को उपयुक्त पॉड्स में पुनर्निर्देशित किया जा सके। इससे किसी भी लोड बैलैंसर की आवश्यकता समाप्त हो जाती है, जिससे आपकी क्लाउड लागतों में काफी कमी आ सकती है। आइए इस समाधान के विवरण में गहराई से देखें।
ऐसा करने के लिए, हम अपने मौजूदा nginx इंग्रेस को नोडपोर्ट का उपयोग करने के लिए अपग्रेड करेंगे बजाय लोड बैलैंसर के:
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx
--namespace ingress-nginx \
--create-namespace \
--set controller.service.type=NodePort \
--set controller.service.ports.http=80 \
--set service.annotations."metallb.universe.tf/address-pool"=singlenode \
--set controller.service.ports.https=443
जल्द ही आपको अपने ingress-nginx सर्विस को नोडपोर्ट पर स्विच करते हुए दिखाई देना चाहिए, और लोड बैलैंसर गायब होना चाहिए।
जबकि लोड बैलैंसर क्लस्टर में स्थिरता प्रदान करते हैं, यह एकल-नोड कुबरनेट्स वितरण के साथ पैसे बचाने का एक वैध तरीका है। लोड बैलैंसर की आवश्यकता समाप्त करके और केवल नोड पोर्ट 80 और 443 पर निर्भर करके, आप अपनी मासिक लागत में काफी कमी ला सकते हैं। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि लोड बैलैंसर के न होने का मतलब यह भी है कि किसी नोड के विफल होने की स्थिति में, ट्रैफ़िक स्वतः किसी स्वस्थ सर्वर पर नहीं जाएगा। यदि आप एकल-नोड क्यूबरनेट्स वितरण चला रहे हैं, तो स्थिरता और लागत बचत के बीच यह व्यापार-बदल सोचने लायक है।
निर्णय: क्या यह इसके लायक है?
संक्षेप में, आपके कुबरनेट्स क्लस्टर में लागत कम करने के कई तरीके हैं, एनजीएनएक्स इंग्रेस के साथ केवल एक लोड बैलैंसर का उपयोग करने से लेकर नोडपोर्ट पर निर्भर रहते हुए 0 लोड बैलैंसर तक। जबकि लोड बैलैंसर की अपनी स्थिरता और ट्रैफ़िक रूटिंग सुनिश्चित करने की विशेषताएं हैं, ऐसे विकल्प मौजूद हैं जो लागत कम करने में मदद कर सकते हैं। यदि आप अभी भी अपने कुबरनेट्स क्लस्टर में पैसे बचाने के सबसे अच्छे तरीके से अनिश्चित हैं, डेटाफोर्ट्रेस.क्लाउड द्वारा दी जाने वाली लागत-प्रभावी साझा कुबरनेट्स क्लस्टर का लाभ उठाएं, या अपने क्लस्टर लागतों के प्रबंधन में हमारी सहायता लें ।