हां, एक नियमित पॉड लगातार मात्रा का उपयोग कर सकता है। हालांकि, कभी-कभी आपके पास कई फोड होते हैं जो तर्कसंगत रूप से "समूह" बनाते हैं। इसके उदाहरण डेटाबेस प्रतिकृतियां, चिड़ियाघर के मेजबान, काफ्का नोड्स इत्यादि होंगे। इन सभी मामलों में सर्वरों का एक गुच्छा है और वे एक साथ काम करते हैं और एक-दूसरे से बात करते हैं। उनके बारे में विशेष बात यह है कि समूह में प्रत्येक व्यक्ति की पहचान होती है। उदाहरण के लिए, डेटाबेस क्लस्टर के लिए एक मास्टर होता है और दो अनुयायियों होते हैं और प्रत्येक अनुयायी मास्टर के साथ संवाद करते हैं जो यह बताते हैं कि उसके पास क्या है और यह सिंक नहीं हुआ है। इसलिए अनुयायियों को पता है कि "डीबी-एक्स -0" मास्टर है और मास्टर जानता है कि "डीबी-एक्स -2" एक अनुयायी है और इसमें सभी डेटा एक निश्चित बिंदु तक हैं लेकिन फिर भी उससे परे डेटा की आवश्यकता है।
ऐसी स्थितियों में आप आप आसानी से एक नियमित रूप से फली से नहीं मिल सकता है कुछ चीजें की जरूरत है:
- एक उम्मीद के मुताबिक नाम: आप उन्हें बता रही है जहां एक दूसरे को खोजने के लिए तो वे फार्म कर सकते हैं अपने फली शुरू करना चाहते हैं एक समूह, एक नेता का चुनाव, इत्यादि। लेकिन आपको ऐसा करने के लिए पहले से ही उनके नाम जानना होगा। सामान्य फोड नाम यादृच्छिक होते हैं ताकि आप उन्हें पहले से नहीं जान सकें।
- एक स्थिर पता/DNS नाम: आप चाहते हैं कि चरण (1) में जो भी नाम उपलब्ध हों, वही रहें। यदि एक सामान्य फोड पुनरारंभ होता है (आप पुन: नियोजित करते हैं, मेजबान जहां यह मर रहा था, आदि) किसी अन्य होस्ट पर इसे एक नया नाम और एक नया आईपी पता मिलेगा।
- समूह में व्यक्तिगत और उनके लगातार मात्रा के बीच एक लगातार लिंक: मेजबान जहां अपने डेटाबेस मास्टर से एक चल रहा था मर जाता है अगर यह एक नया मेजबान के लिए ले जाया कर देंगे लेकिन ही लगातार मात्रा से कनेक्ट करना चाहिए क्योंकि एक और केवल 1 वॉल्यूम है जिसमें उस "व्यक्तिगत" के लिए सही डेटा है। इसलिए, उदाहरण के लिए, यदि आप अपने 3 डेटाबेस होस्ट्स के समूह को फिर से नियोजित करते हैं, तो आप वही व्यक्ति (DNS नाम और आईपी एड्रेस द्वारा) को एक ही निरंतर मात्रा प्राप्त करने के लिए चाहते हैं, इसलिए मास्टर अभी भी मास्टर है और अभी भी वही डेटा है, replica1 इसे प्राप्त करता है डेटा, आदि
StatefulSets इन मुद्दों को हल क्योंकि वे प्रदान करते हैं (https://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/ से उद्धृत):
- स्थिर, अद्वितीय नेटवर्क पहचानकर्ता।
- स्थिर, लगातार भंडारण।
- आदेश दिया गया, सुंदर तैनाती और स्केलिंग।
- आदेश दिया गया, सुन्दर हटाना और समाप्ति।
मैं वास्तव में के बारे में बात नहीं की (3) और (4 है), लेकिन वह भी समूहों के साथ मदद कर सकते हैं के रूप में आप को तैनात करने के पहले एक बता मास्टर और अगले एक पहले खोजने के लिए और यह इलाज बनने के लिए कर सकते हैं मास्टर के रूप में, आदि
जैसा कि कुछ ने ध्यान दिया है, आप वास्तव में कुछ नियमित फोड और सेवाओं का उपयोग करके समान लाभ के कर सकते हैं, लेकिन यह और भी अधिक काम करता है। उदाहरण के लिए, यदि आप 3 डेटाबेस उदाहरण चाहते थे तो आप मैन्युअल रूप से 3 तैनाती और 3 सेवाएं बना सकते हैं।ध्यान दें कि आपको मैन्युअल रूप से 3 तैनाती बनाना होगा क्योंकि आपके पास तैनाती में एक ही पॉड के लिए सेवा बिंदु नहीं हो सकता है। फिर, स्केल करने के लिए आप मैन्युअल रूप से एक और तैनाती और दूसरी सेवा बनायेंगे। पेट्ससेट/पर्सिस्टेंटसेट के साथ आने से पहले यह काम करता है और कुछ हद तक आम अभ्यास था। ध्यान दें कि इसमें ऊपर सूचीबद्ध कुछ लाभ गायब हैं (उदाहरण के लिए निरंतर वॉल्यूम मैपिंग & निश्चित प्रारंभ क्रम)।
स्रोत
2017-01-19 03:28:27
यह एक बहुत ही अच्छी तरह से व्यक्त उत्तर है जो मुझे वही देता है जो मुझे चाहिए। अच्छा किया, और धन्यवाद! –
बस थोड़ा सा पचाना, पूर्णता के लिए, कुबर्नेट्स सेवाएं मुझे (आपका) 1 और 2 दें? (मुझे मिलता है (आपका) 3 अद्वितीय है।) क्या मैं सिर्फ सेवा के साथ अपने सभी (प्रासंगिक) Pods को आगे नहीं बढ़ा सकता और ऐसा करके, अनुमानित नाम और पते प्राप्त कर सकता हूं? –
आपको अपने निरंतर वोल्म को मैन्युअल रूप से एक नोड से दूसरे में ले जाना होगा। एक स्टेटफुलसेट भी पॉड के साथ लगातार वोल्यूम को स्थानांतरित करने का ख्याल रखेगा। – iamnat