使用 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 <<EOF >/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 创建集群成功

可以使用下面命令将默认的集群模式改为 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 service 结果

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

curl http://10.0.2.15:30769

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

curl 测试

FAQ

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

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

minikube start 错误

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

参考资料

[1] minikube Getting Start

[2] minikube Examples

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

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

[5] aliyun Kubernetes 镜像使用方法

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容