Kubernetes : डायनेमिक वॉल्यूम प्रोविजनिंग (NFS)2024/06/07 |
पर्सिस्टेंट स्टोरेज का उपयोग करते समय डायनेमिक वॉल्यूम प्रोविजनिंग सुविधा का उपयोग करने के लिए, उपयोगकर्ताओं द्वारा PVC (पर्सिस्टेंट वॉल्यूम क्लेम) बनाए जाने पर क्लस्टर एडमिनिस्ट्रेटर द्वारा मैन्युअल रूप से PV बनाए बिना डायनेमिक रूप से PV (पर्सिस्टेंट वॉल्यूम) बनाना संभव है। यह उदाहरण निम्न प्रकार के वातावरण पर आधारित है। +----------------------+ +----------------------+ | [ ctrl.srv.world ] | | [ dlp.srv.world ] | | Manager Node | | Control Plane | +-----------+----------+ +-----------+----------+ eth0|10.0.0.25 eth0|10.0.0.30 | | ------------+--------------------------+----------- | | eth0|10.0.0.51 eth0|10.0.0.52 +-----------+----------+ +-----------+----------+ | [ node01.srv.world ] | | [ node02.srv.world ] | | Worker Node#1 | | Worker Node#2 | +----------------------+ +----------------------+ |
उदाहरण के लिए, NFS प्रोविजनर के साथ डायनेमिक वॉल्यूम प्रोविजनिंग को कॉन्फ़िगर करें जिससे NFS स्टोरेज [nfs.srv.world (10.0.0.35)] से प्रदान किया जाता है। |
|
[1] |
NFS सर्वर चलाएँ, यहाँ देखें। |
[2] |
वर्कर नोड्स को NFS सर्वर पर NFS शेयर माउंट करने में सक्षम होना चाहिए। |
[3] | |
[4] | एनएफएस क्लाइंट प्रोविजनर स्थापित करें। |
root@ctrl:~#
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
# nfs.server = (NFS सर्वर होस्टनाम या IP पता) # nfs.path = (NFS शेयर पथ) root@ctrl:~# helm install nfs-client -n kube-system --set nfs.server=10.0.0.35 --set nfs.path=/home/nfsshare nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
NAME: nfs-client LAST DEPLOYED: Fri Jun 7 04:45:13 2024 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: Noneroot@ctrl:~# kubectl get deployment -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE calico-kube-controllers 1/1 1 1 4h54m coredns 2/2 2 2 4h55m metrics-server 1/1 1 1 16m nfs-client-nfs-subdir-external-provisioner 1/1 1 1 19s |
[4] | यह पॉड द्वारा डायनेमिक वॉल्यूम प्रोविजनिंग का उपयोग करने का एक उदाहरण है। |
root@ctrl:~# kubectl get pv No resources found in default namespace. root@ctrl:~# kubectl get pvc No resources found in default namespace. root@ctrl:~# kubectl get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE nfs-client cluster.local/nfs-client-nfs-subdir-external-provisioner Delete Immediate true 83s apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-provisioner spec: accessModes: - ReadWriteOnce # StorageClass नाम निर्दिष्ट करें storageClassName: nfs-client resources: requests: # वॉल्यूम आकार storage: 5Gi
root@ctrl:~#
root@ctrl:~# kubectl apply -f my-pvc.yml persistentvolumeclaim/my-provisioner created kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE my-provisioner Bound pvc-7b9f17ed-fc6f-4e7e-99dc-96324c1a4076 5Gi RWO nfs-client <unset> 5s # PV गतिशील रूप से उत्पन्न होता है root@ctrl:~# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pvc-7b9f17ed-fc6f-4e7e-99dc-96324c1a4076 5Gi RWO Delete Bound default/my-provisioner nfs-client <unset> 35s
root@ctrl:~#
vi my-pod.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 1
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: /usr/share/nginx/html
name: nginx-pvc
volumes:
- name: nginx-pvc
persistentVolumeClaim:
# आपके द्वारा बनाया गया PVC नाम
claimName: my-provisioner
kubectl apply -f my-pod.yml deployment.apps/my-nginx created root@ctrl:~# kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx-69d9cb4f47-zzjj7 1/1 Running 0 5sroot@ctrl:~# kubectl exec my-nginx-69d9cb4f47-zzjj7 -- df /usr/share/nginx/html Filesystem 1K-blocks Used Available Use% Mounted on 10.0.0.35:/home/nfsshare/default-my-provisioner-pvc-7b9f17ed-fc6f-4e7e-99dc-96324c1a4076 164028416 0 155623424 0% /usr/share/nginx/html # परीक्षण सूचकांक फ़ाइल बनाने के लिए पहुँच की पुष्टि करें root@ctrl:~# echo "Nginx Index" > index.html root@ctrl:~# kubectl cp index.html my-nginx-69d9cb4f47-zzjj7:/usr/share/nginx/html/index.html root@ctrl:~# kubectl expose deployment my-nginx --type="NodePort" --port 80 root@ctrl:~# kubectl port-forward service/my-nginx --address 127.0.0.1 80:80 & root@ctrl:~# curl localhost Handling connection for 80 Nginx Index # पॉड्स को हटाते समय, PVC को हटाने के लिए, फिर PV को भी गतिशील रूप से हटा दिया जाता है root@ctrl:~# kubectl delete deployment my-nginx deployment.apps "my-nginx" deleted root@ctrl:~# kubectl delete pvc my-provisioner persistentvolumeclaim "my-provisioner" deleted root@ctrl:~# kubectl get pv No resources found |
[5] | StatefulSet का उपयोग करने के लिए, [volumeClaimTemplates] निर्दिष्ट करना संभव है। |
root@ctrl:~# kubectl get pv No resources found in default namespace. root@ctrl:~# kubectl get pvc No resources found in default namespace. root@ctrl:~# kubectl get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE nfs-client cluster.local/nfs-client-nfs-subdir-external-provisioner Delete Immediate true 9m51s
root@ctrl:~#
vi statefulset.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-mginx
spec:
serviceName: my-mginx
replicas: 1
selector:
matchLabels:
app: my-mginx
template:
metadata:
labels:
app: my-mginx
spec:
containers:
- name: my-mginx
image: nginx
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: data
spec:
# StorageClass नाम निर्दिष्ट करें
storageClassName: nfs-client
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
kubectl apply -f statefulset.yml statefulset.apps/my-mginx created root@ctrl:~# kubectl get statefulset NAME READY AGE my-mginx 1/1 6sroot@ctrl:~# kubectl get pods NAME READY STATUS RESTARTS AGE my-mginx-0 1/1 Running 0 31sroot@ctrl:~# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE data-my-mginx-0 Bound pvc-4e2ce32d-c318-4669-b570-949043fc9d30 5Gi RWO nfs-client <unset> 48sroot@ctrl:~# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pvc-4e2ce32d-c318-4669-b570-949043fc9d30 5Gi RWO Delete Bound default/data-my-mginx-0 nfs-client <unset> 78s |
Sponsored Link |
|