头盔:客户端和服务器之间的版本不兼容


73

运行后helm list,出现以下错误:

错误:版本不兼容的客户端[v2.9.0]服务器[v2.8.2]

我做了一个头盔初始化,以安装兼容的分till版本“警告:群集中已经安装了Tiller。(使用--client-only禁止显示此消息,或使用--upgrade将Tiller升级到当前版本。”)。

有指针吗?


在错误中:客户端代表头盔CLI版本,服务器代表分er版本,并且您正在使用两个不同的版本。我建议您使用helm3,从中删除分till并在helm CLI中进行处理。
Mayur

Answers:


79

要将分till版本升级到客户端的相同版本,只需运行 helm init --upgrade


14
如何降级客户掌舵版本?
很幸运,

19
人们只是在使用客户端时自动更新服务器版本?似乎非常不负责任
Damien Roche

9
确实不应将此视为正确答案。下面有两个好的解决方案。
Scott Boring

3
仅仅为了满足客户软件而升级生产软件是不明智的。
Stefan Lasiewski '19

您所需要的只是按照第二个答案中所述降级helm客户端,以免造成任何混乱。
redzack'5

84

像OP一样,我遇到了以下错误:

$ helm list
Error: incompatible versions client[v2.10.0] server[v2.9.1]

对我来说,更新服务器不是一个选择,因此我需要准备安装客户端的早期版本。我以前没有安装过client [v2.9.1](或任何以前的客户端版本),因此不能这样做brew switch kubernetes-helm 2.9.1。我最终不得不遵循这个SO答案中的步骤:https : //stackoverflow.com/a/17757092/2356383

基本上说

现在有了正确的kubernetes-helm.rb文件的URL,我运行以下命令:

$ brew unlink kubernetes-helm
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/78d64252f30a12b6f4b3ce29686ab5e262eea812/Formula/kubernetes-helm.rb
$ brew switch kubernetes-helm 2.9.1

希望这对某人有帮助。


3
这是一个更好的答案,因为它不会更改服务器版本,但会相应地更改您的本地版本
LeDerp

当前,我遇到的问题是,在更改头盔客户端版本后,制表符补全被破坏了。您必须使用重新加载helm completion <SHELL>github.com/helm/helm/blob/master/docs/helm/helm_completion.md
Florian Rusch,

1
此解决方案不再起作用:“无效用法:不支持从GitHub提交URL安装kubernetes-helm!'brew extract kubernetes-helm'改为在GitHub上稳定点击。(UsageError))”。不过,下面的helm安装程序脚本仍然有效。
sigma1510

30

如果不能更改服务器版本,则另一种选择是使用 helm安装程序脚本

该脚本可让您选择特定的版本,例如 ./get_helm.sh -v v2.13.1


1
不错的简单解决方案,可以正常工作,不需要更改服务器版本。这应该是公认的答案。
19:15投票

10

通过Docker使用不同版本的另一种方法。

https://hub.docker.com/r/alpine/helm

示例:列出已安装的头盔包

docker run -it --rm \
    -v ~/.kube/config:/root/.kube/config \
    -v ~/.helm:/root/.helm alpine/helm:2.9.1 \
    list

这是一个很长的命令;但是可以用别名来缩短

alias helm_2_9_1="docker run -ti --rm \
    -v $(pwd):/apps -v ~/.kube/config:/root/.kube/config \
    -v ~/.helm:/root/.helm alpine/helm:2.9.1"

然后命令是

helm_2_9_1 list

别名应放在单引号中,因此$(pwd)是在执行命令时评估的,而不是在创建别名时评估的。

最佳答案,如果您必须使用旧版本的头盔,并且不想在工作站上安装太多东西!
webofmars

如果您要连接到AWS上的Pod,您知道如何使它工作吗?
trafalmadorian

7

该答案适用于想要选择(降级)掌舵客户端版本的用户,并且brew安装不起作用。您可以从此处手动安装二进制文件。

例:

  1. 您可以取消当前头盔的链接

    brew unlink kubernetes-helm
    
  2. github helm中选择并下载所需的helm版本------ v2.8.2

  3. 解压缩文件并将helm unix可执行二进制文件放入/ usr / local / bin目录

    转到您刚刚下载的目录

    cd /Users/your_name/Downloads
    

    解压缩文件

    gunzip -c helm-v2.8.2-darwin-amd64.tar.gz | tar xopf -
    

    复制到bin目录

    cp darwin-amd64/helm /usr/local/bin
    
  4. 现在您将看到想要的头盔的正确版本

    helm version
    

1

对于那些使用snap安装头盔客户端的人,要将其降级/升级到特定版本,您可以简单地:

  • 卸载它: snap remove helm
  • 检查可用版本: snap info helm
  • 安装您想要的一个: snap install helm --channel=X.X/stable --classic

1

这可能不是最高级的答案...但是我的团队运行的是已经安装了分er的kubernetes集群。设置新笔记本电脑时,我希望我的头盔与耕作机版本匹配,因此我发现它是这样的:

TILLER_POD=`kubectl get pods -n kube-system | grep tiller | awk '{print $1}'`
kubectl exec -n kube-system $TILLER_POD -- /tiller -version

然后,我只使用了该发行版中的常规头盔安装说明(在Linux上,它基本上只是卷曲并解压缩到/ usr / local / bin)。


1

如果您是Windows用户并通过choco安装了helm,请首先转到其文件夹(我的文件夹为C:\ ProgramData \ chocolatey),然后从bin文件夹中删除helm.exe。

然后,应下载相应的heml.exe文件。通过使用以上注释,确定从中下载exe的位置。例如,我使用了该路径:https : //get.helm.sh/helm-v2.14.3-windows-amd64.tar.gz

最后,从tar中提取helm.exe,并将其移入choco bin文件夹中。当然,您可以直接将此exe添加到路径中。


0

我遇到了同样的问题,但就我而言,我只想将Tiller升级到特定版本(因为helm客户端正在远程运行)。

因此,错误是:

Error: UPGRADE FAILED: incompatible versions client[v2.11.0] server[v2.9.1]

根据我运行的文档:

$ kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=gcr.io/kubernetes-helm/tiller:v2.11.0

deployment.extensions/tiller-deploy image updated

文档参考:

https://helm.sh/docs/install/#upgrading-tiller

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.