错误:安装错误:服务器找不到请求的资源 HELM Kubernetes



我做了什么:
我安装了 Helm

curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
helm init --history-max 200


收到错误:

$HELM_HOME has been configured at /root/.helm.
Error: error installing: the server could not find the requested resource
  1. 这个错误是什么意思?
  2. 我应该如何安装舵手和舵柄?

Ubuntu 版本:18.04
Kubernetes 版本: 1.16
Helm 版本:

helm version
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}
Error: could not find tiller

更新:
我尝试了@shawndodo的答案,但仍然没有安装舵柄

helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm'
--output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -

更新 2:
helm init --history-max 200在 Kubernetes 版本 1.15 中工作

我遇到了同样的问题,然后我在这里找到了这个回复。

helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -

它对我有用。您可以在此问题中看到详细信息。

不幸的是,Helm 无法使用当前版本的 Kubernetes (1.16.0(,正如我们在问题 #6374 中看到的那样

现在,我们可以通过选择旧版本的 Kubernetes 来解决不兼容问题。

从以前的 Kubernetes 版本开始 minikube

要解决此问题,只需使用--kubernetes-version参数(参考(启动 minikube 设置版本:

minikube delete
minikube start --kubernetes-version=1.15.4

尝试使用以下命令重新启动 Helm:

helm init

之后,您将能够毫无问题地使用头盔。

因此,tiller 是 helm 客户端与之通信的服务器端组件(由于各种安全问题,tiller 将在 Helm 3 中删除(。运行helm init时,helm 客户端会在 kubectl 当前设置为连接的集群上安装 tiller(请记住,为了安装 tiller,您需要对集群进行管理员访问,因为 tiller 需要集群范围的管理员访问权限( 但是,有许多不同的策略可以使用舵柄:

  • 每个命名空间的 tiller:这是当您在单个命名空间中安装 tiller 并仅授予它对该命名空间的访问权限(比为其提供集群范围的管理员要安全得多(时,您可以在此处找到有关如何操作的文章
  • 无舵柄
  • :这是当您在本地运行 Tiller 时,您需要将HELM_HOST导出到此 Tilner,舵柄将使用在KUBECONFIG中配置的 kube 配置,更多信息在这里找到

我遇到了同样的问题 - 与初始问题完全相同的配置: 优麒麟版本:18.04 Kubernetes 版本:1.16

@shawndodo的回答对我不起作用。舵柄部署存在一些问题,根本没有创建舵柄吊舱!

我尝试按照 Helm 文档中的说明安装从金丝雀构建 - https://helm.sh/docs/using_helm/#from-canary-builds

helm init --canary-image --upgrade

这几天前不起作用,但再次尝试(使用较新的金丝雀构建(,今天有效(20191005(。

我现在是否在使用金丝雀构建时遇到其他问题还有待观察,但我克服了初始化问题......

我尝试了有关手动更改 api 版本的所有建议来解决此问题,这摆脱了错误,但之后事情无法正常工作。 所以就我而言,我删除了我最新的 minicube 安装,并使用以下命令在我的 Mac 上安装了一个旧安装,如果需要,将 minikube-darwin-amd64 更改为 minikube-linux-amd64:

curl -LO https://storage.googleapis.com/minikube/releases/v1.3.0/minikube-darwin-amd64 
&& sudo install minikube-darwin-amd64 /usr/local/bin/minikube

这将我的 kubernetes 降级到 helm 目前支持的 v1.15.2。

  • kubectl 版本: v1.16.0
  • 头盔版本:v2.14.3

    minikube start --memory=16384 --cpus=4
    helm init --service-account tiller --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | sed 's@  replicas: 1@  replicas: 1n  selector: {"matchLabels": {"app": "helm", "name": "tiller"}}@' | kubectl apply -f -
    helm template istio-1.3.3/install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f - 
    helm template istio-1.3.3/install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -
    

在开始使用 helm 之前,我们需要在集群中安装舵柄。helm init命令在集群中安装 tiller,我们还需要在集群中为 tiller 配置 RBAC。在这里,您将了解根据 k8s 集群的需求所需的 RBAC 规则。

试试

apt-get upgrade helm就我而言,它奏效了。

helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's@apiVersion: extensions/v1beta1@apiVersion: apps/v1@' | kubectl apply -f -

最新更新