16

我最近开始通过在我的 Mac 中本地使用 Minikube 来学习 Kubernetes。以前,我能够使用 Minikube 0.10.0 启动本地 Kubernetes 集群,创建部署并查看 Kubernetes 仪表板。

昨天我试图删除集群并从头开始重新做所有事情。但是,我发现我无法部署资产,也无法查看仪表板。从我所见,一切似乎都在容器创建过程中卡住了。

我跑了之后minikube start,它报告了

Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.

当我运行kubectl get pods --all-namespaces时,它报告(注意 STATUS 列):

kubectl get pods --all-namespaces
NAMESPACE     NAME                          READY     STATUS              RESTARTS   AGE
kube-system   kube-addon-manager-minikube   0/1       ContainerCreating   0          51s

docker ps什么也没显示:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

minikube status告诉我虚拟机和集群正在运行:

minikubeVM: Running
localkube: Running

如果我尝试创建部署和自动缩放器,我被告知它们已成功创建:

kubectl create -f configs
deployment "hello-minikube" created
horizontalpodautoscaler "hello-minikube-autoscaler" created

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY     STATUS              RESTARTS   AGE
default       hello-minikube-661011369-1pgey   0/1       ContainerCreating   0          1m
default       hello-minikube-661011369-91iyw   0/1       ContainerCreating   0          1m
kube-system   kube-addon-manager-minikube      0/1       ContainerCreating   0          21m

在公开服务时,它说:

$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed

$ kubectl get service
NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
hello-minikube   10.0.0.32    <nodes>       8080/TCP   6s
kubernetes       10.0.0.1     <none>        443/TCP    22m

当我尝试访问该服务时,我被告知:

curl $(minikube service hello-minikube --url)
Waiting, endpoint for service is not ready yet...

docker ps仍然什么也没显示。在我看来,创建容器时一切都卡住了。我尝试了一些其他方法来解决这个问题:

  1. 升级到 minikube 0.11.0
  2. 使用 xhyve 驱动程序而不是 Virtualbox 驱动程序
  3. 删除缓存的所有内容,例如 ~/.minikube、~/.kube 和集群,然后重试

他们都没有为我工作。

Kubernetes 对我来说还是个新手,我想知道:

  1. 如何解决此类问题?
  2. 这个问题的原因可能是什么?

任何帮助表示赞赏。谢谢。

4

5 回答 5

12

就我而言,事实证明这是一个网络问题。

pod状态为“ContainerCreating”,在创建容器的过程中发现,docker镜像会从gcr.io拉取,国内无法访问(被GFW屏蔽)。上一次它对我有用,因为我碰巧连接到 VPN。

于 2016-10-19T01:52:25.697 回答
6

我没有尝试minikube,但我使用kubernetes. 根据提供的信息,很难说出问题的原因。您minikube在创建资源方面没有问题,但是与守护程序ContainerCreating有关的问题或与守护程序docker之间的不正确通信或与.kube-apidockerkubelet

您可以尝试以下命令:

kubectl describe po POD_NAME

这将为您提供 POD 的事件。也许这将为问题的根本原因提供一条途径。

您还可以检查日志kubelet以获取事件。

于 2016-10-07T10:02:23.297 回答
2

我在 Windows 上遇到了这个问题,但它与NTLM proxy. 我删除了VM,然后为我的安装minikube使用正确的代理设置重新创建了它:CNTLM

minikube start \
--docker-env http_proxy=http://10.0.2.2:3128 \
--docker-env https_proxy=http://10.0.2.2:3128 \
--docker-env no_proxy=localhost,127.0.0.1,::1,192.168.99.100

https://blog.alexellis.io/minikube-behind-proxy/

于 2017-07-31T01:16:37.723 回答
1

Horizo​​ntalpodautoscaler (hpa) 需要使用 heapster。你需要在 minikube 中运行 heapster 才能工作。minikube logs您始终可以使用或通过位于 的仪表板以交互方式调试此类问题minikube dashboard

您可以在https://github.com/kubernetes/heapster找到运行 heapster 和 grafana 的步骤

于 2016-10-18T22:30:02.077 回答
0

对我来说,我需要几分钟才能看到ContainerCreating问题。执行以下命令后:

systemctl status kube-controller-manager.service

我收到此错误:

同步“default/redis-master-2229813293”失败,无法创建 pod:找不到服务帐户“default”的 API 令牌,在自动创建令牌并添加到服务帐户后重试。

有两种方法可以解决这个问题:

  1. 使用令牌设置服务帐户
  2. 去掉api-server 中的ServiceAccount设置KUBE_ADMISSION_CONTROL
于 2017-06-15T06:20:48.083 回答