kubernetes install_error ai_generated true

Error: could not find tiller: the server could not find the requested resource

ID: kubernetes/helm-install-tiller-not-found

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2023-06-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Helm v2.16 active
Helm v2.17 active
Kubernetes v1.16 active

Root Cause

Helm v2 client is trying to connect to Tiller server which is not installed in the cluster.

generic

中文

Helm v2 客户端尝试连接到集群中未安装的 Tiller 服务器。

Official Documentation

https://helm.sh/docs/topics/tiller/

Workarounds

  1. 90% success Install Tiller in cluster: `kubectl create serviceaccount --namespace kube-system tiller && kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller && helm init --service-account tiller`.
    Install Tiller in cluster: `kubectl create serviceaccount --namespace kube-system tiller && kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller && helm init --service-account tiller`.
  2. 95% success Upgrade to Helm v3 which removes Tiller dependency: `brew upgrade helm` or download latest binary, then migrate releases: `helm 2to3 convert <release>`.
    Upgrade to Helm v3 which removes Tiller dependency: `brew upgrade helm` or download latest binary, then migrate releases: `helm 2to3 convert <release>`.
  3. 85% success If using Helm v2, check Tiller pod: `kubectl get pods -n kube-system | grep tiller`. If missing, deploy with `helm init`.
    If using Helm v2, check Tiller pod: `kubectl get pods -n kube-system | grep tiller`. If missing, deploy with `helm init`.

中文步骤

  1. Install Tiller in cluster: `kubectl create serviceaccount --namespace kube-system tiller && kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller && helm init --service-account tiller`.
  2. Upgrade to Helm v3 which removes Tiller dependency: `brew upgrade helm` or download latest binary, then migrate releases: `helm 2to3 convert <release>`.
  3. If using Helm v2, check Tiller pod: `kubectl get pods -n kube-system | grep tiller`. If missing, deploy with `helm init`.

Dead Ends

Common approaches that don't work:

  1. Reinstall Helm client via brew/apt without upgrading 90% fail

    Client version doesn't matter; Tiller must be deployed separately.

  2. Set HELM_HOST environment variable to a random IP 95% fail

    Tiller must be a running pod in the cluster, not an arbitrary IP.

  3. Use `helm init --client-only` to install client only 90% fail

    Client-only mode does not deploy Tiller; you still need Tiller running.