使用 minikube 搭建 Kubernetes 实验环境

使用 minikube 搭建 Kubernetes 实验环境

个人操作笔记,仅供参考

系统环境及应用版本

  • Debian 9
  • Kubernetes 1.17.0
  • Docker 18.09.3
  • minikube 1.6.2

前言

最近由于在家闲的慌,就找点事做,准备学习一下 K8S。K8S 这种运维技术最重要的就是实验环境,官方也推荐使用 minikube 搭建 K8S 的实验环境,但是由于国内网络环境的原因,安装官方指南肯定是不能一步到位的,这篇文章就是考虑了国内的网络环境使用各种国内加速站点力求一步到位成功安装 minikube。安装成功后会使用 minikube 创建一个 vm-driver=none 的集群并运行 echoserver 服务进行测试。

在这里做出的保证是使用干净的 Debian 9 ( Debian 9.11 dvd1 ISO 下载链接 ) 虚拟机按步骤执行到最后一步是可以看到测试结果的。

下载与安装环境

这部分会结合国内的网络环境下载和安装必要的组件

安装 kubectl

安装 kubectl 将使用阿里云的镜像进行加速

先检查是否有单独的 /etc/apt/sources.list.d/kubernetes.list 文件,没有的话先手动创建一个

touch /etc/apt/sources.list.d/kubernetes.list

然后执行下列命令安装 kubectl

apt-get update && apt-get install -y apt-transport-https curl

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat </etc/apt/sources.list.d/kubernetes.list
deb  https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  

apt-get update

apt-get install -y kubectl=1.17.0-00 kubeadm=1.17.0-00 kubelet=1.17.0-00

下载与安装 minikube.deb

下面提供三个下载地址供下载,其中第三个是我搬运到 CSDN 下载站的,前两个网络环境不好的话会下载得比较慢。

  1. minikube Github Release 页面
  2. minikube_1.6.2.deb 官方下载链接
  3. minikube_1.6.2.deb CSDN 免积分下载链接

下载完对应的资源后执行下面的命令完成 minikube 的安装

dpkg -i minikube_1.6.2.deb

安装 Docker CE 18.09.3

由于 Kubernetes 1.17.0 只适配到 Docker 18.09 所以安装的时候需要指定 Docker 18.09 的版本

# step 1: 安装必要的一些系统工具
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -

# Step 3: 写入软件源信息
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"

# Step 4: 更新并安装Docker-CE
apt-get -y update
apt-get -y install docker-ce=5:18.09.9~3-0~debian-stretch

拉取必要的镜像

在 minikube 启动一个集群的时候需要使用 k8s.gcr.io 站点下的一些镜像,很不幸,这个站点国内并不能顺畅访问,可以借助 azure 提供的加速来进行拉取后再重新给镜像打 tag

需要的镜像如下:

  • k8s.gcr.io/kube-controller-manager:v1.17.0
  • k8s.gcr.io/kube-scheduler:v1.17.0
  • k8s.gcr.io/kube-apiserver:v1.17.0
  • k8s.gcr.io/kube-proxy:v1.17.0
  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/etcd:3.4.3-0
  • k8s.gcr.io/coredns:1.6.5

使用下面命令从 azure 站点拉取镜像

docker pull gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google-containers/pause:3.1
docker pull gcr.azk8s.cn/google-containers/etcd:3.4.3-0
docker pull gcr.azk8s.cn/google-containers/coredns:1.6.5

然后使用下面命令重新给刚拉取的镜像打标签

docker tag gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
docker tag  gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag  gcr.azk8s.cn/google-containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag  gcr.azk8s.cn/google-containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

测试

使用 minikube 启动一个集群

这里会用 bare-metal 的形式启动一个集群,使用命令如下

minikube start --vm-driver=none

如下图所示,出现 Done! kubectl is now configured use "minikube" 则表明安装成功。

使用 minikube 搭建 Kubernetes 实验环境_第1张图片
minikube 创建集群成功

可以使用下面命令将默认的集群模式改为 none

minikube config set vm-driver none

然后使用下面命令查看 minikube 的状态

minikube status

部署一个服务

接下来这部分会使用 echoserver 创建一个基本的服务验证 minikube 已经部署完成并能正常使用。

依次执行下列命令完成服务的部署:

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikube service hello-minikube

执行完之后会显示具体映射的端口

使用 minikube 搭建 Kubernetes 实验环境_第2张图片
minikube service 结果

如果不是使用 root 用户启动的话会自动打开浏览器,如果打开浏览器失败,就使用 curl 命令请求途中的 URL 验证服务正常运行

curl http://10.0.2.15:30769

请求成功的话能正确返回信息

使用 minikube 搭建 Kubernetes 实验环境_第3张图片
curl 测试

FAQ

  1. 为什么需要手动拉取镜像?

如果不手动拉取镜像在国内的网络环境下,在执行 minikube start 时会出现下面的错误

使用 minikube 搭建 Kubernetes 实验环境_第4张图片
minikube start 错误

就是因为从 k8s.gcr.io 国内不能访问,所以需要手动从其他地方拉取镜像再命名为 k8s.gcr.io 的镜像。

参考资料

[1] minikube Getting Start

[2] minikube Examples

[3] minikube 所需镜像拉取失败解决方法

[4] aliyun Docker CE 镜像使用方法

[5] aliyun Kubernetes 镜像使用方法

你可能感兴趣的:(使用 minikube 搭建 Kubernetes 实验环境)