Minikube 永远不会启动 - 重启集群时出错
Minikube never start - Error restarting cluster
我正在使用 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
我总是得到同样的错误。有人可以帮助我吗?
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。
更新:
以下答案无效,因为我怀疑我的环境和我找到的信息之间存在版本差异,我不愿意在这个问题上花费更多时间。 VM 本身会启动 所以如果你有重要信息,即:其他 docker 容器你可以登录到 VM 并在 [=10= 之前从中提取这些数据]
同样的问题,我通过 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
If you are using a version of kubeadm prior to 1.8, where I understand certificate rotation #206 was put into place (as a beta
feature) or your certs already expired, then you will need to manually
update your certs (or recreate your cluster which it appears some (not
just @kachkaev) end up resorting to).
You will need to SSH into your master node. If you are using kubeadm
= 1.8 skip to 2.
如果需要,更新 Kubeadm。我以前是1.7。 $须藤卷曲-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 $ 须藤
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
无法修改日志 sudo 中的节点 ip-10-0-8-141.ec2.internal
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 重新连接到你的主节点并获取你的
令牌,并验证您的主节点是 "Ready"。将令牌复制到
你的剪贴板。您将在下一步中需要它。 $ kubectl 获取节点
$ kubeadm token list 如果您没有有效的令牌。您可以创建
一个:
$ 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.
首先以 root 身份尝试完全清理:
minikube delete --all --purge
然后启动minikube,你需要为其他用户复制根证书。
我正在使用 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
我总是得到同样的错误。有人可以帮助我吗?
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。
更新:
以下答案无效,因为我怀疑我的环境和我找到的信息之间存在版本差异,我不愿意在这个问题上花费更多时间。 VM 本身会启动 所以如果你有重要信息,即:其他 docker 容器你可以登录到 VM 并在 [=10= 之前从中提取这些数据]
同样的问题,我通过 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
If you are using a version of kubeadm prior to 1.8, where I understand certificate rotation #206 was put into place (as a beta feature) or your certs already expired, then you will need to manually update your certs (or recreate your cluster which it appears some (not just @kachkaev) end up resorting to).
You will need to SSH into your master node. If you are using kubeadm
= 1.8 skip to 2.
如果需要,更新 Kubeadm。我以前是1.7。 $须藤卷曲-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 $ 须藤 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 无法修改日志 sudo 中的节点 ip-10-0-8-141.ec2.internal 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 重新连接到你的主节点并获取你的 令牌,并验证您的主节点是 "Ready"。将令牌复制到 你的剪贴板。您将在下一步中需要它。 $ kubectl 获取节点 $ kubeadm token list 如果您没有有效的令牌。您可以创建 一个:
$ 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.
首先以 root 身份尝试完全清理:
minikube delete --all --purge
然后启动minikube,你需要为其他用户复制根证书。