{"id":47193,"date":"2019-11-20T21:35:19","date_gmt":"2019-11-20T18:35:19","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=47193"},"modified":"2019-11-20T21:35:19","modified_gmt":"2019-11-20T18:35:19","slug":"using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/","title":{"rendered":"Using Toshiba&#8217;s KumoScale Flash-as-a-Service Storage on Kubernetes"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#Storage_for_StatefulSets\" >Storage for StatefulSets<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#Accelerating_with_KumoScale_NVMe-oF\" >Accelerating with KumoScale NVMe-oF<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#Accessing_NVMe_from_Kubernetes_via_the_CSI_driver\" >Accessing NVMe from Kubernetes via the CSI driver<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Storage_for_StatefulSets\"><\/span>Storage for StatefulSets<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/running-stateful-apps-on-kubernetes-with-statefulsets\/\">StatefulSet workloads<\/a> in Kubernetes require a <a href=\"https:\/\/www.altoros.com\/blog\/enabling-persistent-storage-for-docker-and-kubernetes-on-oracle-cloud\/\">persistent storage<\/a>, which is provided by <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/\" rel=\"noopener noreferrer\" target=\"_blank\">PersistentVolumes<\/a>. As pods are rescheduled or restarted, their connections to <code style=\"color: black; background-color: #e6e6e6;\">PersistentVolumes<\/code> are also migrated in order to keep any configurations intact.<\/p>\n<p>Storage for <code style=\"color: black; background-color: #e6e6e6;\">PersistentVolumes<\/code> can either be provided by local or network drives. Local drives have better overall performance, while network drives provide flexibility in terms of moving storage around and scaling. In addition, Kubernetes has a limitation, where there is no dynamic provisioning for a local storage. Without dynamic provisioning, pods cannot request storage on-demand.<\/p>\n<p>Kubernetes deployments typically utilize a cloud storage, meaning most pods rely on a network storage at the cost of performance. However, with the <a href=\"https:\/\/en.wikipedia.org\/wiki\/NVM_Express\" rel=\"noopener noreferrer\" target=\"_blank\">non-volatile memory express<\/a> (NVMe) storage, the performance loss while on a network is negligible.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/10\/kubernetes-statefulsets-nvme-technology-kumoscale-toshiba.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/10\/kubernetes-statefulsets-nvme-technology-kumoscale-toshiba-1024x573.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-47203\" \/><\/a><small>NVMe storage performance over a network (<a href=\"https:\/\/www.slideshare.net\/main\/private_slideshow?path_to_redirect_at=https%3A%2F%2Fwww.slideshare.net%2Faltoros%2Fperformance-storage-for-kubernetes-statefulsets-182763662\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<div id=\"attachment_47629\" style=\"width: 130px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/Amarjit-Singh.jpg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-47629\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/Amarjit-Singh-150x150.jpg\" alt=\"\" width=\"120\" class=\"size-thumbnail wp-image-47629\" \/><\/a><p id=\"caption-attachment-47629\" class=\"wp-caption-text\"><small>Amarjit Singh<\/small><\/p><\/div>\n<p>At a recent Kubernetes meetup, <a href=\"https:\/\/www.linkedin.com\/in\/amarjitmult\/\" rel=\"noopener noreferrer\" target=\"_blank\">Amarjit Singh<\/a> of Toshiba explained how to use the NVMe storage via the Kubernetes <a href=\"https:\/\/kubernetes.io\/blog\/2019\/01\/15\/container-storage-interface-ga\/\" rel=\"noopener noreferrer\" target=\"_blank\">container storage interface<\/a> (CSI) driver to get the best of both types of storage, as well as enjoy dynamic provisioning.<\/p>\n<blockquote><p>&#8220;With NVMe over the network, you get performance of a local storage and the flexibility of a remote storage. That&#8217;s what you need with StatefulSets.&#8221;<br \/>\n\u2014Amarjit Singh, Toshiba<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Accelerating_with_KumoScale_NVMe-oF\"><\/span>Accelerating with KumoScale NVMe-oF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><i>KumoScale NVMe-oF<\/i> is Toshiba&#8217;s software for implementing networked block storage services. Based on the <a href=\"https:\/\/nvmexpress.org\/wp-content\/uploads\/NVMe_Over_Fabrics.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">NVMe over Fabrics standard<\/a>, KumoScale NVMe-oF optimizes the performance of NVMe drives over a network through disaggregation.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/10\/kubernetes-statefulsets-kumoscale-software-architecture.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/10\/kubernetes-statefulsets-kumoscale-software-architecture-1024x574.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-47202\" \/><\/a><small>The KumoScale architecture (<a href=\"https:\/\/www.slideshare.net\/main\/private_slideshow?path_to_redirect_at=https%3A%2F%2Fwww.slideshare.net%2Faltoros%2Fperformance-storage-for-kubernetes-statefulsets-182763662\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;KumoScale provides storage over the network to multiple hosts. In this case, we used the CSI driver to connect KumoScale to the Kubernetes pods.&#8221; \u2014Amarjit Singh, Toshiba<\/p><\/blockquote>\n<p>With the CSI drivers, plug-ins can be written for any storage to be used by <code style=\"color: black; background-color: #e6e6e6;\">PersistentVolumes<\/code>. Connecting an NVMe storage with the CSI driver makes it possible for StatefulSet workloads in Kubernetes to gain the benefits of both a local and a network storage.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Accessing_NVMe_from_Kubernetes_via_the_CSI_driver\"><\/span>Accessing NVMe from Kubernetes via the CSI driver<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The Kubernetes <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#csi\" rel=\"noopener noreferrer\" target=\"_blank\">CSI driver<\/a> is a standard for exposing arbitrary block and file storage systems. This driver enables users to write and deploy their own storage plug-ins in Kubernetes.<\/p>\n<p>Amarjit briefly detailed one of the Toshiba&#8217;s test implementations with their KumoScale NVMe over Fabrics (NVMe-oF) using the CSI driver. &#8220;The CSI driver in Kubernetes talks to the central provisioner, which then provisions storage on the network. This storage is then assigned to the pods,&#8221; he noted. &#8220;This all happens over the REST API commands.&#8221;<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-driver.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-driver-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-47637\" \/><\/a><small>The Kubernetes CSI driver architecture (<a href=\"https:\/\/www.slideshare.net\/main\/private_slideshow?path_to_redirect_at=https%3A%2F%2Fwww.slideshare.net%2Faltoros%2Fperformance-storage-for-kubernetes-statefulsets-182763662\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Once a CSI storage plug-in is created, users can enable dynamic provisioning by creating a <code style=\"color: black; background-color: #e6e6e6;\">StorageClass<\/code>, which points to the plug-in.<\/p>\n<blockquote><p>&#8220;The CSI driver is a standard which anyone can use to write a driver for. At the high level, it talks to the storage in the back end and attaches it to the pods.&#8221; \u2014Amarjit Singh, Toshiba<\/p><\/blockquote>\n<p>Amarjit also showed the results of Toshiba&#8217;s internal tests comparing the difference between local SATA drives and NVMe over a network. The test measured the performance of the two storage types when reading and writing 100,000,000 transactions in Cassandra.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-sata-vs-nvme.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-sata-vs-nvme-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-47660\" \/><\/a><small>SATA and NVMe performance comparison (<a href=\"https:\/\/www.slideshare.net\/main\/private_slideshow?path_to_redirect_at=https%3A%2F%2Fwww.slideshare.net%2Faltoros%2Fperformance-storage-for-kubernetes-statefulsets-182763662\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>According to Amarjit, &#8220;local SATA drives will experience a performance degradation, while network-based NVMe drives does not degrade. If you have multiple StatefulSet applications, they get the same performance with NVMe.&#8221;<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"video-block\">\n<div class=\"video-block-wrap\">\n        <script charset=\"ISO-8859-1\" src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_1yqcrctkem\" style=\"height:320px;width:440px\"><\/div>\n<\/p><\/div>\n<div class=\"video-block-descr\">\n        <strong>Table of contents<\/strong><\/p>\n<ol>\n<li>What are StatefulSets? (<a href=\"#wistia_1yqcrctkem?time=93\">1&#8217;33&#8221;<\/a>)<\/li>\n<li>What are <code style=\"color: black; background-color: #e6e6e6;\">PersistentVolumes<\/code>? (<a href=\"#wistia_1yqcrctkem?time=145\">2&#8217;25&#8221;<\/a>)<\/li>\n<li>The difference between a local and a network storage (<a href=\"#wistia_1yqcrctkem?time=251\">4&#8217;11&#8221;<\/a>)<\/li>\n<li>How has storage evolved over the years? (<a href=\"#wistia_1yqcrctkem?time=390\">6&#8217;30&#8221;<\/a>)<\/li>\n<li>NVMe performance on a network (<a href=\"#wistia_1yqcrctkem?time=550\">9&#8217;10&#8221;<\/a>)<\/li>\n<li>What is the Kubernetes CSI driver? (<a href=\"#wistia_1yqcrctkem?time=705\">11&#8217;45&#8221;<\/a>)<\/li>\n<li>Demo: The NVMe storage via the Kubernetes CSI driver (<a href=\"#wistia_1yqcrctkem?time=978\">16&#8217;18&#8221;<\/a>)<\/li>\n<li>Questions and answers (<a href=\"#wistia_1yqcrctkem?time=1810\">30&#8217;10&#8221;<\/a>)<\/li>\n<\/ol><\/div>\n<\/div>\n<p>&nbsp;<br \/>\n<small>These are the slides presented at the meetup.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/AFAaOW1mLr1PCF\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/running-stateful-apps-on-kubernetes-with-statefulsets\/\">Considerations for Running Stateful Apps on Kubernetes<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/enabling-persistent-storage-for-docker-and-kubernetes-on-oracle-cloud\/\">Enabling Persistent Storage for Docker and Kubernetes on Oracle Cloud<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/kubernetes-networking-writing-your-own-simple-cni-plug-in-with-bash\/\">Kubernetes Networking: How to Write Your Own CNI Plug-in with Bash<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.linkedin.com\/in\/amarjitmult\/\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/Amarjit-Singh-Toshiba-bio.png\" alt=\"\" width=\"130\" class=\"aligncenter size-full wp-image-47665\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/amarjitmult\/\" rel=\"noopener noreferrer\" target=\"_blank\">Amarjit Singh<\/a> is Director DevOps and Cloud Solutions Engineering at Toshiba Memory America, Inc. He is working on a new product category to enable NVMe flash as a service in modern cloud infrastructures. Having worked in IT for 20+ years, Amarjit has extensive experience in managing cloud infrastructures.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><center><small>This blog post was written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a>, edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophia Turol<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Storage for StatefulSets<\/p>\n<p>StatefulSet workloads in Kubernetes require a persistent storage, which is provided by PersistentVolumes. As pods are rescheduled or restarted, their connections to PersistentVolumes are also migrated in order to keep any configurations intact.<\/p>\n<p>Storage for PersistentVolumes can either be provided by local or network drives. Local drives have better [&#8230;]<\/p>\n","protected":false},"author":32,"featured_media":47688,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,912],"class_list":["post-47193","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Toshiba&#039;s KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros<\/title>\n<meta name=\"description\" content=\"Learn how the Kubernetes CSI driver enables PersistentVolumes to use the NVMe storage on a network, achieving the performance similar to the one of local disks.\" \/>\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.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Toshiba&#039;s KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros\" \/>\n<meta property=\"og:description\" content=\"Storage for StatefulSets StatefulSet workloads in Kubernetes require a persistent storage, which is provided by PersistentVolumes. As pods are rescheduled or restarted, their connections to PersistentVolumes are also migrated in order to keep any configurations intact. Storage for PersistentVolumes can either be provided by local or network drives. Local drives have better [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-20T18:35:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Carlo Gutierrez\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Gutierrez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/\",\"name\":\"Using Toshiba's KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif\",\"datePublished\":\"2019-11-20T18:35:19+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Toshiba&#8217;s KumoScale Flash-as-a-Service Storage on Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\",\"name\":\"Carlo Gutierrez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"caption\":\"Carlo Gutierrez\"},\"description\":\"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using Toshiba's KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros","description":"Learn how the Kubernetes CSI driver enables PersistentVolumes to use the NVMe storage on a network, achieving the performance similar to the one of local disks.","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.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Using Toshiba's KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros","og_description":"Storage for StatefulSets StatefulSet workloads in Kubernetes require a persistent storage, which is provided by PersistentVolumes. As pods are rescheduled or restarted, their connections to PersistentVolumes are also migrated in order to keep any configurations intact. Storage for PersistentVolumes can either be provided by local or network drives. Local drives have better [...]","og_url":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/","og_site_name":"Altoros","article_published_time":"2019-11-20T18:35:19+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif","type":"image\/gif"}],"author":"Carlo Gutierrez","twitter_misc":{"Written by":"Carlo Gutierrez","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/","url":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/","name":"Using Toshiba's KumoScale Flash-as-a-Service Storage on Kubernetes | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif","datePublished":"2019-11-20T18:35:19+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/11\/kubernetes-statefulsets-CSI-NVMe-KumoScale.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/using-toshibas-kumoscale-flash-as-a-service-storage-on-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Toshiba&#8217;s KumoScale Flash-as-a-Service Storage on Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442","name":"Carlo Gutierrez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","caption":"Carlo Gutierrez"},"description":"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.","url":"https:\/\/www.altoros.com\/blog\/author\/carlo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/47193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=47193"}],"version-history":[{"count":77,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/47193\/revisions"}],"predecessor-version":[{"id":47697,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/47193\/revisions\/47697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/47688"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=47193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=47193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=47193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}