Lucrul cu volume în Microk8s
- 2 minute de citit
- 12 exemple de cod în YAML și Shell
- 2 imagini
Disponibil și în English
Pe această pagină
Introducere
Salut 👋,
În acest tutorial rapid 💻 vom explora cum se folosesc Volumes și PersistentVolumes cu stocare hostpath în Microk8s.
Vom lansa o instanță simplă de nginx și vom monta în ea un volum care indică spre directorul ~/Downloads.
Să începem!
Notă: Imaginea următoare a fost generată cu Stable Diffusion

Ghid pas cu pas
Poți urma pașii dacă vrei să configurezi rapid un deployment cu un volum de tip host path.
Persistent Volume
Să începem prin a crea o resursă Persistent Volume:
k apply -f persistent-volume.yamlapiVersion: v1kind: PersistentVolumemetadata: name: nuculabs-persistent-volume labels: app: nginx owner: dnutiu name: tutorial-volumespec: storageClassName: microk8s-hostpath # Exclusiv pentru PVC claimRef: name: nuculabs-persistent-volume-claim namespace: default capacity: storage: 1Gi accessModes: - ReadWriteMany hostPath: path: "/home/denis/Downloads"După aplicarea fișierului ar trebui să vezi:
➜ Downloads k apply -f persistent_volume.yml persistentvolume/nuculabs-persistent-volume created➜ Downloads k get pvNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEnuculabs-persistent-volume 1Gi RWX Retain Available default/nuculabs-persistent-volume-claim microk8s-hostpath 5sPersistent volume creat este exclusiv pentru PersistentVolumeClaim pe care îl vom crea în continuare.
Persistent Volume Claim
Pentru a rezerva Persistent Volume-ul nuculabs-persistent-volume trebuie să creăm un claim:
k apply -f persistent-volume-claim.yamlapiVersion: v1kind: PersistentVolumeClaimmetadata: name: nuculabs-persistent-volume-claim namespace: default labels: app: nginx owner: dnutiu name: tutorial-volumespec: storageClassName: "microk8s-hostpath" volumeName: nuculabs-persistent-volume accessModes: - ReadWriteMany resources: requests: storage: 500GiPutem să ne asigurăm că claim-ul este legat de PV-ul nostru făcând referire la volumeName:
spec: storageClassName: "microk8s-hostpath" volumeName: nuculabs-persistent-volumesau folosind selectorul matchLabels:
spec: storageClassName: "microk8s-hostpath" selector: matchLabels: app: nginx owner: dnutiu name: tutorial-volumePentru a verifica dacă volumul este legat, rulează:
k get pvNAME STATUS CLAIM nuculabs-persistent-volume ... Bound default/nuculabs-persistent-volume-claim Ar trebui să vezi numele volumului împreună cu statusul Bound.
Dacă urmărești pas cu pas, felicitări că ai ajuns până aici! 😁

Deployment
În final, să creăm deployment-ul nginx care conține volumul montat.
k apply -f nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - mountPath: "/data" name: data-volume volumes: - name: "data-volume" persistentVolumeClaim: claimName: nuculabs-persistent-volume-claimMontăm volumul în containerul nginx cu:
volumeMounts: - mountPath: "/data" name: data-volumeApoi adăugăm volumele în spec și mapăm „data-volume” la PVC-ul nostru:
volumes: - name: "data-volume" persistentVolumeClaim: claimName: nuculabs-persistent-volume-claimGata! 🎉
Dacă vrei să verifici că volumul este montat corect, poți să te conectezi prin SSH la pod-ul nginx și să navighezi în directorul /data.
Mulțumesc că ai citit! 📚