【问题标题】:Minikube never start - Error restarting clusterMinikube 从不启动 - 重新启动集群时出错
【发布时间】:2018-11-06 07:37:34
【问题描述】:

我正在使用 Arch linux
我安装了 virtualbox 5.2.12
我安装了 minikube 0.27.0-1
我安装了 Kubernetes v1.10.0

当我尝试使用 sudo minikube start 启动 minkube 时,出现此错误

Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
E0527 12:58:18.929483   22672 start.go:281] Error restarting cluster:  running cmd: 
sudo kubeadm alpha phase certs all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase kubeconfig all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase controlplane all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase etcd local --config /var/lib/kubeadm.yaml
: running command: 
sudo kubeadm alpha phase certs all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase kubeconfig all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase controlplane all --config /var/lib/kubeadm.yaml &&
sudo /usr/bin/kubeadm alpha phase etcd local --config /var/lib/kubeadm.yaml
: exit status 1

我已经尝试使用其他选项启动 minekube,例如:

sudo minikube start --kubernetes-version v1.10.0 --bootstrapper kubeadm

sudo minikube start --bootstrapper kubeadm

sudo minikube start --vm-driver none

sudo minikube start --vm-driver virtualbox

sudo minikube start --vm-driver kvm

sudo minikube start --vm-driver kvm2

我总是遇到同样的错误。有人可以帮我吗?

【问题讨论】:

  • 我建议删除现有的VM,让minikube重新创建一个。
  • 如果您有兴趣找到启动 Minikube 问题的根源,我建议您提高调试信息的级别。你可以尝试运行:minikube -v=4 --log_dir start,然后logs来到,你可以把它贴在这里供社区分析

标签: kubernetes minikube


【解决方案1】:

Minikube VM 通常是为简单的实验而启动的,没有任何重要的负载。 这就是为什么重新创建 minikube 集群比尝试修复它要容易得多。

要删除现有的 minikube VM,请执行以下命令:

minikube delete

此命令关闭并删除 minikube 虚拟机。不保留任何数据或状态。

检查是否有所有依赖项并运行命令:

minikube start

此命令创建一个名为“minikube”的“kubectl 上下文”。此上下文包含与您的 minikube 集群通信的配置。 minikube 自动将此上下文设置为默认值,但如果您以后需要切换回它,请运行:

kubectl config use-context minikube

或者像这样在每个命令上传递上下文:

kubectl get pods --context=minikube

更多关于命令行参数的信息可以在here找到。

【讨论】:

  • 我遇到了同样的错误,minikube delete, start 解决了这个问题,在这个命令打开VBox和docker容器之前我做过的其他事情(最后一步可能不相关),只是分享我的脚步
【解决方案2】:

更新:

以下答案不起作用,因为我怀疑我的环境与我找到的信息之间的版本存在差异,我不愿意花更多时间解决这个问题。 虚拟机本身会启动,因此如果您在其中有重要信息,即:其他 docker 容器,您可以在 minikube delete 之前登录虚拟机并从中提取此类数据


同样的问题,我 ssh 进入虚拟机并运行 sudo kubeadm alpha phase certs all --config /var/lib/kubeadm.yaml 结果是 failure loading apiserver-kubelet-client certificate: the certificate has expired

就像任何优秀的工程师一样,我用谷歌搜索并找到了这个:

来源:https://github.com/kubernetes/kubeadm/issues/581

如果您使用的是 1.8 之前的 kubeadm 版本,据我所知,证书轮换 #206 已到位(作为测试版) 功能)或您的证书已经过期,那么您将需要手动 更新您的证书(或重新创建您的集群,它看起来有些(不是 只是@kachkaev)最终诉诸)。

您需要通过 SSH 连接到您的主节点。如果你使用的是 kubeadm

= 1.8 跳到 2。

