使用 Kubeadm 为 Helm 初始化 Tiller - Kubernetes

Initializing Tiller for Helm with Kubeadm - Kubernetes

我正在使用 Kubeadm 创建一个包含 3 个节点的集群

我正在使用 weave 作为网络 pod

我的集群状态是这样的:

NAME         STATUS   ROLES    AGE   VERSION
darthvader   Ready    <none>   56m   v1.12.3
jarjar       Ready    master   60m   v1.12.3
palpatine    Ready    <none>   55m   v1.12.3

我尝试在我的集群中初始化 helm 和 tiller

helm init

结果是这样的:

$HELM_HOME has been configured at /home/ubuntu/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.

Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy.
To prevent this, run `helm init` with the --tiller-tls-verify flag.
For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation
Happy Helming!

我的 pods 状态是这样的:

NAME                             READY   STATUS              RESTARTS   AGE
coredns-576cbf47c7-8q6j7         1/1     Running             0          54m
coredns-576cbf47c7-kkvd8         1/1     Running             0          54m
etcd-jarjar                      1/1     Running             0          54m
kube-apiserver-jarjar            1/1     Running             0          54m
kube-controller-manager-jarjar   1/1     Running             0          53m
kube-proxy-2lwgd                 1/1     Running             0          49m
kube-proxy-jxwqq                 1/1     Running             0          54m
kube-proxy-mv7vh                 1/1     Running             0          50m
kube-scheduler-jarjar            1/1     Running             0          54m
tiller-deploy-845cffcd48-bqnht   0/1     ContainerCreating   0          12m
weave-net-5h5hw                  2/2     Running             0          51m
weave-net-jv68s                  2/2     Running             0          50m
weave-net-vsg2f                  2/2     Running             0          49m

问题是 tiller 卡在 ContainerCreating 状态。

而我运行

kubectl describe pod tiller-deploy -n kube-system

查看tiller的状态,发现下一个错误:

创建 Pod 沙箱失败:rpc 错误:代码 = DeadlineExceeded desc = 上下文截止日期已超出

Pod 沙箱已更改,它将被杀死并重新创建。

如何才能成功创建 tiller deploy pod?我不明白为什么 pod 沙盒 失败了。

您似乎 运行 this

很可能由于网络连接问题,您的节点无法拉取容器映像。像这样的图像:gcr.io/kubernetes-helm/tiller:v2.3.1 或暂停容器 gcr.io/google_containers/pause(如果您的其他 pods 是 运行,则不太可能)。您可以尝试登录到您的节点(darthvader、palpatine)并手动调试:

$ docker pull gcr.io/kubernetes-helm/tiller:v2.3.1 <= Use the version on your tiller pod spec or deployment (tiller-deploy)
$ docker pull gcr.io/google_containers/pause

可能问题出在您部署 Tiller 的方式上。我刚刚重新创建了这个并且在 GCP 上使用 Wea​​ve 和 Compute Engine 实例没有任何问题。

您应该使用不同的方法重试安装 helm,因为可能存在一些问题(您没有提供有关如何安装它的详细信息)。

重置 helm 并删除 tiller pod:

helm reset --force(如果 tiller 持续存在,请使用 tiller kubectl get all --all-namespaceskubectl delete rs/name 检查副本集的名称) 现在尝试使用不同的方法部署 helm 和 tiller。例如通过脚本 运行ning 它: As explained here.

您还可以 运行 头盔 without Tiller