我尝试通过minikube运行k8s,我遵循offical article,当我尝试minikube start
的命令时,该错误提示我无法提取docker images(k8s.gcr):
tianyu@ubuntu:~$ minikube start
minikube v0.34.1 on linux (amd64)
Creating virtualbox VM (CPUs=2, Memory=2048MB, Disk=20000MB) ...
"minikube" IP address is 192.168.99.100
Found network options:
▪ HTTP_PROXY=http://127.0.0.1:35033
▪ HTTPS_PROXY=http://127.0.0.1:35033/
▪ NO_PROXY=localhost,127.0.0.0/8,::1
Configuring Docker as the container runtime ...
✨ Preparing Kubernetes environment ...
Pulling images required by Kubernetes v1.13.3 ...
❌ Unable to pull images, which may be OK: running cmd: sudo kubeadm config images pull --config /var/lib/kubeadm.yaml: command failed: sudo kubeadm config images pull --config /var/lib/kubeadm.yaml
stdout:
stderr: failed to pull image "k8s.gcr.io/kube-apiserver:v1.13.3": output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
: Process exited with status 1
Launching Kubernetes v1.13.3 using kubeadm ...
Error starting cluster: kubeadm init:
sudo /usr/bin/kubeadm init --config /var/lib/kubeadm.yaml --ignore-preflight-errors=DirAvailable--etc-kubernetes-manifests --ignore-preflight-errors=DirAvailable--data-minikube --ignore-preflight-errors=Port-10250 --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml --ignore-preflight-errors=FileAvailable--etc-kubernetes-manifests-etcd.yaml --ignore-preflight-errors=Swap --ignore-preflight-errors=CRI
[init] Using Kubernetes version: v1.13.3
[preflight] Running pre-flight checks
[WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
[WARNING Swap]: running with swap on is not supported. Please disable swap
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.13.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.13.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.13.3: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
....
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
: Process exited with status 1
我在中国,所以我要通过vpn访问gcr docker hub。 我遵循了此链接(https://docs.docker.com/config/daemon/systemd/#httphttps-proxy),因此我可以通过泊坞窗提取图像(k8s.gcr)。相关信息如下:
tianyu@ubuntu:~$ sudo docker pull k8s.gcr.io/kube-apiserver:v1.13.3
v1.13.3: Pulling from kube-apiserver
73e3e9d78c61: Pull complete
d261e2f8ca5b: Pull complete
Digest: sha256:cdb80dc78f3c25267229012a33800b8b203e8e8b9fa59f9fe93e156cc859f89c
Status: Downloaded newer image for k8s.gcr.io/kube-apiserver:v1.13.3
tianyu@ubuntu:~$ sudo docker pull k8s.gcr.io/kube-controller-manager:v1.13.3
v1.13.3: Pulling from kube-controller-manager
73e3e9d78c61: Already exists
846fc1deb4d7: Pull complete
Digest: sha256:408350880946f037be82d6ad2ed7dc3746b221932f0eeb375aef935d62392031
Status: Downloaded newer image for k8s.gcr.io/kube-controller-manager:v1.13.3
为什么我不能通过minikube提取图像?
感谢您的时间。
答案 0 :(得分:1)
我也在中国。请使用参数来启动minikube
--docker-env HTTP_PROXY=http://10.0.2.2:35033 --docker-env HTTPS_PROXY=http://10.0.2.2:35033
答案 1 :(得分:0)
Minikube 1.0 releases in March 2019现在正式包括:
添加
--image-repository
标志,以便用户可以选择备用存储库镜像
此跟随PR 3714
此PR旨在为某些难以访问gcr.io的用户提供新的命令行参数--image-repository。
已通过registry.cn-hangzhou.aliyuncs.com/google_containers进行了测试。
这是Aliyun家伙维护的gcr.io的著名镜像之一。
我已使用此镜像进行了验证,因此它应该可以正常工作(v1.13.3)。如果在用户环境中无法访问提供的镜像,则可以使用
--image-repository
作为最终解决方法。
我同意维护APT / pacman世界之类的镜像列表也有帮助, 甚至尝试在设置过程中通过IP地址猜测可靠的镜像。
--registry-mirror
仅影响那些没有存储库前缀的图像-来自Docker官方注册表的图像。
它不适用于来自私人注册表的图像,例如gcr.io/kube-proxy就是这种情况。对于私有映像,docker仍将转到私有注册表并获取它们。如果您使用
来实现--registry-mirror
设置了minikube,它可能适用于使用ubuntu / 18.04的pod /部署,但不适用于gcr.io/-您将需要删除其中的“ gcr.io/”使其看起来像官方注册表中的图像的引用。
对于后一种情况,可以使用--registry-mirror https://private_server --image-registry [private_server/]google_containers
答案 2 :(得分:0)
--register-mirror=registry.cn-hangzhou.aliyuncs.com/google_containers
对我不起作用。还有--image-mirror-country=cn
。
但是--docker-env HTTP_PROXY=http://10.0.2.2:35033 --docker-env HTTPS_PROXY=http://10.0.2.2:35033
对我有用。
我配置了代理真的很奇怪。我可以通过google.com ping。 但是不能直接拉图像。
答案 3 :(得分:0)
如果您使用的是Mac,则可以进行以下操作。
minikube start --vm-driver=virtualbox
首先,您必须下载并安装VirtualBox。