Je reçois quelques erreurs avec Helm pour lesquelles je ne trouve pas d’explications ailleurs. Les deux erreurs sont ci-dessous.
Error: no available release name found
Error: the server does not allow access to the requested resource (get configmaps)
Vous trouverez plus de détails sur les deux erreurs dans le bloc de code ci-dessous.
J'ai installé un cluster Kubernetes sur Ubuntu 16.04. J'ai un maître (K8SMST01) et deux nœuds (K8SN01 et K8SN02).
Cela a été créé en utilisant kubeadm en utilisant le réseau Weave pour 1.6+.
Tout semble fonctionner parfaitement en ce qui concerne les déploiements, les services, les pods, etc. Le DNS semble fonctionner correctement, ce qui signifie que les pods peuvent accéder aux services en utilisant le nom DNS (myservicename.default).
L'utilisation de "helm create" et de "Helm search" fonctionne, mais interagir avec le déploiement du motoculteur ne semble pas fonctionner. Le motoculteur est installé et fonctionne conformément à la documentation d'installation de Helm.
root@K8SMST01:/home/blah/charts# helm version
Client: &version.Version{SemVer:"v2.3.0",
GitCommit:"d83c245fc324117885ed83afc90ac74afed271b4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.3.0", GitCommit:"d83c245fc324117885ed83afc90ac74afed271b4", GitTreeState:"clean"}
root@K8SMST01:/home/blah/charts# helm install ./mychart
Error: no available release name found
root@K8SMST01:/home/blah/charts# helm ls
Error: the server does not allow access to the requested resource (get configmaps)
Voici les pods en cours d'exécution:
root@K8SMST01:/home/blah/charts# kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
etcd-k8smst01 1/1 Running 4 1d 10.139.75.19 k8smst01
kube-apiserver-k8smst01 1/1 Running 3 19h 10.139.75.19 k8smst01
kube-controller-manager-k8smst01 1/1 Running 2 1d 10.139.75.19 k8smst01
kube-dns-3913472980-dm661 3/3 Running 6 1d 10.32.0.2 k8smst01
kube-proxy-56nzd 1/1 Running 2 1d 10.139.75.19 k8smst01
kube-proxy-7hflb 1/1 Running 1 1d 10.139.75.20 k8sn01
kube-proxy-nbc4c 1/1 Running 1 1d 10.139.75.21 k8sn02
kube-scheduler-k8smst01 1/1 Running 3 1d 10.139.75.19 k8smst01
tiller-deploy-1172528075-x3d82 1/1 Running 0 22m 10.44.0.3 k8sn01
weave-net-45335 2/2 Running 2 1d 10.139.75.21 k8sn02
weave-net-7j45p 2/2 Running 2 1d 10.139.75.20 k8sn01
weave-net-h279l 2/2 Running 5 1d 10.139.75.19 k8smst01
Je pense que c'est un problème RBAC. Il semble que la barre ne soit pas prête pour le RBAC 1.6.1.
Il y a un problème en suspens dans Helm's Github.
https://github.com/kubernetes/helm/issues/2224
"Lors de la première installation d’un cluster à l’aide de kubeadm v1.6.1, l’initialisation définit par défaut la configuration de l’accès contrôlé par RBAC, qui dérange les autorisations requises par Tiller pour effectuer des installations, rechercher les composants installés, etc." helm init fonctionne sans problème , mais la liste de barre, l’installation de barre, etc. ne fonctionnent pas, citant une permission manquante ou une autre. "
Un travail temporaire a été suggéré:
"Nous" désactivons "RBAC à l'aide de la commande kubectl créer clusterrolebinding permissive-binding --clusterrole = admin-cluster - user = admin --user - kubelet --group = system: serviceaccounts;"
Mais je ne peux pas parler pour sa validité. La bonne nouvelle est qu’il s’agit d’un problème connu et que des travaux sont en cours pour le résoudre. J'espère que cela t'aides.
La solution donnée par kujenga du numéro de GitHub a fonctionné sans autre modification:
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"}}}}'
J'ai eu le même problème avec la configuration de kubeadm sur CentOS 7.
Helm ne crée pas de compte de service lorsque vous "pilotez init" et que le compte par défaut ne dispose pas des autorisations nécessaires pour lire les configmaps - il ne pourra donc pas exécuter de contrôle pour voir si le nom du déploiement qu'il souhaite utiliser. l'utilisation est unique.
Cela m'a permis de le dépasser:
kubectl create clusterrolebinding add-on-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default
Mais cela revient à donner beaucoup d’énergie au compte par défaut. Je l’ai fait pour que je puisse continuer à travailler. Helm doit ajouter la création de son propre compte de service au code "helm init".
Tous les addons des kubernetes utilisent le compte de service "par défaut". Helm fonctionne également avec un compte de service "par défaut". Vous devez lui donner des autorisations. Attribuez-lui des liaisons de rôle.
Pour les autorisations en lecture seule:
kubectl create rolebinding default-view --clusterrole=view \ --serviceaccount=kube-system:default --namespace=kube-system
Pour un accès administrateur: par exemple: pour installer des packages.
kubectl create clusterrolebinding add-on-cluster-admin \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:default
Vous pouvez également installer le serveur de barre dans un espace de noms différent en utilisant la commande ci-dessous.
helm init --tiller-namespace test-namespace
Cette solution a fonctionné pour moi: https://github.com/helm/helm/issues/3055#issuecomment-397296485
$ kubectl create serviceaccount --namespace kube-system tiller
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
$ helm init --service-account tiller --upgrade
$ helm update repo
$ helm install stable/redis --version 3.3.5
Mais après cela, quelque chose a changé. Je dois ajouter - insecure-skip-tls-verify = true indicateur à mes commandes kubectl! Je ne sais pas comment résoudre ce problème, sachant que j'interagis avec un cluster de conteneurs gcloud.
Pour https://github.com/kubernetes/helm/issues/2224#issuecomment-356344286 , les commandes suivantes ont également résolu l'erreur:
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"}}}}'
Per https://github.com/kubernetes/helm/issues/3055
helm init --service-account default
Cela a fonctionné pour moi lorsque les commandes RBAC (serviceaccount) ne fonctionnaient pas.
C'est un problème RBAC. Vous devez avoir un compte de service avec un rôle administrateur de cluster. Et vous devez passer ce compte de service lors de l'initialisation de HELM.
Par exemple, si vous avez créé un compte de service avec le nom tiller, votre commande heml ressemblerait à ce qui suit.
helm init --service-account=tiller
J'ai suivi ce blog pour résoudre ce problème. https://scriptcrunch.com/helm-error-no-available-release/