Difference between revisions of "Kubernetes Persistent Volumes (PV)"

From wikieduonline
Jump to navigation Jump to search
 
(34 intermediate revisions by 8 users not shown)
Line 1: Line 1:
Persistent Volumes subsystem provides an API for users and administrators that abstracts details of how storage is provided from how it is consumed
+
TOMERGE: [[Kubernetes Persistent volumes]]
  
 +
Kubernetes Persistent Volumes subsystem provides an API for users and administrators that abstracts details of how storage is provided from how it is consumed
 +
* https://kubernetes.io/docs/concepts/storage/persistent-volumes/
 +
* https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#persistentvolume-v1-core
 +
__NOTOC__
 
* <code>[[kubectl get pvc]]</code>
 
* <code>[[kubectl get pvc]]</code>
 
* <code>[[kubectl describe pvc mysql-pv-claim]]</code>
 
* <code>[[kubectl describe pvc mysql-pv-claim]]</code>
  
== Providers ==
+
  Volumes:
  [[GCEPersistentDisk]]
+
  [[VolumeMounts:]]
  [[AWSElasticBlockStore]]
+
  [[ExtraVolumes]]
  AzureFile
+
 
AzureDisk
+
== Examples ==
[[CSI]] ([[Container Storage Interface]])
+
 
FC (Fibre Channel)
+
  {{k8s volumes examples}}
[[FlexVolume]] (deprecated)
 
Flocker
 
NFS
 
iSCSI
 
RBD (Ceph Block Device)
 
CephFS
 
Cinder (OpenStack block storage)
 
Glusterfs
 
VsphereVolume
 
Quobyte Volumes
 
[[HostPath]] (Single node testing only -- local storage is not supported in any way and WILL NOT WORK in a multi-node cluster)
 
Portworx Volumes
 
ScaleIO Volumes
 
StorageOS
 
  Persisten
 
  
== Example ==
+
* Claims: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#claims-as-volumes
Volumes:
+
<pre>
  your-vol-1:
+
apiVersion: v1
    Type:     ConfigMap (a volume populated by a ConfigMap)
+
kind: Pod
    Name:     prod-admin-config
+
metadata:
    Optional: false
+
  name: mypod
   your-vol-2:
+
spec:
    Type:       Secret (a volume populated by a Secret)
+
   containers:
    [[SecretName]]: your-secret-name
+
    - name: myfrontend
    Optional:   false
+
      image: nginx
  your-vol-3:
+
      volumeMounts:
    Type:                   [[Projected]] (a volume that contains injected data from multiple sources)
+
      - mountPath: "/var/www/html"
    TokenExpirationSeconds3607
+
        name: mypd
    [[ConfigMapName:]]          your-kube-root-ca[[.crt]]
+
  volumes:
    [[ConfigMapOptional]]:       <nil>
+
    - name: mypd
    [[DownwardAPI]]:             true
+
      persistentVolumeClaim:
 +
        claimName: myclaim
 +
</pre>
 +
 
 +
 
 +
 
 +
 
 +
  spec:
 +
  volumes:
 +
    - name: elasticsearch-master
 +
      [[persistentVolumeClaim:]]
 +
        [[claimName:]] elasticsearch-master-elasticsearch-master-0
 +
    - name: mynewvolumen
 +
      emptyDir: {}
 +
 
 +
== [[Kubernetes Persistent Volumes (PV) providers|Providers]] ==
 +
 
 +
== Error ==
 +
error: error validating "yourpv": error validating data:
 +
ValidationError(PersistentVolume.spec.csi): missing required field "volumeHandle" in
 +
io.k8s.api.core.v1.CSIPersistentVolumeSource; if you choose to ignore these errors, turn
 +
validation off with --validate=false
  
 +
== Metrics ==
 +
kubelet_volume_stats_available_bytes
 +
kubelet_volume_stats_capacity_bytes
 +
kubelet_volume_stats_inodes
 +
kubelet_volume_stats_inodes_free
 +
kubelet_volume_stats_inodes_used
 +
kubelet_volume_stats_used_bytes
 +
