अपने बनाए गए K8S क्लस्टर में Alibaba Cloud Distributed Storage का उपयोग करना

यह लेख 2024.06.14 पर लिखा गया है, और बताता है कि अपने बनाए गए क्लस्टर में Alibaba Cloud Distributed Storage का उपयोग कैसे करें। अंत में दस्तावेज़ कनेक्शन जोड़े गए हैं। Alibaba Cloud का आधिकारिक दस्तावेज़ चीनी में है, लेकिन Alibaba Cloud स्टोरेज प्लगइन स्थापना github पर है, जहां वर्तमान में केवल अंग्रेजी दस्तावेज़ उपलब्ध है। योग्य पाठकों से अनुरोध है कि वे यथासंभव मूल पाठ पढ़ें।

परिचय

इस लेख को 2024.06.14 पर लिखा गया है, जो बताता है कि Alibaba Cloud के अपने बनाए गए क्लस्टर में Alibaba Cloud Distributed Storage का उपयोग कैसे करें। अंत में दस्तावेज़ लिंक जोड़े गए हैं, जहां Alibaba Cloud का आधिकारिक दस्तावेज़ चीनी में है, लेकिन Alibaba Cloud स्टोरेज प्लगइन की स्थापना github पर है, जहां वर्तमान में केवल अंग्रेजी दस्तावेज़ उपलब्ध है। योग्य पाठकों से अनुरोध है कि वे यथासंभव मूल पाठ पढ़ें।

स्टोरेज प्लगइन स्थापना

  1. कस्टम अनुमति नीति बनाएं: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/ram-policies/disk.json
  2. RAM रोल बनाएं, कस्टम अनुमति नीति प्रदान करें, accesskey और secret को अस्थायी रूप से संग्रहीत करें
    1. kubectl create secret -n kube-system generic csi-access-key --from-literal=id='{id}' --from-literal=secret='{secret}'
  3. CSI ड्राइवर स्थापित करें, helm chart नहीं है, केवल स्थानीय स्थापना (20240613)।
    1. git clone https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver.git
    2. cd alibaba-cloud-csi-driver/deploy
    3. यदि आप अपने बनाए गए क्लस्टर को Alibaba Cloud ECS पर स्थापित कर रहे हैं, तो आप सीधे अगली पंक्ति निष्पादित कर सकते हैं, यदि नहीं, तो कृपया स्वयं पढ़ें: https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/install.md
    4. helm upgrade --install alibaba-cloud-csi-driver ./chart --values chart/values-ecs.yaml --namespace kube-system
  4. पुष्टि करें, watch kubectl get pods -n kube-system -l app=csi-plugin

