Minikube 在创建容器时卡住了
Minikube got stuck when creating container
我最近开始在 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
仍然没有任何显示。在我看来,创建容器时一切都卡住了。我尝试了一些其他方法来解决此问题:
- 升级到 minikube 0.11.0
- 使用 xhyve 驱动程序而不是 Virtualbox 驱动程序
- 删除缓存的所有内容,如 ~/.minikube、~/.kube 和集群,然后重试
None 其中对我有用。
Kubernetes 对我来说还是个新手,我想知道:
- 如何解决此类问题?
- 导致此问题的原因可能是什么?
感谢任何帮助。谢谢。
我没有尝试 minikube
,但我使用了 kubernetes
。根据提供的信息,很难说出问题的原因。您的 minikube
在创建资源时没有问题,但 ContainerCreating
是与 docker
守护程序相关的问题或 kube-api
和 docker
守护程序之间的不正确通信或 kubelet
.
您可以尝试以下命令:
kubectl describe po POD_NAME
这将为您提供 POD 的事件。也许这将提供解决问题根本原因的途径。
您也可以查看 kubelet
的日志以获取事件。
horizontalpodautoscaler (hpa) 需要使用 heapster。你需要在 minikube 中 运行 heapster 才能工作。您始终可以使用 minikube logs
或通过位于 minikube dashboard
的仪表板以交互方式调试此类问题。
找到 运行 heapster 和 grafana 的步骤
原来是我的网络问题。
pod状态为“ContainerCreating”,我在创建容器时发现,docker镜像会从gcr.io拉取,国内无法访问(被GFW屏蔽)。上一次它对我有用,因为我碰巧通过 VPN 连接到它。
对我来说,需要几分钟才能看到 ContainerCreating
问题。执行以下命令后:
systemctl status kube-controller-manager.service
我收到这个错误:
Sync "default/redis-master-2229813293" failed with unable to create pods: No API token found for service account "default", retry after the token is automatically created and added to the service account.
有两种方法可以解决这个问题:
- 使用令牌设置服务帐户
- 删除 api-server
中 KUBE_ADMISSION_CONTROL
的 ServiceAccount
设置
我在 Windows 上遇到过这个问题,但它与 NTLM proxy
有关。我删除了 minikube
VM,然后使用正确的代理设置为我的 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
我最近开始在 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
仍然没有任何显示。在我看来,创建容器时一切都卡住了。我尝试了一些其他方法来解决此问题:
- 升级到 minikube 0.11.0
- 使用 xhyve 驱动程序而不是 Virtualbox 驱动程序
- 删除缓存的所有内容,如 ~/.minikube、~/.kube 和集群,然后重试
None 其中对我有用。
Kubernetes 对我来说还是个新手,我想知道:
- 如何解决此类问题?
- 导致此问题的原因可能是什么?
感谢任何帮助。谢谢。
我没有尝试 minikube
,但我使用了 kubernetes
。根据提供的信息,很难说出问题的原因。您的 minikube
在创建资源时没有问题,但 ContainerCreating
是与 docker
守护程序相关的问题或 kube-api
和 docker
守护程序之间的不正确通信或 kubelet
.
您可以尝试以下命令:
kubectl describe po POD_NAME
这将为您提供 POD 的事件。也许这将提供解决问题根本原因的途径。
您也可以查看 kubelet
的日志以获取事件。
horizontalpodautoscaler (hpa) 需要使用 heapster。你需要在 minikube 中 运行 heapster 才能工作。您始终可以使用 minikube logs
或通过位于 minikube dashboard
的仪表板以交互方式调试此类问题。
原来是我的网络问题。
pod状态为“ContainerCreating”,我在创建容器时发现,docker镜像会从gcr.io拉取,国内无法访问(被GFW屏蔽)。上一次它对我有用,因为我碰巧通过 VPN 连接到它。
对我来说,需要几分钟才能看到 ContainerCreating
问题。执行以下命令后:
systemctl status kube-controller-manager.service
我收到这个错误:
Sync "default/redis-master-2229813293" failed with unable to create pods: No API token found for service account "default", retry after the token is automatically created and added to the service account.
有两种方法可以解决这个问题:
- 使用令牌设置服务帐户
- 删除 api-server 中
KUBE_ADMISSION_CONTROL
的 ServiceAccount
设置
我在 Windows 上遇到过这个问题,但它与 NTLM proxy
有关。我删除了 minikube
VM,然后使用正确的代理设置为我的 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