Helm 错误:错误:服务器已要求客户端提供凭据

Posted

技术标签:

【中文标题】Helm 错误:错误:服务器已要求客户端提供凭据【英文标题】:Helm error : Error: the server has asked for the client to provide credentials 【发布时间】:2019-07-08 01:49:39 【问题描述】:

我已经安装了 Rancher 2 并创建了一个内部 vm 的 kubernetes 集群(没有 AWS / gcloud)。

集群已启动并运行。

我登录了其中一个节点。

1) 安装 Kubectl 并执行 kubectl cluster-info 。它正确地列出了我的集群信息。

2) 已安装的 helm

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh
chmod 700 get_helm.sh
./get_helm.sh

root@lnmymachine # helm version
Client: &version.VersionSemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean"
Server: &version.VersionSemVer:"v2.12.3", GitCommit:"eecf22f77df5f65c823aacd2dbd30ae6c65f186e", GitTreeState:"clean"

3) 配置 helm 引用 Rancher Helm Init

kubectl -n kube-system create serviceaccount tiller

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

helm init --service-account tiller

尝试通过 helm 安装 Jenkins

root@lnmymachine # helm ls
Error: Unauthorized
root@lnmymachine # helm install --name initial stable/jenkins
Error: the server has asked for the client to provide credentials

浏览过类似的问题,其中很少是由多个集群引起的。我只有一个集群。 kubectl 正确提供所有信息。

知道发生了什么。

【问题讨论】:

好像有错误`--clusterrole=cluster-admin `missing "=".能否检查一下 ServiceAccount、ClusterRoleBinding 和 ClusterRole 是否创建正确? 太棒了。它奏效了。我认为你应该发表评论作为答案。 我希望你的答案很好@VVP 偶尔在使用 sudo 运行 helm 来调试提到的错误时,我会看到:错误:无法下载 [图表](提示:运行 helm repo update 可能会有所帮助)。 i> 不知道为什么,但也许这会帮助其他人调试。 【参考方案1】:

创建ClusterRoleBinding时似乎出错了:

你应该有--clusterrole=cluster-admin,而不是--clusterrole cluster-admin

您可以通过验证是否正确创建了 ServiceAccount、ClustrerRoleBinding 来检查是否是这种情况。

kubectl describe -n kube-system sa tiller

kubectl describe clusterrolebinding tiller

好像他们已经在Rancher Helm Init 页面上修复了这个问题。

【讨论】:

谢谢。我在 Rancher 页面中提交了修复并被接受。 希望这能解决这个问题,因为它是选定的答案,而且我也在使用 K3s (v0.7.0)。但不幸的是,我继续看到 OP 中描述的相同“提供凭据”消息。【参考方案2】:

我遇到了同样的问题,但以下步骤对我有用。

root@node1:~# helm install --name prom-operator stable/prometheus-operator --namespace monitoring
Error: the server has asked for the client to provide credentials

第 1 步:删除服务帐号

root@node1:~# kubectl delete serviceaccount --namespace kube-system tiller
serviceaccount "tiller" deleted

Step2:删除集群角色绑定

root@node1:~# kubectl delete clusterrolebinding tiller-cluster-rule 
clusterrolebinding.rbac.authorization.k8s.io "tiller-cluster-rule" deleted

Step3:移除 helm 目录

root@node1:~# rm -rf .helm/

第四步:再次创建服务帐号。

root@node1:~# kubectl create serviceaccount tiller --namespace kube-system
serviceaccount/tiller created

第 5 步:创建集群角色绑定

root@node1:~# kubectl create clusterrolebinding tiller-cluster-rule \
>  --clusterrole=cluster-admin \
>  --serviceaccount=kube-system:tiller
clusterrolebinding.rbac.authorization.k8s.io/tiller-cluster-rule created

Step6:运行 helm init 命令

helm init --service-account=tiller

Creating /root/.helm 
Creating /root/.helm/repository 
Creating /root/.helm/repository/cache 
Creating /root/.helm/repository/local 
Creating /root/.helm/plugins 
Creating /root/.helm/starters 
Creating /root/.helm/cache/archive 
Creating /root/.helm/repository/repositories.yaml 
Adding stable repo with URL: https://kubernetes-charts.storage.googleapis.com 
Adding local repo with URL: http://127.0.0.1:8879/charts 
$HELM_HOME has been configured at /root/.helm.
Warning: Tiller is already installed in the cluster.
(Use --client-only to suppress this message, or --upgrade to upgrade Tiller to the current version.)

第 7 步:删除 tiller-deploy-xxx pod

kubectl delete pod -n kube-system tiller-deploy

pod "tiller-deploy-5d58456765-xlns2" deleted

等到它重新创建。

第 8 步:安装 helm 图表。

helm install --name prom-operator stable/prometheus-operator --namespace monitoring

【讨论】:

以上是关于Helm 错误:错误:服务器已要求客户端提供凭据的主要内容,如果未能解决你的问题,请参考以下文章

Spring security 自定义身份验证提供程序总是导致错误的客户端凭据

远程桌面连接服务器身份验证错误要求的函数不受支持

提供的身份验证凭据格式错误或已过期

远程桌面连接服务器身份验证错误要求的函数不受支持

flutter_facebook_auth:提供的身份验证凭据格式错误或已过期

INVALID_IDP_RESPONSE:提供的身份验证凭据格式错误或已过期