स्टोरेज प्रकार चयन संदर्भ

  • ECS डिस्क का न्यूनतम आकार 20GB है, IOPS 3000, जो काफी बड़ा आकार है और बहुत लाभदायक नहीं है।
    • डिस्क डायनामिक स्टोरेज वॉल्यूम
      • आधिकारिक दस्तावेज़:
        • डिस्क उपयोग के लिए क्षेत्रों के माध्यम से साझा भंडारण नहीं है और केवल एक पॉड द्वारा माउंट किया जा सकता है। (वास्तविक परीक्षण में यह एक ही डिप्लॉयमेंट के कई पॉड द्वारा माउंट किया जा सकता है)
        • डिस्क प्रकार और ECS प्रकार को माउंट करने के लिए मिलान किया जाना चाहिए, अन्यथा माउंट विफल हो जाएगा। डिस्क प्रकार और ECS प्रकार के मिलान संबंधों के बारे में, कृपया देखें इंस्टेंस प्रकार परिवार
        • एप्लिकेशन तैनाती के दौरान, StorageClass के माध्यम से PV के लिए डिस्क की स्वचालित खरीद। यदि आपने पहले से ही डिस्क खरीदी है, तो स्टैटिक डिस्क स्टोरेज वॉल्यूम का उपयोग करने की सलाह दी जाती है।
        • डिस्क के लिए अनुरोधित आकार, डिस्क की एकल डिस्क क्षमता सीमा के भीतर नहीं होना चाहिए।
        • जब पॉड पुनर्निर्माण होता है, तो मूल डिस्क पुनः माउंट होता है। यदि अन्य सीमाओं के कारण मूल क्षेत्र में शेड्यूल नहीं किया जा सकता है, तो पॉड पेंडिंग स्थिति में होगा।
        • डायनामिक रूप से बनाई गई डिस्क एक पेय-प्रति-उपयोग डिस्क है।
      • अन्य परीक्षण सारांश:
        • यद्यपि डिस्क को कई पॉड द्वारा माउंट किया जा सकता है, लेकिन केवल एक पॉड पढ़ और लिख सकता है, अन्य पॉड नहीं पढ़ और लिख सकते। इसलिए pvc में accessModes को केवल ReadWriteOnce के रूप में सेट किया जा सकता है, संशोधन सही परिणाम नहीं देगा।
        • यदि StorageClass का reclaimPolicy Delete के रूप में सेट है, तो PVC को हटाते समय डिस्क को भी स्वचालित रूप से हटा दिया जाएगा।
        • यदि StorageClass का reclaimPolicy Retain के रूप में सेट है, तो PVC को हटाते समय डिस्क को स्वचालित रूप से नहीं हटाया जाएगा, इसे क्लस्टर और Alibaba Cloud कंसोल में मैन्युअल रूप से हटाना होगा।
      • उपयुक्त उपयोग के सीनारियो को खोजना मुश्किल है।
    • डिस्क स्टैटिक स्टोरेज वॉल्यूम
      • आधिकारिक दस्तावेज़:
        • मैन्युअल रूप से PV और PVC बनाएं
        • डिस्क क्षेत्रों के माध्यम से उपयोग के लिए साझा भंडारण नहीं है, गैर-साझा भंडारण है, और केवल एक पॉड द्वारा माउंट किया जा सकता है।
        • डिस्क प्रकार और ECS प्रकार को माउंट करने के लिए मिलान किया जाना चाहिए, अन्यथा माउंट विफल हो जाएगा।
        • आप एक ही क्षेत्र और क्षेत्र में उपलब्ध क्षमता की स्थिति में डिस्क का चयन कर सकते हैं जो क्लस्टर से संबंधित है।
  • NAS ऑपरेशन विलंब बड़ा है, सबसे अच्छा प्रदर्शन 2ms, गहरा स्टोरेज 10ms, प्रति उपयोग शुल्क, ऑब्जेक्ट स्टोरेज OSS की तुलना में पढ़ने और लिखने की प्रदर्शन उच्च है।
  • OSS स्टोरेज वॉल्यूम, https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/oss-volume-overview-1?spm=a2c4g.11186623.0.0.43166a351NbtvU
    • OSS साझा भंडारण है, कई पॉड को साझा भंडारण सेवा प्रदान करने के लिए उपयोग किया जा सकता है।
    • (20240613) वर्तमान में CentOS, Alibaba Cloud Linux, ContainerOS और लॉन्गशन ऑपरेटिंग सिस्टम का समर्थन करता है।
    • डेटा वॉल्यूम का उपयोग करते समय, प्रत्येक एप्लिकेशन का अपना स्वतंत्र PV नाम होता है।
    • OSS डेटा वॉल्यूम ossfs फ़ाइल का उपयोग करके माउंट किया गया FUSE फ़ाइल सिस्टम है।
      • इसे कॉन्फ़िगरेशन फ़ाइल, वीडियो, छवि फ़ाइल आदि पढ़ने के लिए उपयुक्त है।
      • फ़ाइल लिखने वाले एप्लिकेशन सीनारियो के लिए उपयुक्त नहीं है। यदि आप फ़ाइल लिखना चाहते हैं, तो SDK का उपयोग करके लिखने का ऑपरेशन करने या NAS स्टोरेज वॉल्यूम सेवा का उपयोग करने की सलाह दी जाती है।
    • ossfs विन्यास पैरामीटर को समायोजित करके कैशे, अनुमति आदि में इसके प्रदर्शन को अनुकूलित किया जा सकता है।
    • ossfs उपयोग सीमाएं
      • यादृच्छिक या अतिरिक्त फ़ाइल ऑपरेशन फ़ाइल को पुनः लिखने का कारण बनेगा।
      • OSS सर्वर को दूरस्थ रूप से एक्सेस करने की आवश्यकता के कारण, list directory जैसे मेटाडेटा ऑपरेशन का प्रदर्शन खराब होता है।
      • फ़ाइल, फ़ोल्डर का नाम बदलने ऑपरेशन परमाणु नहीं है।
      • एक ही OSS Bucket को माउंट करने वाले कई क्लाइंट के लिए, उपयोगकर्ता को विभिन्न क्लाइंट के व्यवहार को समन्वय करने की आवश्यकता होती है, उदाहरण के लिए, एक ही फ़ाइल में लिखने से बचना आदि।
      • हार्ड लिंक (Hard Link) का समर्थन नहीं करता है।
      • CSI plugin v1.20.7 से नीचे के संस्करण के लिए, केवल स्थानीय परिवर्तन का पता चलता है, लेकिन अन्य क्लाइंट या उपकरण के बाहरी परिवर्तन का पता नहीं चलता है।
      • सिस्टम लोड बढ़ने से बचने के लिए, उच्च समानांतर पढ़ने और लिखने वाले सीनारियो में इसका उपयोग न करें।
  • यदि मिश्रित क्लस्टर (कुछ नोड Alibaba Cloud के अधीन नहीं हैं) है, तो केवल NAS और OSS स्टैटिक वॉल्यूम का उपयोग किया जा सकता है।
  • डिस्क, nas और oss सभी के क्षेत्रीय सीमाएं हैं।