Ref: https://stackoverflow.com/questions/44718268/how-to-monitor-disk-usage-of-kubernetes-persistent-volumes
  
 
== News ==
 
== News ==
 +
* Aug 2024 Persistent Volume last phase transition time <ref>https://kubernetes.io/blog/2024/08/13/kubernetes-v1-31-release/#persistent-volume-last-phase-transition-time</ref>
 
* Jun 2018 [[v1.11]] [[Resizing]] Persistent Volumes using Kubernetes in alpha
 
* Jun 2018 [[v1.11]] [[Resizing]] Persistent Volumes using Kubernetes in alpha
 +
 +
== CKA ==
 +
* [[CKA v1.23]]: [[Understand storage classes, persistent volumes]]
 +
* [[CKA v1.18]]: Understand [[persistent volumes]] and know how to create them
 +
* [[CKA v1.15]]: [[Understand PersistentVolumeClaims for storage]]
 +
 +
== Activities ==
 +
* [[Kubernetes: Rename PVs]]
 +
* [[Access a volume with a temporary pod]]
  
 
== Related terms ==
 
== Related terms ==
Line 53: Line 81:
 
* <code>[[kubectl apply]]</code>
 
* <code>[[kubectl apply]]</code>
 
* [[Container Storage Interface (CSI)]]
 
* [[Container Storage Interface (CSI)]]
 +
* <code>[[defaultMode:]]</code>
 +
* <code>[[values.yml]]</code>
 +
* <code>[[kubernetes_persistent_volume]]</code>
 +
* <code>[[kind: ConfigMap]]</code>
 +
* <code>[[kind: PersistentVolume]]</code>
 +
* [[Terraform kubernetes resource: kubernetes persistent volume v1]]
  
 
== See also ==
 
== See also ==
 +
* {{K8s volumes}}
 
* {{Kubernetes storage}}
 
* {{Kubernetes storage}}
 
  
 
[[Category:K8s]]
 
[[Category:K8s]]

Latest revision as of 14:47, 12 September 2024

TOMERGE: Kubernetes Persistent volumes

Kubernetes Persistent Volumes subsystem provides an API for users and administrators that abstracts details of how storage is provided from how it is consumed

Volumes:
VolumeMounts:
ExtraVolumes

Examples[edit]

 volumes:
 your-vol-1:
   Type:      ConfigMap (a volume populated by a ConfigMap)
   Name:      prod-admin-config
   Optional:  false
 your-vol-2:
   Type:        Secret (a volume populated by a Secret)
   SecretName:  your-secret-name
   Optional:    false
 your-vol-3:
   Type:                    Projected (a volume that contains injected data from multiple sources)
   TokenExpirationSeconds:  3607
   ConfigMapName:          your-kube-root-ca.crt
   ConfigMapOptional:       <nil>
   DownwardAPI:             true
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim



spec:
  volumes:
    - name: elasticsearch-master
      persistentVolumeClaim:
        claimName: elasticsearch-master-elasticsearch-master-0
    - name: mynewvolumen
      emptyDir: {}

Providers[edit]

Error[edit]

error: error validating "yourpv": error validating data: 
ValidationError(PersistentVolume.spec.csi): missing required field "volumeHandle" in 
io.k8s.api.core.v1.CSIPersistentVolumeSource; if you choose to ignore these errors, turn 
validation off with --validate=false

Metrics[edit]

kubelet_volume_stats_available_bytes
kubelet_volume_stats_capacity_bytes
kubelet_volume_stats_inodes
kubelet_volume_stats_inodes_free
kubelet_volume_stats_inodes_used
kubelet_volume_stats_used_bytes

Ref: https://stackoverflow.com/questions/44718268/how-to-monitor-disk-usage-of-kubernetes-persistent-volumes

News[edit]

  • Aug 2024 Persistent Volume last phase transition time [1]
  • Jun 2018 v1.11 Resizing Persistent Volumes using Kubernetes in alpha

CKA[edit]

Activities[edit]

Related terms[edit]

See also[edit]

  • https://kubernetes.io/blog/2024/08/13/kubernetes-v1-31-release/#persistent-volume-last-phase-transition-time
  • Advertising: