2 votes

Helm sous MicroK8S donnant : "Erreur : impossible de trouver un pod Tiller prêt"

J'ai besoin d'apprendre sur Kubernetes, Helm, conjure-up et j'ai également besoin d'installer Eclipe-Che, et pour cela j'ai fait :
Sur une nouvelle installation d'[Ubuntu 18.04.2 Server X64] s'exécutant en tant que machine virtuelle à l'intérieur de vmware workstation, j'installe MicroK8S et Helm.

C'est sur une nouvelle installation d'Ubuntu et le seul bloc de script que je colle dans le terminal est :

sudo apt-get update
sudo apt-get upgrade
sudo snap install microk8s --classic
microk8s.kubectl version
alias kubectl='microk8s.kubectl'
alias docker='microk8s.docker'
kubectl describe nodes | egrep 'Name:|Roles:|Taints:'
kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl get nodes
sudo snap install helm --classic
kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller-cluster-rule \
            --clusterrole=cluster-admin \
            --serviceaccount=kube-system:tiller
helm init --service-account=tiller
helm version
helm ls
kubectl get po -n kube-system 

Le bloc de script ci-dessus avec chaque sortie sur le terminal est :

monUtilisateur@monServeur:~$ sudo snap install microk8s --classic
microk8s v1.13.4 de Canonical installé
[1]+  Done                    sleep 10

monUtilisateur@monServeur:~$ microk8s.kubectl version
Version client: version.Info { 
    Majeur:"1", Mineur:"13", GitVersion:"v1.13.4", 
    GitCommit:"c27b913frrr1a6c480c287433a087698aa92f0b1", 
    GitTreeState:"clean", Date de construction:"2019-02-28T13:37:52Z", 
    GoVersion:"go1.11.5", Compilateur:"gc", Plateforme:"linux/amd64"}
    La connexion au serveur 127.0.0.1:8080 a été 
      refusée - avez-vous spécifié le bon hôte ou port ?

monUtilisateur@monServeur:~$ alias kubectl='microk8s.kubectl'

monUtilisateur@monServeur:~$ alias docker='microk8s.docker'

monUtilisateur@monServeur:~$ kubectl describe nodes | egrep 'Name:|Roles:|Taints:'
La connexion au serveur 127.0.0.1:8080 a été 
     refusée - avez-vous spécifié le bon hôte ou port ?

monUtilisateur@monServeur:~$ kubectl taint nodes --all \
         node-role.kubernetes.io/master-
La connexion au serveur 127.0.0.1:8080 a été 
     refusée - avez-vous spécifié le bon hôte ou port ?

monUtilisateur@monServeur:~$ kubectl get nodes
La connexion au serveur 127.0.0.1:8080 a été 
        refusée - avez-vous spécifié le bon hôte ou port ?

monUtilisateur@monServeur:~$ sudo snap install helm --classic
helm 2.13.0 de Snapcrafters installé

monUtilisateur@monServeur:~$ kubectl create serviceaccount tiller \
              --namespace kube-system
Erreur du serveur (NotFound) : l'espace de noms "kube-system" introuvable

monUtilisateur@monServeur:~$ kubectl create clusterrolebinding \
             tiller-cluster-rule \
             --clusterrole=cluster-admin \
             --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule créé

monUtilisateur@monServeur:~$ helm init --service-account=tiller
Création de /home/monUtilisateur/.helm
Création de /home/monUtilisateur/.helm/repository
Création de /home/monUtilisateur/.helm/repository/cache
Création de /home/monUtilisateur/.helm/repository/local
Création de /home/monUtilisateur/.helm/plugins
Création de /home/monUtilisateur/.helm/starters
Création de /home/monUtilisateur/.helm/cache/archive
Création de /home/monUtilisateur/.helm/repository/repositories.yaml
Ajout du repo stable avec l'URL : 
   https://kubernetes-charts.storage.googleapis.com
Ajout du repo local avec l'URL : http://127.0.0.1:8879/charts
$HELM_HOME a été configuré à /home/monUtilisateur/.helm
Tiller (le composant côté serveur de Helm) a été 
        installé dans votre cluster Kubernetes
Veuillez noter : par défaut, Tiller est déployé avec une 
        politique 'autoriser les utilisateurs non authentifiés' non sécurisée
Pour éviter cela, exécutez `helm init` avec 
        le drapeau --tiller-tls-verify
Pour plus d'informations sur 
   sécuriser votre installation voir : 
   https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming !

monUtilisateur@monServeur:~$ helm version
Client: &version.Version { 
   SemVer:"v2.13.0",
   GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6", 
   GitTreeState:"clean"}
Erreur : impossible de trouver tiller

monUtilisateur@monServeur:~$ helm ls
Erreur : impossible de trouver tiller

monUtilisateur@monServeur:~$ kubectl get po -n kube-system
Aucune ressource trouvée

Comme vous pouvez le voir, il refuse également la connexion sur 127.0.0.1:8080 et avec l'aide de @aurelius, j'ai amélioré le script ci-dessus mais comme vous pouvez le voir, il donne toujours la même erreur :

Erreur : impossible de trouver un pod tiller prêt

Et j'ai fait la correction décrite dans stackoverflow comme vous pouvez le voir ci-dessus.

Il y a un problème ouvert sur Github pointant vers la correction ci-dessus et le fermant comme résolu, mais cela ne résout pas le problème.

Il y en a un qui dit que le problème vient de la version snap de LXD qui ne s'intègre pas avec conjure-up, il dit d'installer LXD à partir des paquets apt et son explication complète est ici : https://askubuntu.com/a/959771.
Je vais essayer de voir si cela fonctionne aussi et je reviendrai ici.

2voto

Tout ce dont vous avez besoin est :

helm repo mise à jour

L'ensemble complet des commandes ici :

# Assurez-vous qu'il y a de l'espace disque pour installer tout
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo dpkg-reconfigure tzdata
sudo snap remove lxc
sudo snap remove lxd
sudo apt-get remove --purge lxc
sudo apt-get remove --purge lxd
sudo apt-get autoremove
# peut générer une erreur, assurez-vous de purger/désinstaller tous les éléments ci-dessus
sudo apt-add-repository ppa:ubuntu-lxc/stable
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install tmux lxc lxd zfsutils-linux
df -h => 84% libre, 32G
{ SNAPSHOT - beforeLxdInit }
lxd init
    ipv6:none
ifconfig | grep flags
sudo sysctl -w net.ipv6.conf.ens33.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lxcbr0.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lxdbr0.disable_ipv6=1
time sudo snap install conjure-up --classic
{ SNAPSHOT - beforeConjureUp }
conjure-up => CHOIX = { microk8s }
alias kubectl='microk8s.kubectl'
#------------------------------------
# pas nécessaire d'activer tous, mais c'est un test
microk8s.enable storage
microk8s.enable registry
microk8s.enable dns dashboard ingress istio metrics-server prometheus fluentd jaeger
#------------------------------------
time sudo snap install helm --classic
helm init
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
helm search
# Avant de mettre à jour le repo, cela génère une erreur :
helm version
    Erreur : impossible de trouver un pod tiller prêt
# Ensuite, mettez à jour le repo :
helm repo mise à jour
# Après la mise à jour du repo, tout était OK :
helm version
    Client : &version.Version { 
            SemVer:"v2.13.0", 
            GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6",
            GitTreeState:"clean"
        }
    Serveur : &version.Version {
            SemVer:"v2.13.0",
            GitCommit:"79d07943b03aea2b76c12644b4b54733bc5958d6",
            GitTreeState:"clean"
        }
