{"id":21120,"date":"2020-06-29T10:38:56","date_gmt":"2020-06-29T08:38:56","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=18772"},"modified":"2022-11-21T12:04:39","modified_gmt":"2022-11-21T11:04:39","slug":"kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/","title":{"rendered":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!"},"content":{"rendered":"<p>With Kubernetes 1.13, the Container Storage Interface (CSI) joined its Network (CNI) and Runtime (CRI) cousins in the effort to make Kubernetes Storage more easily extensible. It allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases. Since its introduction, the Kubernetes team has been implementing more storage-related features on top of the CSI which are now starting to become available. This article gives an overview over these emerging features.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#Recap-Kubernetes-Storage-with-CSI\" >Recap: Kubernetes Storage with CSI<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#Ephemeral-Inline-Volumes\" >Ephemeral Inline Volumes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#Volume-Cloning\" >Volume Cloning<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#Volume-Snapshots\" >Volume Snapshots<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#CSI-Migration\" >CSI Migration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#What-a-ride\" >What a ride!<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Recap-Kubernetes-Storage-with-CSI\"><\/span>Recap: Kubernetes Storage with CSI<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The CSI is a platform-agnostic specification, meaning that the same storage driver implementation can be used to provide storage volumes in any container orchestration platform that conforms to it. Usually the driver consists of a controller plugin, responsible for communicating with the storage provider API for the provisioning of volumes and attaching them to nodes, and a node plugin, responsible for mounting these volumes into containers on that node.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-18861 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/05\/CSI-Driver-Architecture-in-Kubernetes.png\" alt=\"CSI driver architecture in Kubernetes\" width=\"677\" height=\"306\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/05\/CSI-Driver-Architecture-in-Kubernetes.png 677w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/05\/CSI-Driver-Architecture-in-Kubernetes-300x136.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/05\/CSI-Driver-Architecture-in-Kubernetes-400x181.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/05\/CSI-Driver-Architecture-in-Kubernetes-360x163.png 360w\" sizes=\"auto, (max-width: 677px) 100vw, 677px\" \/><\/p>\n<p>The Kubernetes implementation of the CSI consists mostly of a handful generic sidecar containers that interface between the Kubernetes API and the CSI of the controller plugin in the same pod. The kubelet in turn speaks directly to the node plugin when a pod requests a CSI volume to be mounted. Thus installing a CSI driver in Kubernetes is as easy as creating a multi-container deployment for the controller plugin and installing a daemon set for the node plugin. No further configuration of the core Kubernetes components is needed.<\/p>\n<p>From a user perspective, creating a persistent volume with CSI consists of simply referencing the CSI driver in the volume spec. Using dynamic provisioning via a StorageClass resource is the recommend way, though. As the PersistentVolumeClaim only references the StorageClass and the application only needs the PVC name, the usage of CSI can be completely transparent to the application developer.<\/p>\n<p>See <a href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\">this blog article<\/a> for more detail on the CSI in Kubernetes. There is also a <a href=\"https:\/\/kubernetes-csi.github.io\/docs\/drivers.html\">non-comprehensive list of CSI drivers<\/a> detailing which of the following features each implements.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Ephemeral-Inline-Volumes\"><\/span>Ephemeral Inline Volumes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The storage providers using the CSI mainly provide persistent storage, and thus the driver support only persistent volumes. In some cases it may be useful, though, to use a CSI volume as an inline volume in a pod spec. Since these volumes are bound to the lifetime of the pod, they are called &#8222;ephemeral&#8220; and we know types like &#8222;EmptyDir&#8220;, &#8222;ConfigMap&#8220; and &#8222;HostPath&#8220; which are the bread and butter of pod design.<\/p>\n<p>The CSIInlineVolume feature, which is enabled since version 1.16, adds this possibilty, should the driver support it. Unfortunately it requires the driver to add functionality not covered by the CSI in order to cut the lifecycle of a CSI volume short.<\/p>\n<p>From a user perspective, the CSI driver and its parameters need to be added to the pod spec&#8217;s volume section, losing the nice transparency of StorageClasses. <a href=\"https:\/\/kubernetes-csi.github.io\/docs\/drivers.html\">Not many drivers<\/a> support ephemeral volumes. The one I find most interesting is <a href=\"https:\/\/github.com\/kubernetes-csi\/csi-driver-image-populator\">the ImagePopulator<\/a> which allows to mount a container image as an ephemeral volume.<\/p>\n<p>See <a href=\"https:\/\/kubernetes.io\/blog\/2020\/01\/21\/csi-ephemeral-inline-volumes\/\">this blog article<\/a> for more information about this feature. It also mentions some hardware-dependent use cases.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Volume-Cloning\"><\/span>Volume Cloning<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The VolumePVCDataSource feature has been enabled since version 1.16 and reached general availability in 1.18. It allows to specify another PersistentVolumeClaim as a data source when creating a volume with a CSI driver. The new volume is then pre-populated with the content of the PersistentVolume bound to the source PVC, effectively cloning that volume.<\/p>\n<p>Only PVCs that are currently not mounted by any pod can be used as a data source. <a href=\"https:\/\/kubernetes-csi.github.io\/docs\/drivers.html\">Not many drivers<\/a> support cloning and I think the reason for this may be, apart from possible limitations on the storage provider side, that the the same result can also be achieved with the snapshot feature.<\/p>\n<p>See <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volume-pvc-datasource\/\">the documentation<\/a> for further details.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Volume-Snapshots\"><\/span>Volume Snapshots<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Volume snapshotting is a feature that many storage providers offer. This new Kubernetes feature allows for snapshots to be managed through the Kubernetes API just like volumes are. The feature reached beta status in version 1.17 and is thus enabled by default.<\/p>\n<p>The snapshotting implementation includes these three components:<\/p>\n<ul>\n<li>Custom Resource Definitions that represent snapshots in the Kubernetes API.<\/li>\n<li>A generic snapshot controller that handles events from these CRDs.<\/li>\n<li>A CSI driver that implements the snapshot-related functions of the CSI.<\/li>\n<\/ul>\n<p>The API objects for snapshots have been fashioned after the objects for dynamic provisioning of persistent volumes and are used in much the same way.<\/p>\n<table style=\"height: 296px;\" width=\"714\">\n<tbody>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\"><strong>Snapshots<\/strong><\/td>\n<td style=\"width: 350px; height: 24px;\"><strong>Volumes<\/strong><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\"><span class=\"lang:default decode:true crayon-inline\">VolumeSnapshotClass<\/span><\/td>\n<td style=\"width: 350px; height: 24px;\"><span class=\"font-size:15 line-height:18 lang:default decode:true crayon-inline\">StorageClass<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\">Define the driver for the snapshot and its deletion policy.<\/td>\n<td style=\"width: 350px; height: 24px;\">Define the driver for the volume and its type and deletion policy.<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\"><span class=\"lang:default decode:true crayon-inline\">VolumeSnapshot<\/span><\/td>\n<td style=\"width: 350px; height: 24px;\"><span class=\"lang:default decode:true crayon-inline\">PersistentStorageClaim<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\">Request a snapshot of a certain PVC using a specified VolumeSnapshotClass. Will be bound to a VolumeSnapshotContent resource.<\/td>\n<td style=\"width: 350px; height: 24px;\">Request for a volume of a certain size using a specified StorageClass. Will be bound to a PersistentVolume resource.<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\"><span class=\"lang:default decode:true crayon-inline\">VolumeSnapshotContent<\/span><\/td>\n<td style=\"width: 350px; height: 24px;\"><span class=\"lang:default decode:true crayon-inline\">PersistentVolume<\/span><\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 348px; height: 24px;\">The representation of the actual snapshot object at the storage provider. Bound to a VolumeSnapshot resource.<\/td>\n<td style=\"width: 350px; height: 24px;\">\u00a0The representation of the actual volume object at the storage provider. Bound to a PersistentVolumeClaim resource.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>So by simply creating an API object the developer triggers a snapshot creation at the storage provider. Deleting the API object will also delete the snapshot object at the storage provider (depending on the deletion policy).<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: snapshot.storage.k8s.io\/v1beta1\r\n\r\nkind: VolumeSnapshotClass\r\n\r\nmetadata:\r\n\r\n  name: ebs-csi\r\n\r\ndriver: ebs.csi.aws.com\r\n\r\ndeletionPolicy: Delete\r\n\r\n---\r\n\r\napiVersion: snapshot.storage.k8s.io\/v1beta1\r\n\r\nkind: VolumeSnapshot\r\n\r\nmetadata:\r\n\r\n  name: ebs-csi-backup\r\n\r\nspec:\r\n\r\n  volumeSnapshotClassName: ebs-csi\r\n\r\n  source:\r\n\r\n    persistentVolumeClaimName: ebs-data<\/pre>\n<p>Snapshots are often used as a backup method. Restoring a volume from a backup is achieved by using the VolumeSnapshotDataSource feature enabled since version 1.17. It allows to reference a VolumeSnapshot resource as a source in a PersistentVolumeClaim object. This will create a new volume from the specified snapshot.<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: v1\r\n\r\nkind: PersistentVolumeClaim\r\n\r\nmetadata:\r\n\r\n  name: ebs-restored-data\r\n\r\nspec:\r\n\r\n  storageClassName: ebs-csi\r\n\r\n  accessModes:\r\n\r\n    - ReadWriteOnce\r\n\r\n  volumeMode: Filesystem\r\n\r\n  resources:\r\n\r\n    requests:\r\n\r\n      storage: 10Gi # Must be equal to or larger than the snapshot size.\r\n\r\n  dataSource:\r\n\r\n    name: ebs-csi-backup\r\n\r\n    kind: VolumeSnapshot\r\n\r\n    apiGroup: snapshot.storage.k8s.io\r\n\r\n<\/pre>\n<p>For more information see <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volume-snapshots\/\">the official snapshot documentation<\/a> and also <a href=\"https:\/\/kubernetes.io\/blog\/2019\/12\/09\/kubernetes-1-17-feature-cis-volume-snapshot-beta\/\">this blog article<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CSI-Migration\"><\/span>CSI Migration<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>With all this CSI goodness we should not forget the old in-tree storage plugins. With their CSI counterparts reaching maturity they will become obsolete and are slated to be removed around version 1.21. That is when the following types of manifests will stop working:<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: v1\r\n\r\nkind: Pod\r\n\r\nmetadata:\r\n\r\n  name: test-ebs\r\n\r\nspec:\r\n\r\n  (...)\r\n\r\n  volumes:\r\n\r\n  - name: test-volume\r\n\r\n    awsElasticBlockStore:\r\n\r\n      volumeID: &lt;volume-id&gt;\r\n\r\n---\r\n\r\napiVersion: v1\r\n\r\nkind: PersistentVolume\r\n\r\nmetadata:\r\n\r\n  name: pv0003\r\n\r\nspec:\r\n\r\n  (...)\r\n\r\n  awsElasticBlockStore:\r\n\r\n    volumeID: &lt;volume-id&gt;\r\n\r\n<\/pre>\n<p>As seen above when talking about ephemeral CSI volumes, there is no replacement for the first pod manifest above. It will have to be migrated to use a PVC. The PersistentVolume below it can be migrated by specifying the EBS CSI driver instead.<\/p>\n<pre class=\"lang:yaml decode:true\">apiVersion: v1\r\n\r\nkind: PersistentVolume\r\n\r\nmetadata:\r\n\r\n  name: pv0003\r\n\r\nspec:\r\n\r\n  (...)\r\n\r\n  csi:\r\n\r\n    driver: ebs.csi.aws.com\r\n\r\n    volumeHandle: &lt;volume-id&gt;\r\n\r\n<\/pre>\n<p>It is much easier for StorageClass resources as it should be enough to replace the value of the <span class=\"lang:default decode:true crayon-inline \">provisioner<\/span>\u00a0 attribute with the name of the CSI driver, e.g. <span class=\"lang:default decode:true crayon-inline \">provisioner: kubernetes.io\/aws-ebs<\/span>\u00a0 becomes <span class=\"lang:default decode:true crayon-inline \">provisioner: ebs.csi.aws.com<\/span>\u00a0. The other parameters should remain the same.<\/p>\n<p>To assist in a smooth transition, cluster administrators would do good to install the new CSI driver alongside the old in-tree driver while it is still available. That way application developers can migrate their code successively. This is assisted by the CSIMigration feature which has been enabled in version 1.17. It diverts all calls directed to the in-tree storage plugins over to the corresponding CSI plugin, if available. Otherwise it will fall back to the in-tree plugin. This allows cluster administrators to roll out and test the CSI driver on a subset of nodes and roll back if desired.<\/p>\n<p>The CSIMigration feature needs to be enabled for the specific storage provider, though. As of 1.17 there are CSIMigrationAWS (beta), CSIMigrationGCE (beta), CSIMigrationAzureDisk (alpha), CSIMigrationAzureFile (alpha) and CSIMigrationOpenStack (alpha). See <a href=\"https:\/\/kubernetes.io\/docs\/reference\/command-line-tools-reference\/feature-gates\/\">the feature gates documentation<\/a> for details.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"What-a-ride\"><\/span>What a ride!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This has been a lot of information and I hope this little run through the Kubernetes storage world has not left your head spinning like an old hard disk. Thanks for reading! For further information, please check out our <a href=\"https:\/\/www.inovex.de\/en\/our-services\/cloud\/kubernetes\/\">Kubernetes offerings<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>With Kubernetes 1.13, the Container Storage Interface (CSI) joined its Network (CNI) and Runtime (CRI) cousins in the effort to make Kubernetes Storage more easily extensible. It allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases. Since its introduction, the Kubernetes team has been implementing more [&hellip;]<\/p>\n","protected":false},"author":70,"featured_media":19115,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[71],"service":[414],"coauthors":[{"id":70,"display_name":"Henning Eggers","user_nicename":"heggers"}],"class_list":["post-21120","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-cloud","service-cloud"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!<\/title>\n<meta name=\"description\" content=\"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!\" \/>\n<meta property=\"og:description\" content=\"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-29T08:38:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-21T11:04:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Henning Eggers\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Henning Eggers\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Henning Eggers\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\"},\"author\":{\"name\":\"Henning Eggers\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/53029a323b99ab715c91e926ab67a5dd\"},\"headline\":\"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!\",\"datePublished\":\"2020-06-29T08:38:56+00:00\",\"dateModified\":\"2022-11-21T11:04:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\"},\"wordCount\":1252,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png\",\"keywords\":[\"Cloud\"],\"articleSection\":[\"English Content\",\"General\",\"Infrastructure\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\",\"url\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\",\"name\":\"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png\",\"datePublished\":\"2020-06-29T08:38:56+00:00\",\"dateModified\":\"2022-11-21T11:04:39+00:00\",\"description\":\"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png\",\"width\":1920,\"height\":1080,\"caption\":\"An engineer working on kubernetes storage\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inovex.de\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inovex.de\/de\/#website\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inovex.de\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inovexde\",\"https:\/\/x.com\/inovexgmbh\",\"https:\/\/www.instagram.com\/inovexlife\/\",\"https:\/\/www.linkedin.com\/company\/inovex\",\"https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/53029a323b99ab715c91e926ab67a5dd\",\"name\":\"Henning Eggers\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/49765a2aab959dc185cc861e0bb6b106\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c22f6700cb0a83f16943130e8f1f830310c44f1f19f8a330aa8e7c9d81d8561?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c22f6700cb0a83f16943130e8f1f830310c44f1f19f8a330aa8e7c9d81d8561?s=96&d=retro&r=g\",\"caption\":\"Henning Eggers\"},\"url\":\"https:\/\/www.inovex.de\/de\/blog\/author\/heggers\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!","description":"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/","og_locale":"de_DE","og_type":"article","og_title":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!","og_description":"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.","og_url":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2020-06-29T08:38:56+00:00","article_modified_time":"2022-11-21T11:04:39+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png","type":"image\/png"}],"author":"Henning Eggers","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Henning Eggers","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten","Written by":"Henning Eggers"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/"},"author":{"name":"Henning Eggers","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/53029a323b99ab715c91e926ab67a5dd"},"headline":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!","datePublished":"2020-06-29T08:38:56+00:00","dateModified":"2022-11-21T11:04:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/"},"wordCount":1252,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png","keywords":["Cloud"],"articleSection":["English Content","General","Infrastructure"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/","url":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/","name":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png","datePublished":"2020-06-29T08:38:56+00:00","dateModified":"2022-11-21T11:04:39+00:00","description":"This article gives an overview over emerging Kubernetes storage features such as Container Storage Interface (CSI), which allows external storage vendors to maintain their own storage drivers independently of the Kubernetes source tree and releases.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2020\/06\/kubernetes-storage.png","width":1920,"height":1080,"caption":"An engineer working on kubernetes storage"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/kubernetes-storage-volume-cloning-ephemeral-inline-volumes-snapshots\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Storage: Ephemeral Inline Volumes, Volume Cloning, Snapshots and more!"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/53029a323b99ab715c91e926ab67a5dd","name":"Henning Eggers","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/49765a2aab959dc185cc861e0bb6b106","url":"https:\/\/secure.gravatar.com\/avatar\/0c22f6700cb0a83f16943130e8f1f830310c44f1f19f8a330aa8e7c9d81d8561?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c22f6700cb0a83f16943130e8f1f830310c44f1f19f8a330aa8e7c9d81d8561?s=96&d=retro&r=g","caption":"Henning Eggers"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/heggers\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=21120"}],"version-history":[{"count":1,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21120\/revisions"}],"predecessor-version":[{"id":39457,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21120\/revisions\/39457"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/19115"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=21120"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=21120"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=21120"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=21120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}