关于minikube使用中,trying and failing

2019-06-14  本文已影响0人  Jayce_xi

🐒0. 本文适用

💣1. 错误描述

在弄之前,你当然需要适用proxy来弄你的终端:

export http_proxy=http://192.168.1.48:8118;
export https_proxy=http://192.168.1.48:8118;

在各种一顿操作之后,发现无法看到想要的结果,看下log如下:

kubectl log hello-node-7f8df9f98d-rrmb2 # log后面是你的pod名

却出现如下错误:

Error from server (BadRequest): container "hello-node" in pod "hello-node-7f8df9f98d-rrmb2" is waiting to start: trying and failing to pull image

他的意思是我孩子尝试pull镜像。

找了好久,没找到关键所在,因为执行:

docker images 

是可以看到这个镜像的。但是却不在本地pull,他出去下载又失败了,我随风而立。。。。

🍉2.问题的解决

一顿思考加🔍后,我发现:

minikube的逻辑是创建一个vm,在这个vm里去运行k8s需要的各种docker image

所以你需要解决的是在vm中的docker在pull镜像的时候的代理问题。

starkoverflow上很多人回答的十分不清楚,完全没有找到问题的根源。

其实这个问题有官方解答:

Minikube creates a Virtual Machine that includes Kubernetes and a Docker daemon. When Kubernetes attempts to schedule containers using Docker, the Docker daemon may require external network access to pull containers.

If you are behind an HTTP proxy, you may need to supply Docker with the proxy settings. To do this, pass the required environment variables as flags during minikube start.

For example:

$ minikube start --docker-env HTTP_PROXY=http://$YOURPROXY:PORT \
                 --docker-env HTTPS_PROXY=https://$YOURPROXY:PORT

ps:如果你已经执行了代理设置
也就是这一步:

export http_proxy=http://192.168.1.48:8118; # ⚠️这个http://192.168.1.48:8118是我的代理配置,你需要弄一个自己的,详情自己🔍
export https_proxy=http://192.168.1.48:8118;

那么直接执行

minikube start --docker-env HTTP_PROXY=${http_proxy} --docker-env HTTPS_PROXY=${https_proxy}

If your Virtual Machine address is 192.168.99.100, then chances are your proxy settings will prevent kubectl from directly reaching it. To by-pass proxy configuration for this IP address, you should modify your no_proxy settings. You can do so with:

$ export no_proxy=$no_proxy,$(minikube ip)

执行以上两条命令,我这里就解决了。

✈️3.后记

4.参考

Using Minikube With an HTTP Proxy
mac上安装minikube及排错记
随风飘散k8s minikube setup

上一篇下一篇

猜你喜欢

热点阅读