Kubernetes 舵手:错误:找不到可用的版本名称

Kubernetes 舵手:错误:找不到可用的版本名称,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我在赫尔姆身上犯了几个错误,我在别处找不到解释。下面是两个错误 Error: no available release name found Error: the server does not allow access to the requested resource (get configmaps) 这两个错误的更多详细信息在下面的代码块中 我已经在Ubuntu 16.04上安装了Kubernetes群集。我有一个主节点(K8SMST01)和两个节点(K8SN01和K8SN02) 这是使

我在赫尔姆身上犯了几个错误,我在别处找不到解释。下面是两个错误

Error: no available release name found
Error: the server does not allow access to the requested resource (get configmaps)
这两个错误的更多详细信息在下面的代码块中

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

这是使用kubeadm创建的,使用Weave network for 1.6+

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

使用“头盔创建”和“头盔搜索”工作,但和舵柄部署交互似乎不起作用。舵杆的安装和运行符合舵杆安装文件

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

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

在Helm的Github上有一个问题有待解决

“首次使用kubeadm v1.6.1安装群集时, 初始化默认为设置RBAC控制的访问, 这会干扰Tiller进行安装所需的权限, 扫描已安装的组件,以此类推。helm init在没有 问题,但舵列表,舵安装,等等都不工作,引用 缺少许可或其他。”

建议采取临时措施:

我们使用命令kubectl create clusterrolebinding“禁用”RBAC 许可绑定--clusterrole=cluster admin--user=admin --user=kubelet--group=system:serviceaccounts


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

我在CentOS 7上的kubeadm设置也遇到了同样的问题

当您使用“Helm init”时,Helm不会创建服务帐户,并且默认帐户没有从configmaps读取的权限-因此它将无法运行检查以查看它想要使用的部署名称是否唯一

这让我度过了难关:

kubectl create clusterrolebinding add-on-cluster-admin \
    --clusterrole=cluster-admin \
    --serviceaccount=kube-system:default
但这给了默认帐户大量的权力,我这样做只是为了继续我的工作。Helm需要将创建自己的服务帐户添加到“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"}}}}'
根据,以下命令也为我解决了错误:

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 init——服务帐户默认值


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

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

对于只读权限:

用于管理员访问:例如:安装软件包。

您还可以使用以下命令在不同的命名空间中安装tiller server

  • 首先创建namesapce
  • 为命名空间创建serviceaccount
  • 使用下面的命令在相应的名称空间中安装舵柄
  • helm init—tiller命名空间测试命名空间


    这个解决方案对我有效:


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

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

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

    helm init --service-account=tiller
    

    我跟随这个博客来解决这个问题

    检查舵柄容器的日志:

    kubectl logs tiller-deploy-XXXX --namespace=kube-system
    
    如果您发现类似的内容:

    Error: 'dial tcp 10.44.0.16:3000: connect: no route to host'
    
    那么,如所述的防火墙/iptables解决方案可能是删除一些规则:

    sudo iptables -D  INPUT -j REJECT --reject-with icmp-host-prohibited
    sudo iptables -D  FORWARD -j REJECT --reject-with icmp-host-prohibited
    

    @帕特里克洪德,我不这么认为。我认为赫尔姆的问题在这里是有效的。Kubernetes社区使用堆栈溢出。谢谢!这似乎奏效了。由于这是一个实验性的“沙箱”K8S集群,我不太担心其影响。只是需要能够和赫尔姆一起玩。我投了更高的票,但我太新了,无法在分数中反映出来:(我很高兴我能帮上忙,祝你掌舵愉快!我认为,尽管你太新了,无法投更高的票,但你能够将此标记为你问题的正确答案,如果你能够做到这一点,我将不胜感激。
    kubectl logs tiller-deploy-XXXX --namespace=kube-system
    
    Error: 'dial tcp 10.44.0.16:3000: connect: no route to host'
    
    sudo iptables -D  INPUT -j REJECT --reject-with icmp-host-prohibited
    sudo iptables -D  FORWARD -j REJECT --reject-with icmp-host-prohibited