2016-02-12 13 views
5

में कंटेनर के बीच निरंतर वॉल्यूम दावों को साझा करें यह एक बेवकूफ सवाल हो सकता है लेकिन मुझे बहुत अधिक ऑनलाइन नहीं मिला है और इसे स्पष्ट करना चाहते हैं।कुबर्नेट्स/ओपनशफ्ट

को देखते हुए दो तैनाती ए और बी, दोनों अलग कंटेनर छवियों के साथ:

  • वे दो अलग अलग फली में तैनात कर रहे हैं (विभिन्न आर सी, एसवीसी आदि) एक K8/OpenShift क्लस्टर में।
  • दोनों को फ़ाइलों को पढ़ने के लिए एक ही वॉल्यूम तक पहुंचने की आवश्यकता है (चलिए अब इसके लिए लॉकिंग छोड़ दें) या उस वॉल्यूम में कम से कम एक ही निर्देशिका संरचना।
  • एनएफएस शेयर के खिलाफ कॉन्फ़िगर किए गए पीवी (पर्सिस्टेंट वॉल्यूम) द्वारा समर्थित पीवीसी (पर्सिस्टेंट वॉल्यूम दावा) का उपयोग करके इस वॉल्यूम को बढ़ाना।

क्या मैं पुष्टि कर सकता हूं कि उपरोक्त वास्तव में संभव होगा? अर्थात। दो अलग उसी पीवीसी के साथ समान मात्रा से जुड़े फली। तो वे दोनों एक ही मात्रा से पढ़ रहे हैं।

आशा है कि समझ में आता है ...

उत्तर

6

टीएल; डीआर आप साझा वॉल्यूम (एनएफएस, ग्लस्टर, इत्यादि ...) के लिए एक ही प्रोजेक्ट/नेमस्पेस के भीतर पीवी और पीवीसी साझा कर सकते हैं, आप कई परियोजनाओं/नामस्थानों से अपनी साझा मात्रा तक पहुंच सकते हैं लेकिन इसकी आवश्यकता होगी प्रोजेक्ट समर्पित पीवी और पीवीसी, एक पीवी के रूप में एक परियोजना/नामस्थान के लिए बाध्य है और पीवीसी प्रोजेक्ट/नेमस्पेस स्कॉप्ड है।

नीचे मैंने वर्तमान व्यवहार को स्पष्ट करने की कोशिश की है और कैसे पीवी और पीवीसी ओपनशफ्ट के भीतर स्कॉप्ड किए गए हैं। एनएफएस का उपयोग लगातार स्टोरेज परत के रूप में ये सरल उदाहरण हैं।

इस बिंदु पर एक्सेस मोड केवल लेबल हैं, उनके पास पीवी तक पहुंच नियंत्रित करने के संदर्भ में कोई वास्तविक कार्यक्षमता नहीं है। नीचे दिए गए कुछ उदाहरण नीचे दिए गए हैं

पीवी इस अर्थ में वैश्विक है कि इसे किसी भी प्रोजेक्ट/नेमस्पेस द्वारा देखा/एक्सेस किया जा सकता है, फिर भी जब यह किसी प्रोजेक्ट से जुड़ा होता है, तो इसे केवल कंटेनर द्वारा एक्सेस किया जा सकता है एक ही प्रोजेक्ट/नेमस्पेस

पीवीसी प्रोजेक्ट/नेमस्पेस विशिष्ट है (इसलिए यदि आपके पास बहु परियोजनाएं हैं तो आपको साझा एनएफएस वॉल्यूम से कनेक्ट करने के लिए प्रत्येक प्रोजेक्ट के लिए एक नया पीवी और पीवीसी होना होगा - पहले से पीवी का पुन: उपयोग नहीं कर सकता परियोजना)

उदाहरण 1:
मैं 2 अलग फली में "डिफ़ॉल्ट" परियोजना/namespa चल रहा है सीई, दोनों एक ही पीवी और एनएफएस निर्यातित शेयर तक पहुंच रहे हैं। दोनों माउंट और रन ठीक है।

[[email protected] nfs_error]# oc get pv 
NAME  LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE 
pv-nfs <none> 1Gi  RWO   Bound default/nfs-claim    3m 


[[email protected] nfs_error]# oc get pods <--- running from DEFAULT project, no issues connecting to PV 
NAME    READY  STATUS RESTARTS AGE 
nfs-bb-pod2-pvc 1/1  Running 0   11m 
nfs-bb-pod3-pvc 1/1  Running 0   10m 

उदाहरण 2:
मैं में "डिफ़ॉल्ट" परियोजना/नाम स्थान चल रहा है और एक ही पीवी का उपयोग कर एक और फली बनाने का प्रयास लेकिन testproject नामक एक नई परियोजना से एक ही एनएफएस निर्यात का उपयोग करने के 2 अलग फली है । नए testproject से तीसरा पॉड पीवी से जुड़ने में सक्षम नहीं होगा क्योंकि यह पहले से ही default प्रोजेक्ट से जुड़ा हुआ है।

[[email protected] nfs_error]# oc get pv 
NAME  LABELS CAPACITY ACCESSMODES STATUS CLAIM REASON AGE 
pv-nfs <none> 1Gi  RWO   Bound default/nfs-claim    3m 


[[email protected] nfs_error]# oc get pods <--- running from DEFAULT project, no issues connecting to PV 
NAME    READY  STATUS RESTARTS AGE 
nfs-bb-pod2-pvc 1/1  Running 0   11m 
nfs-bb-pod3-pvc 1/1  Running 0   10m 

** एक अन्य परियोजना (testproject) और पीवीसी से मौजूदा पीवी के खिलाफ एक नया दावा असफल हो जायेगी

