2016-07-14 6 views
5

Kubernetes docs से:कुबर्नेट्स - 'लोकलहोस्ट' के बजाय नामों का उपयोग करके एक फली के भीतर कंटेनर संचार?

एक फली में आवेदन पत्र सभी एक ही नेटवर्क नाम स्थान (एक ही आईपी और बंदरगाह अंतरिक्ष) का उपयोग करें, और इस प्रकार " लगता है" एक दूसरे को और स्थानीय होस्ट का उपयोग कर बातचीत कर सकते हैं।

locahost के बजाय कुछ कंटेनर विशिष्ट नामों का उपयोग करना संभव है?

उदाहरण के लिए, docker-compose up के साथ, आप संचार के लिए सेवा का उपयोग करते हैं। [docs]

तो, अगर मेरी डोकर-compose.yml फ़ाइल

version: '2' 
services: 
    web: 
    build: . 
    ports: 
     - "8000:8000" 
    srv: 
    build: . 
    ports: 
     - "3000:3000" 

है तो मैं web के भीतर से srvhttp://srv:3000/ फोन करके तक पहुँचने, नहींhttp://localhost:3000

मैं एक ही कैसे प्राप्त कर सकते कुबर्नेट्स में व्यवहार? पॉड्स 'yaml कॉन्फ़िगरेशन में किस नाम का उपयोग करना है यह निर्दिष्ट करने का कोई तरीका?

उत्तर

9

localhost बस नेटवर्क लूपबैक डिवाइस (आमतौर पर IPv6 के लिए आईपीवी 4 के लिए 127.0.0.1 और ::1) के लिए एक नाम है। यह आमतौर पर आपके /etc/hosts फ़ाइल में निर्दिष्ट होता है।

एक पॉड का अपना आईपी है, इसलिए आईपी के शेयरों के अंदर प्रत्येक कंटेनर। यदि इन कंटेनरों को स्वतंत्र होना चाहिए (यानी कोलाक करने की आवश्यकता नहीं है), तो वे प्रत्येक को अपने स्वयं के फली में होना चाहिए। फिर, आप प्रत्येक service को प्रत्येक के लिए परिभाषित कर सकते हैं जो DNS लुकअप को एक ही नामस्थान में फोड से "$ SERVICENAME" या विभिन्न नामस्थानों में फोड से "$ SERVICENAME। $ NAMESPACE" के रूप में अनुमति देता है।

+0

लेकिन मैं तो '/ etc/hosts' बदल नहीं सकते मेजबान आ सकता है और जाने के बाद से मैन्युअल रूप से एक फली का। इसके अलावा कंटेनर एक साथ हैं क्योंकि मैं उन्हें एक सेवा नहीं बना सकता। यहाँ चारों ओर किसी भी तरह से? – Jatin

1

docker-compose व्यक्तिगत कंटेनरों को तैनात करता है, उन्हें एक साथ जोड़ता है ताकि वे एक-दूसरे के नाम और आईपी को जान सकें।

कुबर्नेट्स में Pod समान है, लेकिन यह एकाधिक बाहरी सेवाओं को पकड़ने और उन्हें एक साथ जोड़ने के लिए पॉड का उद्देश्य नहीं है।

एक पॉड कंटेनर के लिए है जो एक ही होस्ट पर चलाना चाहिए, और केवल अपने आप में बातचीत करना चाहिए। कंटेनर स्थानीयहोस्ट के माध्यम से आंतरिक रूप से संवाद करते हैं।

अधिकांश Pods वास्तव में एक ही कंटेनर हैं।

PodServices का उपयोग कर बाहरी के साथ संचार करता है। संक्षेप में एक पॉड प्रकट होता है जैसे कि यह सिर्फ एक कंटेनर था।

हुड के नीचे, एक पॉड कम से कम 2 कंटेनर होता है: pause कंटेनर पॉड के आईपी और फिर आपके संलग्न कंटेनर का प्रबंधन करता है। यह आपके कंटेनर को आईपी बदलने के बिना पॉड में क्रैश, पुनरारंभ और रिंकिंक करने की अनुमति देता है, शेड्यूलर को शामिल किए बिना कंटेनर क्रैश का प्रबंधन करने की अनुमति देता है, और सुनिश्चित करता है कि पॉड अपने जीवनकाल के दौरान एक नोड पर रहता है, इसलिए पुनरारंभ करना तेज़ है।

तो कंटेनर हम जब भी दुर्घटना पुनर्निर्धारित, वे संभावित ऊपर एक अलग मेजबान पर खत्म होगा, मार्ग अद्यतन किया जाना आदि के लिए होता है ...

संबंधित मुद्दे