तो मेरे पास कुबेरनेट्स के अंदर एक लोचदार खोज क्लस्टर है।

जिस मशीन पर यह चल रहा है उसमें 30 जीबी रैम और 8 कोर हैं।

अब थंब रूल के अनुसार 50% RAM वह है जिसे हम ES_JAVA_OPTS के रूप में सेट करते हैं और शेष फ़ाइल कैशिंग के लिए उपयोग किया जाता है। यहां यह 15 जीबी . होगा

इसके अलावा शीर्ष चार्ट में हमारे पास नीचे उल्लिखित संसाधन आवश्यकताएं हैं:

resources:
  limits:
    cpu: 8
    memory: 15Gi
  requests:
    cpu: 8
    memory: 15Gi

मेरा सवाल यह है कि क्या ५०% रैम होस्ट मशीन (जो ३० जीबी है) की है या हेलम चार्ट १५ जीबी में निर्दिष्ट सीमा है

क्या कोई समझा सकता है कि कुबेरनेट्स में रैम का उपयोग कैसे किया जाता है

क्योंकि यदि होस्ट और फ़ाइल कैशिंग के संबंध में इसे परिनियोजित एप्लिकेशन के उपयोग के रूप में नहीं माना जाता है तो हम ठीक हैं। लेकिन अगर यह संसाधन सीमा के भीतर है तो मुझे 30GB तक बढ़ाने की जरूरत है।

संपादित करें:

यहां सवाल यह है कि अगर एक इलास्टिक्स खोज नोड ने 50% RAM को हीप के रूप में और 50% फ़ाइल कैशिंग के रूप में उपयोग किया है और मैं 30GB मशीन में हीप को 15GB (RAM का 50%) के रूप में उल्लेख करता हूं। तो क्या मुझे परिनियोजन टेम्पलेट में लगभग 15GB के रूप में संसाधन सीमाओं का उल्लेख करना चाहिए, जिसके लिए हीप को 30GB (जैसे 28GB) की आवश्यकता होती है कि नियम से Elasticsearch को फ़ाइलों को कैश करने में सक्षम होना चाहिए।

यह चिंता के रूप में आता है जैसे कि पॉड किसी भी समय टेम्पलेट पर उल्लिखित सीमा से अधिक हो जाता है, कुबेरनेट्स पॉड को पुनरारंभ करता है।

तो दूसरे शब्दों में मैं जानना चाहता हूं कि पॉड के समग्र मेमोरी उपयोग में रैम फ़ाइल कैशिंग चलन में है या नहीं।

नोट: मैं ईएस डेटा के प्राथमिक भंडारण के रूप में इंस्टेंस स्टोरेज का उपयोग कर रहा हूं क्योंकि यह ईबीएस की तुलना में बहुत तेज है।

निष्कर्ष:

सिस्टम में हीप को रैम में आधा रखें और संसाधन सीमा (यदि कोई हो) में उल्लेख किया गया है

1
Jugraj Singh 8 सितंबर 2020, 23:29

2 जवाब

सबसे बढ़िया उत्तर

मैं k8s और docker का विशेषज्ञ नहीं हूं, लेकिन जो मैं समझता हूं वह यह है कि, docker कंटेनर होस्ट संसाधनों का उपयोग करता है और संसाधन सीमा का उपयोग करके आप उन संसाधनों पर एक कठिन सीमा रख सकते हैं जिनका वह उपभोग कर सकता है।

यदि आप 15GB की संसाधन सीमा रखते हैं, तो कुल मिलाकर आपका डॉकटर कंटेनर 15GB होस्ट RAM का उपभोग कर सकता है। अब यह फ़ाइल सिस्टम कैश को होस्ट के साथ साझा करेगा या नहीं यह इस बात पर निर्भर करता है कि आपने अपने डॉकटर वॉल्यूम को कैसे कॉन्फ़िगर किया है।

चूंकि डॉकर कंटेनर में बाइंड वॉल्यूम का उपयोग करके फ़ाइल सिस्टम को होस्ट के साथ साझा करने का विकल्प होता है या इसका अपना डेटा वॉल्यूम है (जो क्षणिक है और ES के लिए एक स्टेटफुल एप्लिकेशन के रूप में उपयुक्त नहीं है)। पहले विकल्प में इसे फ़ाइल सिस्टम कैश को होस्ट के साथ साझा करना चाहिए और आपको संसाधन सीमा को और नहीं बढ़ाना चाहिए (अनुशंसित है कि आपके पास ES है जो स्टेटफुल है) और दूसरे विकल्प में, क्योंकि यह अपने स्वयं के फ़ाइल सिस्टम का उपयोग करेगा, जिसके लिए आपको RAM आवंटित करना होगा इसका फाइल सिस्टम कैश है और रैम को 30 जीबी तक बढ़ाना है, लेकिन आपको होस्ट ओएस के लिए भी कुछ जगह देनी होगी।

2
Elasticsearch Ninja 9 सितंबर 2020, 06:07

कंटेनर को कंटेनर के बजाय हमेशा नोड की मेमोरी दिखाई देगी। Kubernertes में, भले ही आप एक कंटेनर में मेमोरी के लिए एक सीमा निर्धारित करते हैं, कंटेनर स्वयं इस सीमा से अवगत नहीं है।

इसका उन अनुप्रयोगों पर प्रभाव पड़ता है जो सिस्टम पर उपलब्ध स्मृति की तलाश करते हैं और उस जानकारी का उपयोग यह तय करने के लिए करते हैं कि वह स्मृति को कैसे आरक्षित करना चाहता है।

यही कारण है कि आप JVM हीप साइज। इस निर्दिष्ट के बिना JVM कंटेनर के लिए उपलब्ध (जिसे आपने सीमा के रूप में घोषित किया है) के बजाय होस्ट/नोड कुल मेमोरी के आधार पर अधिकतम ढेर आकार सेट करेगा।

कैसे सीमित करें, इस बारे में यह लेख देखें k8s में काम करता है

0
thomas 9 सितंबर 2020, 12:12