在部署minikube遇到了奇奇怪怪的问题。部署官方地址提供的最新下载安装包,首先要会科学上网,如果不能科学上网,那就到阿里云上下载阿里修改过的相关版本,阿里上的版本可以在国内安装没问题,不过版本会比官方稍慢一点,能慢个3个小的编译版本。
阿里版本的安装可看这篇文章
https://yq.aliyun.com/articles/221687
本文主要介绍的是安装官方网站的安装包,首先要科学上网。
下载安装Kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
下载minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
sudo cp minikube /usr/local/bin && rm minikube
在启动minikube时需要先下载几个镜像,这个几个镜像在国内无法下载,即使翻墙也不行。还好Docker仓库对这些镜像进行了同步克隆。上边地址下载的是官方的最新地址。本文实践的minikube版本为v.0.35.0 kubectl版本为v.1.13.4,当前kubelet对于Docker能兼容的最新版本是18.06,本文实践用使用的docker版本18.03.1-ce
从Docker仓库下载
sudo docker pull mirrorgooglecontainers/kube-apiserver:v1.13.4
sudo docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.4
sudo docker pull mirrorgooglecontainers/kube-scheduler:v1.13.4
sudo docker pull mirrorgooglecontainers/kube-proxy:v1.13.4
sudo docker pull mirrorgooglecontainers/pause:3.1
sudo docker pull mirrorgooglecontainers/etcd:3.2.24
sudo docker pull coredns/coredns:1.2.6
sudo docker pull mirrorgooglecontainers/kube-addon-manager:v8.6
sudo docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
sudo docker pull dieudonnecc/storage-provisioner:v1.8.1
使用Docker tag标签对以下的标记重命名成google仓库中的标签名,这样在minikube需要加载需要的镜像时就可以从本机进行加载了,就绕过去了从google的镜像仓库拉取的过程。
sudo docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4 k8s.gcr.io/kube-proxy:v1.13.4
sudo docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4 k8s.gcr.io/kube-scheduler:v1.13.4
sudo docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4 k8s.gcr.io/kube-apiserver:v1.13.4
sudo docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4 k8s.gcr.io/kube-controller-manager:v1.13.4
sudo docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
sudo docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
sudo docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
sudo docker tag docker.io/mirrorgooglecontainers/kube-addon-manager:v8.6 k8s.gcr.io/kube-addon-manager:v8.6
sudo docker tag docker.io/mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
sudo docker tag dieudonnecc/storage-provisioner:v1.8.1 gcr.io/k8s-minikube/storage-provisioner:v1.8.1
删除多余的镜像
sudo docker rmi mirrorgooglecontainers/kube-apiserver:v1.13.4
sudo docker rmi mirrorgooglecontainers/kube-controller-manager:v1.13.4
sudo docker rmi mirrorgooglecontainers/kube-scheduler:v1.13.4
sudo docker rmi mirrorgooglecontainers/kube-proxy:v1.13.4
sudo docker rmi mirrorgooglecontainers/pause:3.1
sudo docker rmi mirrorgooglecontainers/etcd:3.2.24
sudo docker rmi coredns/coredns:1.2.6
sudo docker rmi mirrorgooglecontainers/kube-addon-manager:v8.6
sudo docker rmi mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1
sudo docker rmi dieudonnecc/storage-provisioner:v1.8.1
在安装的版本和本文实践的版本不一致时,上边这些镜像的标签可能不一致。可以使用下边命令获得需要的镜像的全部信息
kubeadm config images list
kubeadm这个命令可以在minikube启动后安装完成kubeadm后就可以运行了。这个命令不会列出后3个镜像。后三个镜像只能通过minikube logs 看在拉取哪个镜像出问题,然后下载缺少的镜像。
启动minikube
minikube start --registry-mirror=https://registry.docker-cn.com --vm-driver="none" --v=3 --alsologtostderr
在启动的过程中会下载kubelet和kubeadm。如果在下载中出错可以从新开始多试几次就好了。要注意看日志的信息。
在安装过程失败可以执行minikube的删除命令将相关命令内容删除
minikube delete
执行成功后
部署应用并查看pods
kubectl run webapp --image=training/webapp --port=5000
kubectl get pods
添加服务暴露端口以供外网访问到容器中的web服务
kubectl expose deployment/webapp --type="NodePort" --port=5000
kubectl get services
浏览容器中的服务