我运行helm upgrade --install
来修改我的kubernetes集群的状态,我有时会得到这样的错误:
22:24:34 StdErr: E0126 17:24:28.472048 48084 portforward.go:178] lost connection to pod
22:24:34 Error: UPGRADE FAILED: transport is closing
似乎我不是唯一一个,它似乎发生在许多不同的helm命令。所有这些github问题都有描述或评论提到“丢失连接到pod”或“传输正在关闭”错误(通常两者):
虽然阅读数百个github问题评论可能具有教育意义,但通常切换到stackoverflow的追逐速度更快,而且这个问题似乎还不存在,所以现在就是这样。希望一些快速症状修复,并最终一个或多个根本原因诊断最终在答案中。
删除分蘖部署并重新创建它只是我在github上看到的修复(here和here)。当相同的helm命令反复失败时,这对人们最有帮助(不是间歇性失败,尽管你可以试试)。
delete tiller(helm的服务器端组件):
kubectl delete deployment -n kube-system tiller-deploy
# deployment "tiller-deploy" deleted
并重新创建它:
helm init --upgrade
# $HELM_HOME has been configured at /root/.helm.
# Tiller (the helm server side component) has been upgraded to the current version.
# Happy Helming!
弹跳分蘖显然不会解决根本原因。希望有一个比这更好的答案,可能来自https://github.com/kubernetes/helm/issues/2025。这是2018年2月13日唯一开放的github问题。
通过将tiller主机信息添加到helm install命令,我能够解决这个问题。
--host=10.111.221.14:443
您可以通过这种方式获取分蘖IP
$ kubectl get svc -n kube-system tiller-deploy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tiller-deploy ClusterIP 10.111.221.14 <none> 44134/TCP 34h
完整的命令示例
helm install stable/grafana --name=grafana --host=10.111.221.14:4413
我知道这是一个解决方法,但是通过这种方法安装后,helm的所有其他功能都正常运行。在执行升级或回滚的初始安装后,我不必再次添加主机信息。希望这可以帮助!
内存限制对我造成了这个错误。以下修正了它:
kubectl set resources deployment tiller-deploy --limits=memory=200Mi