[[email protected] nfs_error]# oc get pvc 
NAME  LABELS STATUS VOLUME CAPACITY ACCESSMODES AGE 
nfs-claim <none> Pending          2s 

** NFS दावा PV-NFS पीवी क्योंकि करने के लिए बाध्य नहीं होगा बनाएं यह इसे नहीं देख सकते से यह चालू परियोजना गुंजाइश है

उदाहरण 3:

2 अलग फली "डिफ़ॉल्ट में चल रहा है "प्रोजेक्ट और फिर testproject से एक और पीवी और पीवीसी और पॉड बनाएं। दोनों परियोजनाएं एक ही एनएफएस निर्यातित शेयर तक पहुंच पाएंगी, लेकिन मुझे प्रत्येक परियोजना में पीवी और पीवीसी की आवश्यकता है।

[[email protected] nfs_error]# oc get pv 
NAME  LABELS CAPACITY ACCESSMODES STATUS  CLAIM     REASON AGE 
pv-nfs <none> 1Gi  RWX   Bound  default/nfs-claim     14m 
pv-nfs2 <none> 1Gi  RWX   Bound  testproject/nfs-claim2    9m 



[[email protected] nfs_error]# oc get pods --all-namespaces 
NAMESPACE  NAME    READY  STATUS RESTARTS AGE 
default  nfs-bb-pod2-pvc 1/1  Running 0   11m 
default  nfs-bb-pod3-pvc 1/1  Running 0   11m 
testproject nfs-bb-pod4-pvc 1/1  Running 0   15s 

** नोटिस, मैं अब तीन फली दो परियोजनाओं में एक ही एनएफएस साझा मात्रा करने के लिए चल रहा है, लेकिन मैं जरूरत दो पीवी के रूप में वे एक भी परियोजना के लिए बाध्य कर रहे हैं, और 2 पीवीसी के, एक-एक परियोजना के लिए और एनएफएस पीवी मैं का उपयोग करने की कोशिश कर रहा हूँ

उदाहरण 4:

मैं बाई-पास पीवी और पीवीसी, मैं साझा एनएफएस संस्करणों के लिए सीधे सीधे प्लगइन

NFS का उपयोग कर किसी भी परियोजना से कनेक्ट कर सकते हैं
volumes: 
- name: nfsvol 
    nfs: 
    path: /opt/data5 
    server: nfs1.rhs 

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

आशा है कि

+0

धन्यवाद यह आवंटित करने में मदद करता है। –

+0

@DonovanMuller: मैं एकाधिक फली के लिए एक ही पीवी का उपयोग करने की कोशिश भी कर रहा हूं, यह ठीक काम करता है, लेकिन मुझे लगता है कि डेटा इस मामले में फली के बीच भी साझा किया जाता है। यहां मेरी मुख्य चिंता यह है कि यदि पीवी में 2 जीबी डेटा कहता है, तो क्या यह डेटा उन पीडों के लिए उपलब्ध होगा जो इस पीवी का उपयोग कर रहे हैं, जिसे हम सही नहीं चाहते हैं। पॉड के पास केवल इसका डेटा होना चाहिए, न कि दूसरों के। मैंने यहां इस सवाल से भी पूछा http://stackoverflow.com/questions/36624034/openshift-persistent- volumes, लेकिन कोई प्रतिक्रिया नहीं। यदि आप इसे साफ़ कर सकते हैं तो बहुत उपयोगी होगा। अग्रिम में धन्यवाद! – priyank

+0

@ स्क्रीनलाइन: मेरी उपरोक्त क्वेरी के लिए भी आपके विचारों की सराहना करेगा। अनेक अनेक धन्यवाद ! – priyank

0

AFAIK, एक पीवी कई बार बाध्यकारी समर्थित नहीं है। आप सीधे अपने उपयोग के मामले के लिए वॉल्यूम स्रोत (आपके मामले में एनएफएस) का उपयोग कर सकते हैं।

+0

में मदद करता है इस पर आधारित (http://kubernetes.io/v1.1/examples/nfs/) यह वास्तव में संभव है? उदाहरण में एक ही पीवीसी का उपयोग कर दो आरसी हैं। –

+0

आप कहीं भी पीवी को बांध सकते हैं, लेकिन वॉल्यूम प्रदाता स्वयं एक साथ पहुंच (केफ, ईबीएस, या जीसीई के लिए) संलग्नक अनुरोध को अस्वीकार कर सकता है। एनएफएस की कोई गारंटी नहीं है - यदि आप एनएफएस को दो फोडों से एक साथ इस्तेमाल करने से रोकना चाहते हैं तो आपको अपनी बाड़ लगाने/लॉकिंग की आवश्यकता होगी। – Clayton

+0

@ क्लेटन: मैं एकाधिक फली के लिए एक ही पीवी का उपयोग करने की कोशिश कर रहा हूं, यह ठीक काम करता है, लेकिन मुझे लगता है कि डेटा इस मामले में फली के बीच भी साझा किया जाता है। यहां मेरी मुख्य चिंता यह है कि यदि पीवी में 2 जीबी डेटा कहता है, तो क्या यह डेटा उन पीडों के लिए उपलब्ध होगा जो इस पीवी का उपयोग कर रहे हैं, जिसे हम सही नहीं चाहते हैं। पॉड के पास केवल इसका डेटा होना चाहिए, न कि दूसरों के। मैंने यहां इस सवाल से भी stackoverflow.com/questions/36624034/... पूछा, लेकिन कोई प्रतिक्रिया नहीं। यदि आप इसे साफ़ कर सकते हैं तो बहुत उपयोगी होगा। अग्रिम में धन्यवाद! – priyank