{"id":856,"date":"2020-10-22T16:38:38","date_gmt":"2020-10-22T14:38:38","guid":{"rendered":"https:\/\/loeilduse.fr\/?p=856"},"modified":"2020-10-22T16:38:38","modified_gmt":"2020-10-22T14:38:38","slug":"comment-supprimer-des-containers-volumes-orphelins-dans-vsphere","status":"publish","type":"post","link":"https:\/\/loeilduse.fr\/?p=856&lang=fr","title":{"rendered":"Comment supprimer des containers volumes &#8220;orphelins&#8221; dans vSphere"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Lorsque vous cr\u00e9ez des volumes Kubernetes h\u00e9berg\u00e9s sur vSphere, cela g\u00e9n\u00e8re des fichiers VMDKs, ils sont visibles au travers de l&#8217;interface graphique<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-858 aligncenter\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-1024x484.png\" alt=\"\" width=\"696\" height=\"329\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-1024x484.png 1024w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-300x142.png 300w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-768x363.png 768w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume.png 1130w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">C&#8217;est tr\u00e8s utile, il est m\u00eame possible de voir \u00e0 quel cluster les volumes appartiennent.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-863\" src=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster-1024x403.png\" alt=\"\" width=\"696\" height=\"274\" srcset=\"https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster-1024x403.png 1024w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster-300x118.png 300w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster-768x302.png 768w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster-1536x604.png 1536w, https:\/\/loeilduse.fr\/wp-content\/uploads\/2020\/10\/Container-Volume-cluster.png 1548w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Dans certaines situations, vous pouvez vous retrouver avec des volumes dits orphelins, notamment si un cluster Kubernetes est supprim\u00e9 &#8220;brutalement&#8221;. Malheureusement il n&#8217;est pas possible de supprimer ces volumes\/vmdks depuis l&#8217;interface graphique (\u00e0 date de la r\u00e9daction de cet article, vSphere 7). Pour ce faire, il existe d&#8217;autres possibilit\u00e9s comme par exemple utiliser l&#8217;utilitaire govc d\u00e9velopp\u00e9 par VMware. Cependant la version habituelle (r\u00e9f\u00e9rence \u00e0 la version govc version 0.23.0) ne prend pas en charge les options volume.ls et volume.rm, il faut pour cela utiliser une version \u00e0 compiler soi-m\u00eame. ci-dessous les \u00e9tapes \u00e0 respecter pour y parvenir :<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Installer go (sur Ubuntu server dans mon cas), il est important d&#8217;avoir une version r\u00e9cente :\u00a0<a href=\"https:\/\/golang.org\/doc\/install\">https:\/\/golang.org\/doc\/install<\/a><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Lancer la commande go suivante\u00a0 : <span class=\"pl-s1\" style=\"font-family: courier new, courier, monospace;\">go get -u github.com\/vmware\/govmomi\/govc<\/span> (<a href=\"https:\/\/github.com\/vmware\/govmomi\/tree\/master\/govc\">https:\/\/github.com\/vmware\/govmomi\/tree\/master\/govc)<\/a>. Ca va t\u00e9l\u00e9charger les sources dans le r\u00e9pertoire <span style=\"font-family: courier new, courier, monospace;\">~\/go\/src<\/span>, compiler et stocker le binaire govc dans <span style=\"font-family: courier new, courier, monospace;\">~\/go\/bin<\/span>.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">il faut positionner ensuite un certain nombre de variable \u00e0 govc afin qu&#8217;il puisse se connecter \u00e0 l&#8217;infrastructure, exemple :<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: courier new, courier, monospace;\">export GOVC_URL=&lt;fqdn du vcenter&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">export GOVC_USERNAME=&lt;compte avec des droits en consultation&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">export GOVC_PASSWORD=&lt;mot de passe du compte&gt;<\/span><br \/>\n<span style=\"font-family: courier new, courier, monospace;\">export GOVC_INSECURE=true (si vous utilisez des certificats non sign\u00e9s)<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Gr\u00e2ce \u00e0 ce govc sp\u00e9cifique, vous pouvez utiliser la commande <span style=\"font-family: courier new, courier, monospace;\">~\/go\/bin\/govc volume.ls<\/span> pour lister tous les volumes et la commande <span style=\"font-family: courier new, courier, monospace;\">~\/go\/bin\/govc volume.rm &lt;volume&gt;<\/span>. Attention \u00e0 bien choisir les volumes orphelins sinon vous risquez de perdre des donn\u00e9es. <\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Un d\u00e9veloppeur \u00e0 fait un script int\u00e9ressant pour supprimer les volumes orphelins : <a href=\"https:\/\/gist.github.com\/bburky\/fd729f129347b9141255fbc2185c52ea#file-remove-orphaned-cns-volumes-sh-L1\">https:\/\/gist.github.com\/bburky\/fd729f129347b9141255fbc2185c52ea#file-remove-orphaned-cns-volumes-sh-L1<\/a> (attention ce script suppose que <span style=\"font-family: courier new, courier, monospace;\">govc<\/span> soit dans votre variable <span style=\"font-family: courier new, courier, monospace;\">$PATH<\/span>, si ce n&#8217;est pas le cas mettez cette variable \u00e0 jour ou modifier le script pour qu&#8217;il pointe sur le bon <span style=\"font-family: courier new, courier, monospace;\">govc<\/span>). <\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Ce script \u00e0 un petit b\u00e9mol auquel il faut pr\u00eater attention, il suppose qu&#8217;il y ait un seul cluster car il utilise la commande <span style=\"font-family: courier new, courier, monospace;\">kubectl,<\/span> celle-ci se connecte en utilisant le contexte actif. Si vous avez plusieurs clusters kubernetes h\u00e9berg\u00e9s sur votre infrastructure, vous risquez de supprimer des volumes vus comme orphelin alors qu&#8217;ils peuvent potentiellement appartenir \u00e0 d&#8217;autres clusters Kubernetes, j&#8217;ai soumis au d\u00e9veloppeur du script cette modification :<\/span><\/p>\n<pre><span style=\"font-family: trebuchet ms, geneva, sans-serif;\"><code><strong><span style=\"font-family: courier new, courier, monospace;\">&gt; \"$temp_dir\/kubernetes-temp.txt\"\r\nfor context in $(kubectl config view -o jsonpath='{.contexts[*].name}')\r\ndo\r\n        echo checking context : $context<\/span><\/strong><span style=\"font-family: courier new, courier, monospace;\">\r\n        kubectl get pv -o jsonpath='{range .items[*]}{.spec.csi.volumeHandle}{\"\\t\"}{.metadata.name}{\"\\n\"}{end}' --context $context  &gt;&gt; \"$temp_dir\/kubernetes-temp.txt\"\r\n<\/span><strong><span style=\"font-family: courier new, courier, monospace;\">done\r\nsort $temp_dir\/kubernetes-temp.txt &gt; $temp_dir\/kubernetes.txt<\/span>\r\n\r\n<\/strong><\/code><\/span><\/pre>\n<p style=\"text-align: justify;\"><span style=\"font-family: trebuchet ms, geneva, sans-serif;\">Ce n&#8217;est pas encore parfait, il peut inclure des volumes provenant de cluster Kubernetes non vSphere mais il n&#8217;y aura pas d&#8217;incidence sur la suppression des volumes.<\/span><\/p>\n<pre><code><strong>\u00a0<\/strong><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Lorsque vous cr\u00e9ez des volumes Kubernetes h\u00e9berg\u00e9s sur vSphere, cela g\u00e9n\u00e8re des fichiers VMDKs, ils sont visibles au travers de l&#8217;interface graphique C&#8217;est tr\u00e8s utile, il est m\u00eame possible de voir \u00e0 quel cluster les volumes appartiennent. Dans certaines situations, vous pouvez vous retrouver avec des volumes dits orphelins, notamment si un cluster Kubernetes est<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/loeilduse.fr\/?p=856&#038;lang=fr\" class=\"home-blog-btn\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[147],"tags":[188,28,187,173],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/856"}],"collection":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=856"}],"version-history":[{"count":8,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/856\/revisions"}],"predecessor-version":[{"id":870,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/856\/revisions\/870"}],"wp:attachment":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}