प्रोहोस्टर > ब्लॉग > प्रशासन > टीसीपीसर्वर और नेटकैट के साथ कुबेरनेट्स पॉड या कंटेनर में सुरंग कैसे खोलें
टीसीपीसर्वर और नेटकैट के साथ कुबेरनेट्स पॉड या कंटेनर में सुरंग कैसे खोलें
टिप्पणी। अनुवाद।: लेयरसीआई के निर्माता का यह व्यावहारिक नोट कुबेरनेट्स (और न केवल) के लिए तथाकथित युक्तियों और युक्तियों का एक उत्कृष्ट उदाहरण है। यहां प्रस्तावित समाधान केवल कुछ में से एक है और, शायद, सबसे स्पष्ट नहीं है (कुछ मामलों के लिए, टिप्पणियों में पहले से ही उल्लिखित K8s के लिए "मूल" समाधान उपयुक्त हो सकता है kubectl port-forward). हालाँकि, यह आपको कम से कम शास्त्रीय उपयोगिताओं का उपयोग करने और उन्हें आगे संयोजित करने के परिप्रेक्ष्य से समस्या को देखने की अनुमति देता है - साथ ही सरल, लचीला और शक्तिशाली (प्रेरणा के लिए अंत में "अन्य विचार" देखें)।
एक सामान्य स्थिति की कल्पना करें: आप अपनी स्थानीय मशीन पर जादुई तरीके से ट्रैफिक को पॉड/कंटेनर (या इसके विपरीत) पर अग्रेषित करने के लिए एक पोर्ट चाहते हैं।
संभावित उपयोग के मामले
जांचें कि HTTP समापन बिंदु क्या लौटाता है /healthz उत्पादन क्लस्टर में पॉड।
एक टीसीपी डिबगर को स्थानीय मशीन पर पॉड से कनेक्ट करें।
प्रमाणीकरण से परेशान हुए बिना स्थानीय डेटाबेस टूल से उत्पादन डेटाबेस तक पहुंच प्राप्त करें (आमतौर पर लोकलहोस्ट के पास रूट अधिकार होते हैं)।
स्टेजिंग क्लस्टर में डेटा के लिए कंटेनर बनाए बिना उसके लिए एक बार की माइग्रेशन स्क्रिप्ट चलाएँ।
VNC सत्र को वर्चुअल डेस्कटॉप चलाने वाले पॉड से कनेक्ट करें (XVFB देखें)।
आवश्यक उपकरणों के बारे में कुछ शब्द
टीसीपीसर्वर - अधिकांश लिनक्स पैकेज रिपॉजिटरी में उपलब्ध एक ओपन सोर्स उपयोगिता। यह आपको एक स्थानीय पोर्ट खोलने और किसी भी निर्दिष्ट कमांड से stdin/stdout के माध्यम से प्राप्त ट्रैफ़िक को पुनर्निर्देशित करने की अनुमति देता है:
यह कमांड पॉड को स्थानीय मशीन पर पोर्ट 8000 तक पहुंचने की अनुमति देता है।
बैश स्क्रिप्ट
मैंने बैश के लिए एक विशेष स्क्रिप्ट लिखी है जो आपको कुबेरनेट्स उत्पादन क्लस्टर को प्रबंधित करने की अनुमति देती है लेयरसीआईऊपर वर्णित विधि का उपयोग करना:
kubetunnel() {
POD="$1"
DESTPORT="$2"
if [ -z "$POD" -o -z "$DESTPORT" ]; then
echo "Usage: kubetunnel [pod name] [destination port]"
return 1
fi
pkill -f 'tcpserver 127.0.0.1 6666'
tcpserver 127.0.0.1 6666 kubectl exec -i "$POD" nc 127.0.0.1 "$DESTPORT"&
echo "Connect to 127.0.0.1:6666 to access $POD:$DESTPORT"
}
यदि आप इस फ़ंक्शन को इसमें जोड़ते हैं ~/.bashrc, आप कमांड के साथ पॉड में एक सुरंग आसानी से खोल सकते हैं kubetunnel web-pod 8080 और करो curl localhost:6666.
सुरंग के लिए डाक में काम करनेवाला मज़दूर आप मुख्य लाइन को इससे बदल सकते हैं: