美文网首页k8s
k8s初游: minikube启动docker镜像

k8s初游: minikube启动docker镜像

作者: 我私人的kernel | 来源:发表于2016-08-15 09:59 被阅读3929次

    minikube搭建集群

    minikube是k8s新推出的快速搭建单节点的工具,详细介绍见github地址。 对于我初想尝试k8s的人来说,这个minikube搭建非常简单。

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.7.1/minikube-linux-amd64&&chmod +x minikube&&sudo mv minikube /usr/local/bin/

    Linux下通过上述就可以安装好minikube工具。启动集群则使用minkube start.

    生成kubectl程序

    而kubectl,我是直接编译k8s源码生成的。

    1.下载最新源码 git clone https://github.com/kubernetes/kubernetes.git

    2.执行make

    3. 在生成的_output目录中就能找到kubectl程序

    创建pod资源

    1.编写一个private-image-test-1.yaml文件,

    2.执行kubectl create -f private-image-test-1.yaml

      k8s将会创建一个pod,该pod中存在一个使用了busybox:latest镜像的容器。

    问题

     然而并没有这么的顺利。创建后查看Pod的状态,会发现pod一直处于ContainerCreating状态,容器无法正常启动。

     1. 一开始我还以为是因为k8s不会自动从docker hub上拉取busybox镜像,直接在host上拉取了最新的busybox镜像。尝试后失败。

     2. 查阅了资料后,发现minikube实际上利用virtual box启动了一个虚拟机,遂产生怀疑是不是因为虚拟机没有拉取busybox镜像,通过

    minikube ssh 连接进虚拟机中,拉取了最新的镜像。尝试后仍然失败。

    3. 找到问题原因:  最终通过kubectl describe pods test,会发现以下的错误提示:

      因为GFW的问题,拉取gcr.io/google_containers/pause-amd64:3.0镜像失败导致的。可以查看以下在github上的讨论

                           https://github.com/kubernetes/kubernetes/issues/7090

                           https://github.com/kubernetes/kubernetes/issues/6888

                           https://github.com/kubernetes/kubernetes/issues/26873

    第三个讨论提到了一个解决方法是修改pod-infra-container-image参数,但是基于kubelet工具的,在minikube上并没有这个参数。

    我向k8s minikube研发人员提出了这个疑问,按照他们的说法,目前版本的minikube确实不支持这个参数,这是minikube在后续版本里需要添加的新特性。

                         https://github.com/kubernetes/minikube/issues/473

    临时解决方法:

    1. 想办法在一台机器上拉取gcr.io/google_containers/pause-amd64:3.0

    2. 拉取成功后在通过打tag推送到私有仓库中

    3. minikube ssh登录到minikube节点中

    4. docker login , docker pull镜像后,重新tag成gcr.io/google_containers/pause-amd64:3.0

    之后就能正常启动这个test pod了。

    相关文章

      网友评论

      本文标题:k8s初游: minikube启动docker镜像

      本文链接:https://www.haomeiwen.com/subject/zckusttx.html