#------------------------------------
helm install stable/mysql
df -h | grep sda {
    Système de fichiers :/dev/sda2,
    Taille :40G,
    Utilisé :12G,
    Disponible :26G,
    Utilisation% :31%
    Monté sur :/
    }
{ SNAPSHOT - afterFixErrorBeforeEclipseChe }
#------------------------------------
========================================================================================================================
# On dirait qu'il a ajouté un OverlayFS en désordre
df -h
    Système de fichiers Taille Utilisé Disponible Utilisation Monté sur
    udev 1.9G  0  1.9G 0%  /dev
    tmpfs 393M  2.5M  390M  1%  /run
    /dev/sda2  40G  12G  26G  31%  /
    tmpfs 2.0G  0  2.0G 0% /dev/shm
    tmpfs 5.0M  0  5.0M 0% /run/lock
    tmpfs 2.0G  0  2.0G 0% /sys/fs/cgroup
    /dev/loop0  91M  91M 0 100% /snap/core/6350
    tmpfs 393M  0  393M 0% /run/user/1000
    tmpfs 100K  0  100K 0% /var/lib/lxd/shmounts
    tmpfs 100K  0  100K 0% /var/lib/lxd/devlxd
    /dev/loop1  110M  110M 0 100% /snap/conjure-up/1045
    /dev/loop2  205M  205M 0 100% /snap/microk8s/492
    shm  64M  0  64M 0% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  0  64M 0% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  0  64M 0% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  0  64M 0% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  0  64M 0% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  4.7M  60M 8% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
    shm  64M  4.7M  60M 8% /var/snap/microk8s/common/run/containerd/io.containerd.grpc.v1.cri/sandboxes$
    overlay  40G  12G  26G 31% /var/snap/microk8s/common/run/containerd/io.containerd.runtime.v1.linux/k8s.$
========================================================================================================================

kubectl run eclipseche --image=eclipse/che-server:nightly
    deployment.apps/eclipseche2 créé
    ------------------------------------
    # Impossible de trouver un moyen de suivre le conseil ci-dessous, impossible de trouver la syntaxe équivalente
    kubectl run --generator=deployment/apps.v1
     est OBSOLÈTE et sera retiré dans une future version.
    Utilisez
    kubectl run --generator=run-pod/v1
    ou
    kubectl create à la place

kubectl get pods
    NOM                                      PRÊT    ÉTAT    REDÉMARRAGES   ÂGE
    brown-hyena-mysql-75f584d69d-rbfv4        1/1     En cours d'exécution   0          72m
    default-http-backend-5769f6bc66-z7jb4     1/1     En cours d'exécution   0          91m
    eclipseche-589954dc99-d4bxm               1/1     En cours d'exécution   0          6m13s
    nginx-ingress-microk8s-controller-p88nm   1/1     En cours d'exécution   0          91m

kubectl get svc
    NOM                   TYPE        CLUSTER-IP      IP EXTERNE    PORT(S)    ÂGE
    brown-hyena-mysql      ClusterIP   10.152.184.38   Pas de IP externe        3306/TCP   74m
    default-http-backend   ClusterIP   10.152.184.99   Pas de IP externe         80/TCP     93m
    kubernetes             ClusterIP   10.152.184.1    Pas de IP externe        443/TCP    99m

microk8s.kubectl describe pod eclipseche-589954dc99-d4bxm | grep "IP:"
    IP:  10.1.1.54

sudo apt-get install net-tools nmap

nmap 10.1.1.54 | grep open
    8080/tcp  ouvert  http-proxy

1voto

Yuschick Points 237

Essayez ceci ci-dessous :

$ microk8s.enable helm

$ microk8s.helm init --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | microk8s.kubectl apply -f -

0voto

MadSkunk Points 747

L'erreur se produit car vous n'avez pas de compte de service pour Tiller. Vous pouvez y parvenir en exécutant :

kubectl create serviceaccount tiller --namespace kube-system

kubectl create clusterrolebinding tiller-cluster-rule \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:tiller

helm init --service-account=tiller

Vous pouvez trouver plus d'informations sur Tiller ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X