<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Troubleshooting on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/troubleshooting/</link><description>Recent content in Troubleshooting on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Tue, 02 Oct 2018 11:45:54 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/troubleshooting/index.xml" rel="self" type="application/rss+xml"/><item><title>Minikube sur Hyper-V part 2 : troubleshooting de l’installation</title><link>https://blog.zwindler.fr/2018/10/02/minikube-sur-hyper-v-part-2-troubleshooting-de-linstallation/</link><pubDate>Tue, 02 Oct 2018 11:45:54 +0000</pubDate><guid>https://blog.zwindler.fr/2018/10/02/minikube-sur-hyper-v-part-2-troubleshooting-de-linstallation/</guid><description>&lt;img src="https://blog.zwindler.fr/2018/09/minikube.webp" alt="Featured image of post Minikube sur Hyper-V part 2 : troubleshooting de l’installation" /&gt;&lt;h2 id="minikube-le-retour"&gt;Minikube, le retour
&lt;/h2&gt;&lt;p&gt;Il y a deux semaines, j’ai fais un article sur l’installation de Minikube sur un poste Windows 10. Petite subtilité, l’article en question explique comment installer Minikube sur Hyper-V, nativement présent avec Windows 10, plutôt qu’avec Virtual Box, le choix par défaut mais qui nécessite un téléchargement et une installation complémentaire. Si vous l’avez loupé, &lt;a class="link" href="https://blog.zwindler.fr/2018/09/12/installer-minikube-sur-windows-10-et-hyper-v-part-1/" &gt;c’est par ici&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="option-2--expectations-meet-life"&gt;Option 2 : Expectations meet life
&lt;/h2&gt;&lt;p&gt;On s’était arrêté dans l’article précédent à un monde merveilleux ou tout marche du premier coup.&lt;br&gt;
Mais, vous vous en doutez, dans la vie (et particulièrement dans l’IT), rien ne se passe jamais comme prévu.&lt;/p&gt;
&lt;p&gt;Voilà donc un petit florilège des problèmes que vous pourriez (ou avez) rencontrer (et leur résolution !)&lt;/p&gt;
&lt;h3 id="vboxmanage-not-found"&gt;VBoxManage not found
&lt;/h3&gt;&lt;p&gt;Si vous en venez à vous demander comment l’installer sur Hyper-V, c’est probablement que vous avez commencé par lancer la commande « minikube start » sans arguments&amp;hellip; L’installeur a donc bêtement assumé que vous utilisiez Virtual Box (pourquoi ?) et vous vous retrouvez avec l’erreur suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Error getting state for host: VBoxManage not found. Make sure VirtualBox is installed and VBoxManage is in the path.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pourtant, vous avez beau forcer le start avec le flag suivant, rien y fait, ce n’est pas pris en compte.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;--vm-driver hyperv
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour trouver comment résoudre ce problème, vous pouvez jeter à œil à cette &lt;a class="link" href="https://github.com/kubernetes/minikube/issues/2901" target="_blank" rel="noopener"
&gt;issue sur github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En réalité, une fois le premier « start » lancé, les fichiers de configuration sont générés dans &lt;strong&gt;C:\users[votrelogin].minikube&lt;/strong&gt; (et en particulier dans profiles\minikube\config.json).&lt;/p&gt;
&lt;p&gt;Impossible d’expliquer à l’installeur que vous avez changé d’avis (oui oui&amp;hellip;), il faut donc de supprimer tout le dossier &lt;em&gt;.minikube&lt;/em&gt; et recommencer avec les bons paramètres la prochaine fois (enfin c’est le plus simple, on va dire).&lt;/p&gt;
&lt;h3 id="minikube-v0xxxiso-le-chemin-daccès-spécifié-est-introuvable"&gt;minikube-v0.xx.x.iso: Le chemin d’accès spécifié est introuvable&amp;hellip;
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;minikube-v0.28.1.iso: Le chemin d’accès spécifié est introuvable...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ok, ça ne marche toujours pas. On passe en mode verbose pour avoir l’erreur exacte :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;PS C:\windows\system32&amp;gt; minikube start --vm-driver hyperv --hyperv-virtual-switch &amp;#34;Primary Virtual Switch&amp;#34; -v=7
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
[...]
[stderr =====&amp;gt;] :
Downloading D:\Users\zwindler\.minikub\cache\boot2docker.iso from file://D:/Users/zwindler/.minikub/cache/iso/minikube-v0.28.1.iso...
E0906 15:10:27.568262 14484 start.go:174] Error starting host: Error creating host: Error executing step: Creating VM.: open /Users/zwindler/.minikub/cache/iso/minikub-v0.28.1.iso: Le chemin d’accès spécifié est introuvable..
Retrying.
E0906 15:10:27.873612 14484 start.go:180] Error starting host: Error creating host: Error executing step: Creating VM.
: open /Users/zwindler/.minikube/cache/iso/minikube-v0.28.1.iso: Le chemin d’accès spécifié est introuvable.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pourtant le fichier existe. Et c’est reparti pour un tour sur Github pour avoir plus de détails !&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/kubernetes/minikube/issues/1310" target="_blank" rel="noopener"
&gt;github.com/kubernetes/minikube/issues/1310&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/kubernetes/minikube/issues/2564" target="_blank" rel="noopener"
&gt;github.com/kubernetes/minikube/issues/2564&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ici, c’est donc tout simplement le script Minikube qui ne sait pas que vous avez un disque **D:**&amp;hellip; Alors qu’il vient de le déposer lui même dans *&lt;em&gt;D:*&lt;/em&gt; une ligne plus haut !!! La solution donc :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;you can specify the path for the .minikub directory by setting the MINIKUBE_HOME env variable&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bon en vrai la bonne syntaxe sous Windows (dans Powershell en tout cas) c’est :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$MINIKUBE_HOME=&amp;#34;D:\Users\[votrelogin]\&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On oublie pas de nettoyer la tentative précédente avec un :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;minikube delete
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="flmnh--error-deleting-machine-profile-config"&gt;FLMNH : « Error deleting machine profile config »
&lt;/h3&gt;&lt;p&gt;Si jamais en essayant de nettoyer votre environnement (pour recommencez, vous essayez un « minikube delete » et que vous vous prenez une erreur).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;minikube delete
Deleting local Kubernetes cluster...
Machine deleted.
Error deleting machine profile config
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Rebelotte, on supprime le dossier &lt;strong&gt;D:\Users[votrelogin].minikube&lt;/strong&gt; à la main.&lt;/p&gt;
&lt;h3 id="error-starting-host-error-starting-stopped-host-exit-status-1"&gt;Error starting host: Error starting stopped host: exit status 1
&lt;/h3&gt;&lt;p&gt;Tout à l’air de fonctionner. Vous croyez que vous vous en êtes sortis ? Pauvres fous ;)&lt;/p&gt;
&lt;p&gt;Au moment où tout se termine, le script vérifie que le cluster est opérationnel. Et après avoir boucler un moment : PAF !&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Error starting host: Error starting stopped host: exit status 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;L’erreur n’est pas très explicite. En gros, vous êtes dans le cas où tout est bien installé, mais le curl pour vérifier que le cluster est UP échoue, pour un souci réseau. La plupart du temps, il s’agit de l’erreur suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/kubernetes/minikube/issues/1967" target="_blank" rel="noopener"
&gt;github.com/kubernetes/minikube/issues/1967&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/kubernetes/minikube/issues/1945" target="_blank" rel="noopener"
&gt;github.com/kubernetes/minikube/issues/1945&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;After some troubleshooting and head banging, it became apparent that the external network adapter had an ethernet adapter selected that was not connected to a network. (ethernet selected, instead of the wireless adapter). Of course an IP wont be allocated on an external network if none is connected.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Vérifiez donc dans les paramètres d’Hyper-V que vous ne vous êtes pas trompé d’adaptateur réseau lors de la configuration du réseau virtuel (cf &lt;a class="link" href="https://blog.zwindler.fr/2018/09/12/installer-minikube-sur-windows-10-et-hyper-v-part-1/" &gt;l’article précédent&lt;/a&gt;) !&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2018/09/minikube04.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="unable-to-authenticate-attempted-methods-publickey-none"&gt;unable to authenticate, attempted methods [publickey none]
&lt;/h3&gt;&lt;p&gt;Ok, cette fois ci tout est censé être bon. Pourtant, à la fin, ça plante encore (désespoir).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Error dialing TCP: ssh: handshake failed: ssh: unable to authenticate, attempted methods [publickey none], no supported methods remain
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Là je ne suis pas sûr à 100% ni de la cause, ni du fix, mais a priori, c’était un problème lié au client/serveur OpenSSH fourni par Microsoft, qui serait pourri. L’installation d’une autre version via Chocolatey semble avoir résolu le problème.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/kubernetes/minikube/issues/2329" target="_blank" rel="noopener"
&gt;github.com/kubernetes/minikube/issues/2329&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;PS D:\&amp;gt; minikube ip
172.16.25.217
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;choco install openssh
Chocolatey v0.10.11
Installing the following packages:
openssh
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Kubernetes avec Kubespray part 2 – Astuces &amp; troubleshooting</title><link>https://blog.zwindler.fr/2018/01/30/astuces-troubleshooting-kubespray/</link><pubDate>Tue, 30 Jan 2018 12:45:54 +0000</pubDate><guid>https://blog.zwindler.fr/2018/01/30/astuces-troubleshooting-kubespray/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/12/kubespray.webp" alt="Featured image of post Kubernetes avec Kubespray part 2 – Astuces &amp; troubleshooting" /&gt;&lt;h2 id="kubespray-"&gt;Kubespray ?
&lt;/h2&gt;&lt;p&gt;Pour ceux qui ne savent pas ce qu’est Kubernetes, &lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=Kubernetes" &gt;je vous invite à lire les articles que j’ai écris à ce sujet&lt;/a&gt;. Kubernetes est un produit permettant de gérer des clusters de machines exécutant des containers en production. Et pour ceux qui ne connaissent pas Kubespray, il s’agit d’un outil principalement basé sur Ansible permettant de simplifier l’installation (relativement complexe) de Kubernetes.&lt;/p&gt;
&lt;p&gt;En théorie, si vous partez avec des machines vierges et qui peuvent discuter entre elles, vous devriez avoir &lt;em&gt;un cluster Kubernetes opérationnel en une vingtaine de minutes et en deux lignes de commande&lt;/em&gt;, en suivant &lt;a class="link" href="https://blog.zwindler.fr/2017/12/05/installer-kubernetes-kubespray-ansible/" &gt;ce tutoriel pas à pas&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible-playbook -i inventaire_kubernetes/inventory.cfg cluster.yml -b -v --private-key=~/.ssh/id_rsa
[...]
Monday 29 January 2018 15:57:07 +0100 (0:00:00.050) 0:17:56.289 ********
===============================================================================
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bon&amp;hellip; j’ai quand même eu quelques erreurs et j’ai décidé de les consigner « à part » de l’article d’installation. Je le mettrais à jour dès que j’en rencontre de nouvelles.&lt;/p&gt;
&lt;h2 id="erreur-kubespray-defaults--configure-defaults"&gt;Erreur kubespray-defaults : Configure defaults
&lt;/h2&gt;&lt;p&gt;Si l’installation plante à cette étape avec une très loooongue erreur bien rouge, vérifier qu’il n’y a pas écrit en fin de ligne&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;The ipaddr filter requires python-netaddr be installed on the ansible controller
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si c’est le cas, vous avez probablement oublié d’installer le paquet &lt;strong&gt;python-netaddr&lt;/strong&gt; comme indiqué &lt;a class="link" href="https://blog.zwindler.fr/2017/12/05/installer-kubernetes-kubespray-ansible/" &gt;au début du tutoriel d’installation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="erreur-kubernetespreinstall--stop-if-swap-enabled"&gt;Erreur « kubernetes/preinstall : Stop if swap enabled »
&lt;/h2&gt;&lt;p&gt;Cette erreur est assez explicite : vous avez oublié de désactiver la swap sur un des nœuds.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;TASK [kubernetes/preinstall : Stop if swap enabled] *********************************************************************************************************
Monday 29 January 2018 15:06:44 +0100 (0:00:00.092) 0:00:23.562 ********
fatal: [kube01.zwindler.fr]: FAILED! =&amp;gt; {
&amp;#34;assertion&amp;#34;: &amp;#34;ansible_swaptotal_mb == 0&amp;#34;,
&amp;#34;changed&amp;#34;: false,
&amp;#34;evaluated_to&amp;#34;: false
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut facilement la désactiver avec la boucle Ansible suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible kube*.zwindler.fr -m shell -a &amp;#34;swapon -s&amp;#34;
kube01.zwindler.fr | SUCCESS | rc=0 &amp;gt;&amp;gt;
Nom de fichier Type Taille Utilisé Priorité
/dev/sda3 partition 1048572 25812 -1
[...]
ansible kube*.zwindler.fr -m shell -a &amp;#34;swapoff -a&amp;#34;
kube01.zwindler.fr | SUCCESS | rc=0 &amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mais il ne faudra pas oublier de passer &lt;strong&gt;aussi dans la fstab&lt;/strong&gt; pour que le changement soit permanent (attention le sed est un peu brut, je vous invite à vérifier ce qu’il fait) !&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible kube*.zwindler.fr -m shell -a &amp;#34;grep swap /etc/fstab&amp;#34;
kube01.zwindler.fr | SUCCESS | rc=0 &amp;gt;&amp;gt;
UUID=18eaabbe-aaaa-aaaa-aaaa-205cdaa94fe6 swap swap defaults 0 0
ansible kube*.zwindler.fr -m shell -a &amp;#34;sed -i.bak &amp;#39;/swap/d&amp;#39; /etc/fstab&amp;#34;
[WARNING]: Consider using template or lineinfile module rather than running sed
kube01.zwindler.fr | SUCCESS | rc=0 &amp;gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="too-many-nameservers"&gt;Too many nameservers
&lt;/h2&gt;&lt;p&gt;Typiquement c’est vraiment une erreur « à la c** ». Pas de bol pour moi, ça a planté directement avec l’erreur « Too many nameservers ». O-kay&amp;hellip;&lt;/p&gt;
&lt;p&gt;Effectivement, j’ai plusieurs serveurs DNS renseignés sur mon OS et Kubespray ne supporte pas plus de 2 out of the box.&lt;/p&gt;
&lt;p&gt;Bon pas de drame, l’utilitaire nous indique qu’on peut contourner cette « erreur » simplement en modifiant une variable :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can relax this check by set docker_dns_servers_strict=no and we will only use the first 3.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dans le fichier &lt;strong&gt;cluster.yml&lt;/strong&gt;, recherchez le block suivant et ajouter les lignes &lt;strong&gt;-vars&lt;/strong&gt; puis &lt;strong&gt;- docker_dns_servers_strict: no&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi cluster.yml
[...]
- hosts: k8s-cluster:etcd:calico-rr
any_errors_fatal: &amp;#34;{{ any_errors_fatal | default(true) }}&amp;#34;
vars:
- docker_dns_servers_strict: no
roles:
- { role: kubespray-defaults}
- { role: kernel-upgrade, tags: kernel-upgrade, when: kernel_upgrade is defined and kernel_upgrade }
- { role: kubernetes/preinstall, tags: preinstall }
- { role: docker, tags: docker }
- role: rkt
tags: rkt
when: &amp;#34;&amp;#39;rkt&amp;#39; in [etcd_deployment_type, kubelet_deployment_type, vault_deployment_type]&amp;#34;
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="proxy-pour-pull-les-images-docker"&gt;Proxy pour pull les images Docker
&lt;/h2&gt;&lt;p&gt;J’ai été pas mal embêté par le proxy lors de l’installation de mon cluster avec &lt;strong&gt;kubeadm&lt;/strong&gt;. Même si je n’ai pas été &lt;em&gt;bloqué&lt;/em&gt; avec Kubespray, j’ai quand même été un peu embêté ;-).&lt;/p&gt;
&lt;p&gt;Le contournement est simple, ici il suffit de configurer le proxy sur les démons docker de toutes les machines du cluster. Avec Ansible :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ansible -m shell master* worker* -a &amp;#39;cat &amp;gt; /etc/systemd/system/docker.service.d/http-proxy.conf &amp;lt;&amp;lt; EOF
[Service] Environment=&amp;#34;HTTP_PROXY=http://@IP-mon-super-proxy:8080/&amp;#34;&amp;#39;
ansible -m shell master* worker* -a &amp;#34;systemctl daemon-reload&amp;#34;
ansible -m shell master* worker* -a &amp;#34;systemctl restart docker&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Attention au &lt;em&gt;restart&lt;/em&gt; si vous avez des containers qui tournent&amp;hellip; mais je vais partir du principe que nous puisque vous êtes en train d’installer un cluster Kubernetes (depuis zéro).&lt;/p&gt;
&lt;h2 id="the-error-was-no-test-named-equalto"&gt;The error was: no test named ‘equalto’
&lt;/h2&gt;&lt;p&gt;Vous avez probablement oublié &lt;a class="link" href="https://blog.zwindler.fr/2017/12/05/installer-kubernetes-kubespray-ansible/" &gt;un des prérequis du tutoriel&lt;/a&gt; : la version de jinja n’est pas pas à jour&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install --upgrade Jinja2
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="messages-dinformation-à-chaque-exécution-de-kubectl"&gt;Messages d’information à chaque exécution de kubectl
&lt;/h2&gt;&lt;p&gt;J’ai aussi eu un petit bug (non bloquant) une fois l’installation terminée. A chaque exécution de kubectl, j’avais les messages suivants qui s’affichaient dans le terminal.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;kubectl describe service kubernetes-dashboard --namespace=kube-system
2017-08-24 10:20:09.035979 I | proto: duplicate proto type registered: google.protobuf.Any
2017-08-24 10:20:09.036050 I | proto: duplicate proto type registered: google.protobuf.Duration
2017-08-24 10:20:09.036066 I | proto: duplicate proto type registered: google.protobuf.Timestamp
[…]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une « issue » a été remontée sur &lt;a class="link" href="https://github.com/Azure/acs-engine/issues/1083" target="_blank" rel="noopener"
&gt;le github de la version de Kubernetes déployée par Azure, à savoir acs-engine&lt;/a&gt;, mais est applicable dans notre cas aussi. A priori c’est une version de &lt;strong&gt;kubectl&lt;/strong&gt; qui a le problème.&lt;/p&gt;
&lt;p&gt;Le problème devrait être résolu avec la version qu’on trouve sur les repository.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mv /usr/local/bin/kubectl /usr/local/bin/kubectl.old
yum install -y kubectl
ln -s /usr/bin/kubectl /usr/local/bin/kubectl
&lt;/code&gt;&lt;/pre&gt;</description></item></channel></rss>