Helm:错误:找不到可用的版本名称

问题描述 投票:30回答:8

我在Helm遇到了一些错误,我无法在其他地方找到解释。这两个错误如下。

Error: no available release name found
Error: the server does not allow access to the requested resource (get configmaps)

这两个错误的进一步细节在下面的代码块中。

我在Ubuntu 16.04上安装了Kubernetes集群。我有一个Master(K8SMST01)和两个节点(K8SN01和K8SN02)。

这是使用kubeadm使用Weave网络创建的1.6+。

就部署,服务,Pod等而言,一切似乎运行良好...... DNS似乎工作正常,这意味着pod可以使用DNS名称(myservicename.default)访问服务。

使用“helm create”和“helm search”工作,但与分蘖部署交互似乎不起作用。根据Helm安装文档安装并运行Tiller。

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)

以下是正在运行的播客:

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
kubernetes kubernetes-helm
8个回答
23
投票

我认为这是一个RBAC问题。似乎掌舵还没有为1.6.1的RBAC做好准备。

在Helm的Github上有一个问题可以解决。

https://github.com/kubernetes/helm/issues/2224

“首次使用kubeadm v1.6.1安装集群时,初始化默认设置为RBAC控制访问,这会影响Tiller进行安装所需的权限,扫描已安装的组件等等.helm init可以正常工作但是掌舵列表,掌舵安装等都不起作用,引用了一些遗漏的许可或其他许可。“

一项临时工作建议:

“我们”使用命令kubectl create clusterrolebinding permissive-binding --clusterrole = cluster-admin --user = admin --user = kubelet --group = system:serviceaccounts;“禁用”RBAC

但我不能说它的有效性。好消息是,这是一个已知问题,正在努力解决这个问题。希望这可以帮助。


56
投票

由kujenga从github问题给出的解决方案,它没有任何其他变化。

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"}}}}'

9
投票

我对CentOS 7上的kubeadm设置有同样的问题。

当你“helm init”并且默认的没有从配置映射中读取的权限时,Helm不会创建服务帐户 - 因此它将无法运行检查以查看它想要的部署名称使用是独一无二的

这让我超越了它:

kubectl create clusterrolebinding add-on-cluster-admin \
    --clusterrole=cluster-admin \
    --serviceaccount=kube-system:default

但是,这给了默认帐户吨的权力,我只是这样做,所以我可以继续我的工作。 Helm需要将自己的服务帐户创建添加到“helm init”代码中。


3
投票

kubernetes中的所有插件都使用“默认”服务帐户。所以Helm也运行“默认”服务帐户。您应该为它提供权限。为其分配角色绑定。

对于只读权限:

kubectl create rolebinding default-view --clusterrole=view \ --serviceaccount=kube-system:default --namespace=kube-system

对于管理员访问:例如:安装包。

kubectl create clusterrolebinding add-on-cluster-admin \ --clusterrole=cluster-admin \ --serviceaccount=kube-system:default

您还可以使用以下命令在不同的命名空间中安装分蘖服务器。

  1. 首先创建命名空间
  2. 为命名空间创建serviceaccount
  3. 使用以下命令在此相应的命名空间中安装分蘖。

helm init --tiller-namespace test-namespace


3
投票

这个解决方案对我有用: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

但在那之后,情况发生了变化;我必须在我的kubectl命令中添加--insecure-skip-tls-verify = true标志!知道我正在与gcloud容器集群进行交互,我不知道如何解决这个问题。


2
投票

根据https://github.com/kubernetes/helm/issues/2224#issuecomment-356344286,以下命令也为我解决了错误:

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"}}}}'

2
投票

对于https://github.com/kubernetes/helm/issues/3055

helm init --service-account default

当RBAC(serviceaccount)命令没有时,这对我有用。


0
投票

这是一个RBAC问题。您需要拥有具有集群管理员角色的服务帐户。并且您应该在HELM初始化期间传递此服务帐户。

例如,如果您创建了名为tiller的服务帐户,则heml命令将如下所示。

helm init --service-account=tiller

我按照这个博客来解决这个问题。 https://scriptcrunch.com/helm-error-no-available-release/

© www.soinside.com 2019 - 2024. All rights reserved.