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

在我运行 helm list之后,我得到了以下错误:

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

我做了一个舵 init 来安装兼容的分蘖版本 ”警告: 群集中已经安装了 Tiller。 (使用—— client-only 来禁止显示此消息,或者—— update 来将 Tiller 升级到当前版本。)”。

有什么建议吗?

54263 次浏览

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

注意: 如果您试图降低服务器版本以匹配本地客户端版本,请运行以下代码:

helm init --upgrade --force-upgrade

就像那次行动一样,我犯了一个错误:

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

更新服务器对我来说不是一个选项,所以我需要酝酿安装以前版本的客户端。我以前没有安装客户端[ 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

希望这对谁有帮助。

通过 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

另一种选择(如果不能更改服务器版本)是使用 舵手安装程序脚本

该脚本允许您像这样选择特定的版本 ./get_helm.sh -v v2.13.1

这个答案是为谁要选择(降级)舵客户端版本,并且酿造安装是不工作。您可以从 给你手动安装二进制文件。

例如:

  1. 你可以解除现在的头盔

    brew unlink kubernetes-helm
    
  2. choose and download the helm version you want in github helm------v2.8.2

  3. unzip the file and put the helm unix executable binary file into /usr/local/bin directory

    go to the directory you just downloaded

    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. now you will see the right version of helm you want

    helm version
    

我经历了同样的问题,但在我的情况下,我只想升级 Tiller 到特定的版本(因为舵客户端是远程运行)。

所以,错误是:

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

对于那些已经安装了管理单元的头盔客户端,降级/升级到一个特定的版本,你可以简单地:

  • 卸载: snap remove helm
  • 检查可用的版本: snap info helm
  • 安装所需的 snap install helm --channel=X.X/stable --classic

这可能不是最先进的答案... ... 但我的团队运行库伯内特集群,已经安装了舵柄。在安装一台新的笔记本电脑时,我希望我的头盔与分舵版本相匹配,所以我发现它是这样的:

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

然后,我只是使用该版本号中的普通舵安装指令(在 Linux 上,它基本上只是 cURL 和解压缩到/usr/local/bin)。

如果你是 windows 用户并且安装了 helm.exe,首先进入它的文件夹(我的是 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 添加到路径中。