क्या है - चयनकर्ता - मैचलैबल्स का उपयोग तैनाती बनाते समय किया जाता है?


18

से Kubernetes प्रलेखन :

चयनकर्ता फ़ील्ड परिभाषित करता है कि तैनाती किस प्रकार पॉड्स का प्रबंधन करती है।

लेकिन, परिनियोजन बनाते समय, मैं पहले से ही परिनियोजन के भाग के रूप में पॉड टेम्पलेट निर्दिष्ट करता हूं। तो, मुझे चयनकर्ताओं की आवश्यकता क्यों होगी?

क्या इसे सेवाओं की तरह इस्तेमाल किया जाना चाहिए, जहां पहले से ही फली को अलग-अलग शुरू किया जा रहा है, लेकिन बाद में तैनाती की छतरी के नीचे एक साथ प्रबंधित किया जाना चाहिए?

जवाबों:


8

इस प्रश्न का उत्तर हम kubernetes.io से अनुभाग तैनाती में पा सकते हैं

तो, मुझे चयनकर्ताओं की आवश्यकता क्यों होगी?

K8s v 1.14 के लिए प्रलेखन से नीचे के उद्धरण

.spec.selectorएक आवश्यक फ़ील्ड है जो इस तैनाती द्वारा लक्षित पॉड्स के लिए एक लेबल चयनकर्ता को निर्दिष्ट करता है।

.spec.selectorमेल खाना चाहिए .spec.template.metadata.labels, या इसे एपीआई द्वारा अस्वीकार कर दिया जाएगा।

API संस्करण ऐप्स / v1 में, .spec.selector और .metadata.labels सेट नहीं होने पर .spec.template.metadata.labels के लिए डिफ़ॉल्ट नहीं है। इसलिए उन्हें स्पष्ट रूप से सेट किया जाना चाहिए । यह भी ध्यान दें कि .spec.selector ऐप्स / v1 में परिनियोजन के निर्माण के बाद अपरिवर्तनीय है।

परिनियोजन पॉड्स को समाप्त कर सकता है जिनके लेबल चयनकर्ता से मेल खाते हैं यदि उनका टेम्पलेट .spec.template से अलग है या यदि ऐसे पॉड की कुल संख्या .spec.replicas से अधिक है। यह। Podec.template के साथ नए पॉड्स लाता है यदि पॉड्स की संख्या वांछित संख्या से कम है।

फली पहले से ही अलग से शुरू की जा रही है, लेकिन बाद में तैनाती की छतरी के नीचे एक साथ प्रबंधित किया जा सकता है?

सीधे शब्दों में, नहीं

नोट: आपको अन्य पॉड्स नहीं बनाने चाहिए जिनके लेबल इस चयनकर्ता से मेल खाते हैं, या तो सीधे, किसी अन्य Deploymentको बनाकर या किसी अन्य नियंत्रक जैसे कि a ReplicaSetया a को बनाकर ReplicationController। यदि आप ऐसा करते हैं, तो पहला Deploymentविचार करता है कि इसने इन अन्य पॉड्स को बनाया है। Kubernetesआपको ऐसा करने से नहीं रोकता है। यदि आपके पास कई नियंत्रक हैं जो अतिव्यापी चयनकर्ता हैं, तो नियंत्रक एक दूसरे के साथ लड़ेंगे और सही तरीके से व्यवहार नहीं करेंगे।


5
तो इसका उपयोग किस लिए किया जाता है? ऐसा लगता है कि आपको हमेशा चयनकर्ता को कल्पना के लेबल से मेल खाना चाहिए ... क्या ऐसा कुछ मामला है जहां ऐसा नहीं करना उपयोगी है?
विक्टर नोएल

4
वास्तव में सवाल का जवाब क्यों नहीं देता है? - मैचलैबल्स क्यों मौजूद हैं और मेल खाने चाहिए .spec.template.metadata.labels? इसका क्या मतलब है, जैसा specकि वैसे भी नीचे परिभाषित किया गया है, Deploymentइसलिए यह स्पष्ट है कि तैनाती के लिए क्या पॉड्स शुरू किए गए हैं।
इवान

2
जो कोई भी इस चर्चा में शामिल होता है, उसे नवीनतम दस्तावेज़ीकरण की जाँच करनी चाहिए। उदाहरण के लिए, वर्तमान में, .spec.selector कोई वैकल्पिक फ़ील्ड नहीं है। यह एक आवश्यक क्षेत्र है। kubernetes.io/docs/concepts/workloads/controllers/deployment
SoftwareTheory

आपकी टिप्पणी के लिए बहुत बहुत धन्यवाद। मुझे लगता है कि नए दस्तावेज़ीकरण में लेखकों ने आवश्यक को सही किया है, क्योंकि पुराने डॉक्स में इस क्षेत्र को वैकल्पिक बताया गया था, लेकिन अगली पंक्ति के लेखकों ने कहा कि इस क्षेत्र को स्पष्ट रूप से सेट किया जाना चाहिए :) इसलिए प्रभावी रूप से इस क्षेत्र की भी आवश्यकता थी
अलेक्जेंडर.पोलोमोडोव

@SoftwareTheory हाँ, लेकिन यह अभी भी यह नहीं समझाता है कि इसकी आवश्यकता क्यों है, क्योंकि पॉड स्पेक टेम्पलेट को वैसे भी नीचे परिभाषित किया गया है।
user168317
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.