如果需要,更新 Kubeadm。我之前是1.7的。 $ sudo curl -sSL https://dl.k8s.io/release/v1.8.15/bin/linux/amd64/kubeadm > ./kubeadm.1.8.15 $ chmod a+rx kubeadm.1.8.15 $ sudo mv /usr/bin/kubeadm /usr/bin/kubeadm.1.7 $ sudo mv kubeadm.1.8.15 /usr/bin/kubeadm 备份旧的 apiserver、apiserver-kubelet-client 和 前端代理客户端证书和密钥。 $须藤MV /etc/kubernetes/pki/apiserver.key /etc/kubernetes/pki/apiserver.key.old $ sudo mv /etc/kubernetes/pki/apiserver.crt /etc/kubernetes/pki/apiserver.crt.old $ sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.crt /etc/kubernetes/pki/apiserver-kubelet-client.crt.old $ sudo mv /etc/kubernetes/pki/apiserver-kubelet-client.key /etc/kubernetes/pki/apiserver-kubelet-client.key.old $ sudo mv /etc/kubernetes/pki/front-proxy-client.crt /etc/kubernetes/pki/front-proxy-client.crt.old $ sudo mv /etc/kubernetes/pki/front-proxy-client.key /etc/kubernetes/pki/front-proxy-client.key.old 生成新的apiserver, apiserver-kubelet-client 和 front-proxy-client 证书和密钥。 $ sudo kubeadm alpha 阶段证书 apiserver --apiserver-advertise-address $ sudo kubeadm alpha 阶段证书 apiserver-kubelet-client $ sudo kubeadm alpha 阶段证书 front-proxy-client 备份旧配置文件 $ sudo mv /etc/kubernetes/admin.conf /etc/kubernetes/admin.conf.old $ sudo mv /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.old $ sudo mv /etc/kubernetes/controller-manager.conf /etc/kubernetes/controller-manager.conf.old $ sudo mv /etc/kubernetes/scheduler.conf /etc/kubernetes/scheduler.conf.old 生成新的配置文件。这里有一个重要说明。如果 您在 AWS 上,您需要显式传递 --node-name 此请求中的参数。否则会出现如下错误: 无法向 API 服务器注册节点“ip-10-0-8-141.ec2.internal”: 禁止节点“ip-10-0-8-141.ec2.internal”:节点 ip-10-0-8-141 无法在您的日志中修改节点 ip-10-0-8-141.ec2.internal sudo journalctl -u kubelet --all | tail 和主节点会报告 当你运行 kubectl get nodes 时它还没有准备好。

请务必替换传入的值 --apiserver-advertise-address 和 --node-name 为您的环境设置正确的值。

$ sudo kubeadm alpha 阶段 kubeconfig all --apiserver-advertise-address 10.0.8.141 --node-name ip-10-0-8-141.ec2.internal [kubeconfig] 将 KubeConfig 文件写入磁盘: “admin.conf” [kubeconfig] 将 KubeConfig 文件写入磁盘: “kubelet.conf” [kubeconfig] 将 KubeConfig 文件写入磁盘: “controller-manager.conf” [kubeconfig] 将 KubeConfig 文件写入磁盘: “scheduler.conf”

确保您的 kubectl 正在为您的配置寻找正确的位置 文件。 $ mv .kube/config .kube/config.old $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config $ sudo chmod 777 $HOME/.kube/config $ export KUBECONFIG=.kube/config 重启你的主节点 $ sudo /sbin/shutdown -r now 重新连接到您的主节点并获取您的 令牌,并验证您的主节点是否“就绪”。将令牌复制到 你的剪贴板。您将在下一步中需要它。 $ kubectl 获取节点 $ kubeadm 令牌列表 如果您没有有效令牌。你可以创建 一个:

$ kubeadm token create 令牌应该类似于 6dihyb.d09sbgae8ph2atjw

SSH 进入每个从节点并将它们重新连接到主节点 $ 须藤卷曲-sSL https://dl.k8s.io/release/v1.8.15/bin/linux/amd64/kubeadm > ./kubeadm.1.8.15 $ chmod a+rx kubeadm.1.8.15 $ sudo mv /usr/bin/kubeadm /usr/bin/kubeadm.1.7 $ sudo mv kubeadm.1.8.15 /usr/bin/kubeadm $ sudo kubeadm join --token= : --node-name

对每个连接节点重复第 9 步。从主节点,您可以 验证所有从节点是否已连接并准备好:$ kubectl get nodes 希望这能让你到达你需要的地方 @davidcomeyne。

【讨论】:

  • 我不知道这是否有效,我将在我将大量命令复制粘贴到我的 shell 后报告。
  • /etc/kubernetes/pki 不存在......所以我猜我不会支持这些东西。
【解决方案3】:

以 root 身份首先尝试使用以下命令进行全面清理:

minikube 删除 --all --purge

然后启动 minikube,你需要为其他用户复制根证书

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2019-01-05
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多