Storage के लिए Volume उपयोग करने हेतु Pod कॉन्फ़िगर करें

यह पेज दिखाता है कि storage के लिए Volume उपयोग करने हेतु Pod को कैसे कॉन्फ़िगर करें।

किसी Container का file system केवल उतनी देर तक रहता है जितनी देर Container रहता है।इसलिए जब कोई Container terminate होकर फिर restart होता है, तो filesystem में किए गए बदलाव खो जाते हैं।Container से स्वतंत्र और अधिक consistent storage के लिए आपVolume का उपयोग कर सकते हैं।यह stateful applications (जैसे key-value stores, उदाहरण के लिए Redis, और databases) के लिए विशेष रूप से महत्वपूर्ण है।

शुरू करने से पहले

आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:

संस्करण की जांच करने के लिए, लिखें kubectl version.

Pod के लिए volume कॉन्फ़िगर करें

इस अभ्यास में आप ऐसा Pod बनाते हैं जिसमें एक Container चलता है। इस Pod मेंemptyDir प्रकार का Volume होता है जो Pod के जीवनकाल तक बना रहता है, भले ही Container terminate होकर restart हो जाए।यह Pod की configuration file है:

apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - name: redis
    image: redis
    volumeMounts:
    - name: redis-storage
      mountPath: /data/redis
  volumes:
  - name: redis-storage
    emptyDir: {}
  1. Pod बनाएं:

    kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml
    
  2. जांचें कि Pod का Container चल रहा है, और फिर Pod में होने वाले बदलाव देखें:

    kubectl get pod redis --watch
    

    आउटपुट इस तरह दिखेगा:

    NAME      READY     STATUS    RESTARTS   AGE
    redis     1/1       Running   0          13s
    
  3. दूसरे terminal में, चल रहे Container का shell खोलें:

    kubectl exec -it redis -- /bin/bash
    
  4. अपनी shell में /data/redis पर जाएँ, और फिर एक फ़ाइल बनाएं:

    root@redis:/data# cd /data/redis/
    root@redis:/data/redis# echo Hello > test-file
    
  5. अपनी shell में चल रही processes की सूची देखें:

    root@redis:/data/redis# apt-get update
    root@redis:/data/redis# apt-get install procps
    root@redis:/data/redis# ps aux
    

    आउटपुट इस तरह होगा:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    redis        1  0.1  0.1  33308  3828 ?        Ssl  00:46   0:00 redis-server *:6379
    root        12  0.0  0.0  20228  3020 ?        Ss   00:47   0:00 /bin/bash
    root        15  0.0  0.0  17500  2072 ?        R+   00:48   0:00 ps aux
    
  6. अपनी shell में Redis process को kill करें:

    root@redis:/data/redis# kill <pid>
    

    जहाँ <pid> Redis process ID (PID) है।

  7. अपने मूल terminal में Redis Pod में होने वाले बदलाव देखें। अंततः आपको कुछ ऐसा दिखाई देगा:

    NAME      READY     STATUS     RESTARTS   AGE
    redis     1/1       Running    0          13s
    redis     0/1       Completed  0         6m
    redis     1/1       Running    1         6m
    

इस बिंदु पर Container terminate होकर restart हो चुका है। ऐसा इसलिए है क्योंकि Redis Pod कीrestartPolicy Always है।

  1. restarted Container के अंदर shell खोलें:

    kubectl exec -it redis -- /bin/bash
    
  2. अपनी shell में /data/redis पर जाएँ, और सत्यापित करें कि test-file अभी भी मौजूद है।

    root@redis:/data/redis# cd /data/redis/
    root@redis:/data/redis# ls
    test-file
    
  3. इस अभ्यास के लिए बनाया गया Pod हटाएं:

    kubectl delete pod redis
    

आगे क्या है

  • Volume देखें।

  • Pod देखें।

  • emptyDir द्वारा दिए गए local disk storage के अलावा, Kubernetes कई प्रकार के network-attached storage solutions को सपोर्ट करता है, जिनमें GCE पर PD और EC2 पर EBS शामिल हैं।ये critical data के लिए अधिक उपयुक्त हैं और nodes पर devices को mount/unmount करने जैसे विवरण संभालते हैं। अधिक जानकारी के लिएVolumes देखें।


Last modified March 17, 2026 at 12:21 AM PST: Localize tasks (d852220703)