सारांश, डिस्क पूरे हार्ड डिस्क के रूप में अनुरोध और माउंट किया जाता है, साझा करने में असुविधाजनक है। OSS फ़ाइल के लिए ऑपरेशन ग्रेनुलेरिटी है, उच्च समानांतर पढ़ने और लिखने में प्रदर्शन समस्या है, और समर्थित सिस्टम सीमित है।

  • डिस्क डेटाबेस आदि जैसे बड़े स्थान और उच्च प्रदर्शन के लिए उपयुक्त है।
  • अन्य प्रदर्शन आवश्यकताओं के लिए NAS चुनें।
  • OSS अलीबाबा क्लाउड क्लस्टर के उच्च समानांतर लेखन सीनारियो के लिए उपयुक्त नहीं है, इसे समानांतर पढ़ने वाले सीनारियो में लागू किया जा सकता है।

अलीबाबा क्लाउड के आधिकारिक दस्तावेज़ में स्थान असमानता और पारस्परिक विरोधाभास की समस्या है, पाठकों को दस्तावेज़ की तारीख के अनुसार निर्णय लेने की आवश्यकता है, कुछ विशेषताओं का दावा किया गया है जो संस्करण अपडेट के साथ समर्थित हो सकते हैं, जिन्हें आपको स्वयं कुछ प्रयास करने की आवश्यकता है।

ऑपरेशन कदम

यह Alibaba Cloud का आधिकारिक निर्देश दस्तावेज़ है, Alibaba Cloud स्टोरेज प्लगइन को स्थापित करने के बाद ऊपर दिए गए निर्देश के अनुसार, आप NAS स्टैटिक स्टोरेज वॉल्यूम का उपयोग करना के अनुसार, तैनाती परीक्षण कर सकते हैं।

ध्यान दें: k3s उपयोगकर्ता local-path-storage की समस्या से गुजरेंगे, त्रुटि संदेश में शामिल हो सकता है,

  • failed to provision volume with StorageClass “local-path”: claim.Spec.Selector is not supported
  • Waiting for a volume to be created either by the external provisioner ’localplugin.csi.alibabacloud.com’ or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.

persistentVolumeClaim का storageClassName को खाली सेट करने के लिए k3s डिफ़ॉल्ट local-path-storage के उपयोग से बचने की आवश्यकता है।

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-nas
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  selector:
    matchLabels:
      alicloud-pvname: pv-nas
  storageClassName: ""

संदर्भ