{"id":6742,"date":"2021-06-22T13:39:44","date_gmt":"2021-06-22T08:09:44","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=6742"},"modified":"2021-06-22T14:07:11","modified_gmt":"2021-06-22T08:37:11","slug":"enable-support-to-provision-gp3-volumes-in-storage-class","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2021\/06\/22\/enable-support-to-provision-gp3-volumes-in-storage-class\/","title":{"rendered":"Enable Support to Provision GP3 Volumes in Storage Class"},"content":{"rendered":"\n<p><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"248\" src=\"https:\/\/lh3.googleusercontent.com\/j8nRHz3wPaSVsvxOHBJisWaw_Dsog4G9KSsuXMiDQcVsEp4fACMFw4MWZplxMn0WJnBIDRIkxIRk_aZUu9yohMTvDaWiJaJ_8t6CNWVW1DNTqq1P30LJclqYEccWUV2-Gi6113dI\"><\/p>\n\n\n\n<p>No matter where organizations are in their cloud journey, cloud cost optimization remains an essential and top-priority concern. As organizations align increasing workloads to the cloud in terms of size there is a high possibility to lose sight of the overall cloud environment and the costs associated with it. Therefore, it&#8217;s essential to optimize cloud costs so as to maximise return over investment (ROI). With the same concern we were working towards reducing the cost of provisioned storage for one our clients. This post covers a particularly interesting issue around the same.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>When we found that gp3 volumes are cheaper than gp2 by looking at price comparison given by <a href=\"https:\/\/aws.amazon.com\/ebs\/pricing\/\" target=\"_blank\" rel=\"noopener\">aws<\/a>, we decided to migrate. Once our migration was complete w.r.t. volumes under cost optimization and mail was circulated as well stating that we would be launching only gp3 ebs volumes from now onwards, we did not expect one particular issue to creep up on us. After 2-3 days, we saw that gp2 volumes were still launching.<\/p>\n\n\n\n<p>We checked the volumes that were launched recently and found the culprit \u201cstorage class\u201d. We were using a storage class for dynamic volume provisioning of aws ebs volumes. Turns out, we forgot&nbsp;to change storage class in our eks cluster.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<pre class=\"wp-block-syntaxhighlighter-code\">Warning ProvisioningFailed 9s (x5 over 59s) persistentvolume-controller Failed to provision volume with StorageClass \"gp3\": invalid AWS VolumeType \"gp3\".<\/pre>\n<\/div><\/div>\n\n\n\n<p>With the above error we came to know that we need to change the underlying provisioner of the storage class because provisioner: <em>kubernetes.io\/aws-ebs <\/em>only supported gp2 volume type as per official <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/storage-classes\/#aws-ebs\" target=\"_blank\" rel=\"noopener\">documentation<\/a>. On further Googling to get out of this sticky situation,  we found a CSI provisioner could fix this problem. But implementing it wasn&#8217;t exactly a straight shot.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.olinone.in\/uploads\/blog\/google%20learning%20using%20serach%20app.jpg\" alt=\"\" width=\"311\" height=\"175\" \/><figcaption>Ask me ?<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Problem Statement<\/h2>\n\n\n\n<p>Unable to launch gp3 volumes with in-tree kubernetes plugin. Followed a <a href=\"https:\/\/www.stacksimplify.com\/aws-eks\/kubernetes-storage\/install-aws-ebs-csi-driver-on-aws-eks-for-persistent-storage\/#step-04-deploy-amazon-ebs-csi-driver\" target=\"_blank\" rel=\"noopener\">blog<\/a>, but ended up with another error, &#8220;not able to provision persistent volume using csi provisioner&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Steps to reproduce<\/h2>\n\n\n\n<p><br>Delete storage class with default provisioner i.e. Fig. 1 below<br><code>kubectl delete sc buildpiper-storage<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\">Create storage class with csi provisioner i.e. Fig. 2 below<br><code>kubectl apply -f storage-class-csi.yaml<\/code><br><br>Get eks worker node role name i.e. Fig. 3 below<br><code>kubectl get configmap aws-auth -n kube-system<\/code><br><br>copy the ROLE-NAME<br>create IAM policy with name <strong>Amazon_EBS_CSI_Driver<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"ec2:AttachVolume\",\n        \"ec2:CreateSnapshot\",\n        \"ec2:CreateTags\",\n        \"ec2:CreateVolume\",\n        \"ec2:DeleteSnapshot\",\n        \"ec2:DeleteTags\",\n        \"ec2:DeleteVolume\",\n        \"ec2:DescribeInstances\",\n        \"ec2:DescribeSnapshots\",\n        \"ec2:DescribeTags\",\n        \"ec2:DescribeVolumes\",\n        \"ec2:DetachVolume\"\n      ],\n      \"Resource\": \"*\"\n    }\n  ]\n}<\/pre>\n\n\n\n<p class=\"has-text-align-left\">Associate IAM Policy to Worker Node IAM Role:<br>1. Open AWS console -&gt; Go to Services -&gt; IAM -&gt; Roles<\/p>\n\n\n\n<p class=\"has-text-align-left\">2. Search for role with name&nbsp;<strong> ROLE-NAME <\/strong>&nbsp;and open it<\/p>\n\n\n\n<p class=\"has-text-align-left\">3. Click on&nbsp;<strong>Permissions<\/strong>&nbsp;tab &#8211; Click on&nbsp;<strong>Attach Policies<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left\">4. Search for&nbsp;<strong>Amazon_EBS_CSI_Driver<\/strong> and click on&nbsp;<strong>Attach Policy<\/strong><br><br>Install EBS CSI Driver<br><code>kubectl apply -k \"github.com\/kubernetes-sigs\/aws-ebs-csi-driver\/deploy\/kubernetes\/overlays\/stable\/?ref=release-0.1<\/code><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/Fve8BqqV8sdi25DosohOfKHT1oZe2e_WgI9Bw2XbT3lUCvEkERwDl_rmM7aOqVIWlovuIMmu1_T3ysa_tXbkstKcLIBify-txFM0haFWoaHpVrcv-CWzTXjqawniEsApnkkArQpl\" alt=\"\" width=\"586\" height=\"172\" \/><figcaption>Fig. 1: Storage class with default provisioner and type <\/figcaption><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/XKJtFRLNLHPqyTL-UEjBsSZSlz8joDVeKovzYIs8YIfFl212zi5xkQufaF-RDB4JopC83YAZqnNWmV-dGLZnEhWyf-QXUz8DGCvt7xtybrqn7yAKm4DEmxcKGib46yjQX2asxthA\" alt=\"\" width=\"590\" height=\"174\" \/><figcaption>Fig. 2: storage class i.e. storage-class-csi.yaml with csi provisoner and type gp3<\/figcaption><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/ll1HlZ3RR98cuYQvEel6Nexbfc7C4Smk-ffj-FC0e0CzQ_hcsrEeiBCA4LqdZJWgmjuBDw-yL6EBGAAfkLZXq8QiyFsvnjfoDGJ-vm8hLD_0r1hEGFiaP6IT9NvnkvB4zO1q3-0e\" alt=\"\" width=\"583\" height=\"213\" \/><figcaption>Fig. 3: aws-auth configmap<\/figcaption><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resolution<\/h2>\n\n\n\n<p>Continuing to struggle with this issue, we looked up compatible version at <a href=\"https:\/\/github.com\/kubernetes-sigs\/aws-ebs-csi-driver\" target=\"_blank\" rel=\"noopener\">Kubernetes Version Compatibility Matrix<\/a>. Following this, upgraded k8s cluster from version 1.16 to 1.17 and it started working with version \u201crelease-0.10\u201d for me.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>We sought cost optimization and during that journey, came across a completely different issue. Got to know about CSI plugin that helped to launch gp3 ebs volumes via storage class. We had also faced version compatibility issue that leads to failure in achieving intended result. Overall it was a satisfying experience for me.<br>I have tried to keep it simple and frame the content based on my experience. If you feel it needs any correction or feedback, feel free to comment.<br>Keep learning and stay safe !<\/p>\n\n\n\n<p>Image Reference<\/p>\n\n\n\n<p><a href=\"https:\/\/platform9.com\/blog\/kubernetes-storage-dynamic-volumes-and-the-container-storage-interface\/\" target=\"_blank\" rel=\"noopener\">Image 1<\/a> and <a href=\"https:\/\/www.olinone.in\/uploads\/blog\/google%20learning%20using%20serach%20app.jpg\" target=\"_blank\" rel=\"noopener\">Image 2<\/a>,<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p> <strong>Blog Pundit:<\/strong>   <a href=\"https:\/\/opstree.com\/blog\/\/author\/adeel109\/\"><strong>Adeel Ahmad<\/strong><\/a> &amp; <a href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\"><strong><a href=\"https:\/\/opstree.com\/blog\/\/author\/naveenverma023\/\"><strong>Naveen Verma<\/strong><\/a><\/strong><\/a><\/p>\n\n\n\n<p>Opstree is an End to End DevOps solution provider<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link\" href=\"https:\/\/www.opstree.com\/contact-us\" target=\"_blank\" rel=\"noreferrer noopener\">CONTACT US<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect Us <\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter items-justified-right is-layout-flex wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>No matter where organizations are in their cloud journey, cloud cost optimization remains an essential and top-priority concern. As organizations align increasing workloads to the cloud in terms of size there is a high possibility to lose sight of the overall cloud environment and the costs associated with it. Therefore, it&#8217;s essential to optimize cloud &hellip; <a href=\"https:\/\/opstree.com\/blog\/2021\/06\/22\/enable-support-to-provision-gp3-volumes-in-storage-class\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Enable Support to Provision GP3 Volumes in Storage Class&#8221;<\/span><\/a><\/p>\n","protected":false},"author":175681501,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[182564,421790,169750,5302938,768739309,73955,3386,235985140],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-1KK","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/6742"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/175681501"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=6742"}],"version-history":[{"count":25,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/6742\/revisions"}],"predecessor-version":[{"id":7178,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/6742\/revisions\/7178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=6742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=6742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=6742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}