2 पॉइंट द्वारा GN⁺ 2024-08-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Kubernetes persistent volume controller

अवलोकन

  • Kubernetes के PersistentVolume (PV) और PersistentVolumeClaim (PVC) को सिंक्रोनाइज़ करने वाला controller
  • PVC और PV के बीच द्विदिश "pointer" को मैनेज करके data loss को रोकता है
  • high availability mode में काम करता है, और ऐसे cases को support करता है जहाँ PVC किसी विशेष PV का अनुरोध करता है या PV किसी विशेष PVC के लिए reserve किया गया हो

मुख्य विशेषताएँ

  • PVC और PV की स्थिति को समय-समय पर सिंक्रोनाइज़ करना
  • अगर PVC किसी विशेष PV का अनुरोध नहीं करता, तो सबसे उपयुक्त PV खोजकर bind करना
  • अगर PVC किसी विशेष PV का अनुरोध करता है, तो यह जाँचना कि वह PV मौजूद है और शर्तें पूरी करता है, फिर bind करना
  • अगर PVC पहले से bind है, तो उसकी स्थिति जाँचना और ज़रूरत पड़ने पर उसे ठीक करना

काम करने का तरीका

  • जब PVC बनाया या अपडेट किया जाता है, तब syncClaim method कॉल होती है
  • अगर PVC bind नहीं है, तो syncUnboundClaim method कॉल होती है
  • अगर PVC bind है, तो syncBoundClaim method कॉल होती है
  • जब PV बनाया या अपडेट किया जाता है, तब syncVolume method कॉल होती है

मुख्य methods

syncClaim

  • PVC की स्थिति के अनुसार syncUnboundClaim या syncBoundClaim को कॉल करता है

syncUnboundClaim

  • अगर PVC किसी विशेष PV का अनुरोध नहीं करता, तो सबसे उपयुक्त PV खोजकर bind करने की कोशिश करता है
  • अगर PVC किसी विशेष PV का अनुरोध करता है, तो यह जाँचकर bind करता है कि वह PV मौजूद है और शर्तें पूरी करता है

syncBoundClaim

  • अगर PVC पहले से bind है, तो उसकी स्थिति जाँचता है और ज़रूरत पड़ने पर उसे ठीक करता है

syncVolume

  • PV की स्थिति के अनुसार उपयुक्त कार्रवाई करता है
  • अगर PV उपयोग में नहीं है, तो उसकी स्थिति को "Available" में अपडेट करता है
  • अगर PV किसी विशेष PVC से bind है, तो उस PVC की स्थिति जाँचता है और ज़रूरत पड़ने पर उसे ठीक करता है

GN⁺ का सार

  • यह दस्तावेज़ Kubernetes के persistent volume controller का विस्तृत विवरण देता है
  • यह PersistentVolume और PersistentVolumeClaim के बीच binding logic को समझने में मदद करता है
  • इसमें high availability mode में काम करने के तरीके और विभिन्न exception cases की handling शामिल है
  • Kubernetes storage management में रुचि रखने वाले developers के लिए यह उपयोगी सामग्री है
  • इसी तरह की functionality देने वाले अन्य projects में OpenEBS, Rook आदि शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-08-07
Hacker News राय
  • Space Shuttle सॉफ़्टवेयर बहुत स्थिर है, और इसमें लगभग कोई bug नहीं है

    • हाल की तीन versions में से हर एक में 420,000 lines में सिर्फ़ एक error था
    • commercial programs की तुलना में errors की संख्या बहुत कम है
  • कोड सामान्य है, और Go भाषा में लिखा गया है, इसलिए थोड़ा verbose है

    • हो सकता है कि enterprise software का अधिक अनुभव होने के कारण system software से फर्क महसूस हो रहा हो
    • k8s project के contributors को इसमें बहुत से अनावश्यक comments लग सकते हैं
  • नई कंपनी का codebase अच्छी तरह व्यवस्थित है, इसलिए उसे explore करना सुखद है

    • comments बहुत हैं, और कोड अच्छी तरह structured है
    • टीम छोटी है, इसलिए code quality ऊंची है
  • Space Shuttle का safety record अच्छा नहीं था, इसलिए अब इसका संचालन नहीं होता

    • यह संदेह है कि 10 साल बाद भी लोग Space Shuttle को सकारात्मक रूप से याद करेंगे या नहीं
  • structural pattern matching का उपयोग करने से if/else blocks को सरल किया जा सकता है

    • ऐसे tools हैं जो compile time पर जाँच सकते हैं कि matching exhaustive है या नहीं
  • कोड खराब नहीं है, और एक ही rule का पालन कर रहा है

    • यह अलग-अलग styles वाले कोड की तुलना में कहीं बेहतर है
  • 2018 की discussion का link दिया गया है

  • Kubernetes CSI driver लिखना आनंददायक था

    • Amazon के EFS या EBS CSI drivers छोटे codebase के अच्छे उदाहरण हैं
    • driver स्वयं सरल है, लेकिन इसमें complex logic शामिल है
  • हर if statement के साथ else statement होना एक safety practice माना जाता है

    • 2,000-line module और 200-line method हानिकारक हैं
    • कोड क्या करता है, यह समझाने वाले comments उपयोगी नहीं हैं
  • GitHub file link करते समय किसी विशेष line range को link करने का तरीका दिया गया है