“Error: forwarding ports: Upgrade request required” Error in helm of a kubernetes cluster

7/3/2019

I have a kubernetes cluster built using kubespray and imported to Rancher.

The nodes are configured with

  • CentOS Linux 7 3.10.0-957.12.1.el7.x86_64
  • Docker version : 18.9.5
  • Kubelet version : v1.14.1
  • Tiller version : v2.14.1 ( got this version from the tiller pod's image gcr.io/kubernetes-helm/tiller:v2.14.1 )

All the tiller resources are working fine:

$ kubectl get all -n kube-system | findstr tiller

pod/tiller-deploy-57ff77d846-frtb7             1/1       Running   0          12d

service/tiller-deploy          ClusterIP   10.233.49.112   <none>        44134/TCP                16d

deployment.apps/tiller-deploy             1         1         1            1           16d

replicaset.apps/tiller-deploy-57ff77d846             1         1         1         12d
replicaset.apps/tiller-deploy-69d5cd79bb             0         0         0         16d

But when I run the helm commands, I am getting this error:

$ helm version

Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Error: forwarding ports: error upgrading connection: Upgrade request required

$ helm ls

Error: forwarding ports: error upgrading connection: Upgrade request required

I tried:

  • The tiller version is 2.14.1. So, upgraded the helm client to version 2.14.1 from 2.11.0. But that doesn't solve the issue.

Can someone help me to solve this error?

-- AnjanaDyna
centos
kubernetes
kubernetes-helm
rancher
upgrade

1 Answer

7/4/2019

Each time when you invoke Helm command a specific port on the host machine is proxied to the target tiller Pod port 44134, that is a simply inherited kubectl port-forward command and you can even find Go package portforward.go used by Helm client to initiate connection to the server. Therefore, issue that you are consulting here is mostly connected with port forwarding (tunneling) problem between Helm client and server parties.

I would probably establish manual port-forward check:

kubectl -n kube-system port-forward <tiller-deploy-Pod> <some_port>:44134

and even verify whether tiller service is listening on 44134 port:

kubectl exec -it <tiller-deploy-Pod> -n kube-system -- ./tiller

Find more information about Helm implementation in the official documentation.

-- mk_sta
Source: StackOverflow