内容简介:为啥要在本地搭建 Kubernetes 集群?因为开发者可以在本地快速验证自己实现的功能,接口。众所周知,由于 Kubernetes 部署较为复杂,使得广大开发者和运维人员学习和试用 Kubernetes 的门槛很高,光是部署一套 Kubernetes 集群,就需要部署大量的组件,花费精力较大。为了降低用户体验 Kubernetes 的门槛,Minikube 项目应运而生,它是 Github 上的一个开源项目,提供了一键安装的 Kubernetes 本地集群,支持 MacOS,Linux,Windows。谁
一、背景
为啥要在本地搭建 Kubernetes 集群?因为开发者可以在本地快速验证自己实现的功能,接口。众所周知,由于 Kubernetes 部署较为复杂,使得广大开发者和运维人员学习和试用 Kubernetes 的门槛很高,光是部署一套 Kubernetes 集群,就需要部署大量的组件,花费精力较大。为了降低用户体验 Kubernetes 的门槛,Minikube 项目应运而生,它是 Github 上的一个开源项目,提供了一键安装的 Kubernetes 本地集群,支持 MacOS,Linux,Windows。
谁需要 Minikube ?
- 本地开发 Kubernetes 应用
- 离线开发 Kubernetes 应用
- 体验最新版 Kubernetes
如果你有以上需求,可以使用 Minikube。 Minikube 大大简化了的开发者部署自己的服务到 Kubernetes,因为这个本地集群可以部署在自己的笔记本,亲测 8C16G笔记本跑起来很轻松,随时可以启停,不依赖网络连接。开发者可以在自己的笔记本里,运行Kubernetes 的 Pods,快速验证自己的服务功能是否生效。
被纳入到了 Kubernetes 官方项目里- https://github.com/kubernetes/minikube 。
二、搭建趟坑之旅
- Mac 环境安装:
使用官方地址进行一键安装:
- 坑点 :二进制包下载需翻墙
官方文档给的下载地址需要访问谷歌的服务器storage.googleapis.com,有时候下载容易失败,可以切换到阿里云的下载地址:
该地址亲测可用。
- 启动 Minikube:
使用官网文档启动:Minikube Start,集群可以正常启动。
- 坑点 :镜像源指向了io
启动Minikube 之后,运行 pod 一般都会失败,因为 Minikube 默认将它的镜像中心默认指向了 gcr.io,从这里下载过镜像的人都被它深深伤害过,可以在启动参数里指定镜像源和私有镜像库。
- 配置私有镜像仓库:
根据官方文档,在启动时加入参数:” --insecure-registry”
minikube start --insecure-registry "docker-release-local.demo.jfrog.com" --registry-mirror=https://registry.docker-cn.com
这里--insecure-registry配置的是JFrog 的本地私有 Artifactory Docker 镜像仓库,一般企业内部都有私有镜像库。
- 坑点 :指定私有镜像库不生效
笔者使用的Minikube v1.2.0 Mac 版本在启动时--insecure-registry并不生效,可以找到主机上 minikube 配置文件目录下的文件进行修改。打开文件:~/.minikube/machines/minikube/config.json,增加记录” docker-release-local.demo.jfrog.com”
配置完之后镜像拉取默认会从私有镜像仓库寻找镜像。
- 从私有镜像仓库拉取镜像
启动 Minikube 后,在 Kubernetes 集群里创建镜像中心的密钥“regcred”:
kubectl create secret docker-registry regcred --docker-server=docker-release-local.demo.jfrog.com --docker-username=admin --docker-password=*** --docker-email=wq@jfrogchina.com
在微服务的 Deployment yaml 文件里使用这个密钥即可让 Pod 通过密钥登录私有镜像仓库,拉取镜像。
配置好私有镜像仓库之后,你的Pod 镜像拉取速度是秒级的。
- 启动应用-Jenkins
写一个 Jenkins 的部署 yaml 文件,让它运行在 Kubernetes 集群里。
Jenkins 可以正常运行。
- 坑点:Pod 重启时候,Jenkins 数据没了?
很多应用的配置文件是需要放到 Pod 之外进行管理的,比如 Jenkins。这就需要 Minikube 支持挂载目录。Minikube 官方提供了对挂载目录的支持,默认/data 目录是在重启 Minikube 之后,文件也会保留的目录,可以在/data 目录下创建Jenkins_home目录,然后在Kubernetes 里声明 PV,类型为 hostPath,挂载这个目录。
声明好这个持久化卷之后,就可以在 Jenkins 的部署 yaml 文件里通过 PVC 来使用这个目录。
上图可以看到我们把 Jenkins pod 里的/var/Jenkins_home 目录映射到了 Pod 外部,也就是 Minikube 主机上的/data/Jenkins-home,这样即使 Pod 重启,Minikube 重启也不会丢失数据。
- 坑点:挂载目录写失败
当挂创建好/data/Jenkins-home目录之后,默认只有 root 用户有写权限,Jenkins Pod 启动起来之后,会因为无法写入配置文件而启动失败,此时需要将/data/Jenkins-home的权限赋予 docker 用户,再次启动 pod 即可正常运行。
- 访问服务
当 Jenkins Pod 运行起来之后,可以通过 Jenkins service 的 nodePort 暴露的 31081进行访问,这里注意 ip 是 Minikube 的 ip 地址:
三、小结
通过 Minikube 能够实现开发者微服务的本地快速部署,对自己开发的功能,接口进行本地的快速验证,大大提升开发者的交付质量和效率。
四、附录
文中用到的代码仓库在这里,欢迎想动手实践的同学进行 clone : https://github.com/alexwang66/sample-microservices-k8s
更多精彩内容可以专注我们的在线课堂
微信搜索公众号:jfrogchina 获取课程通知
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 让开发者专注于应用开发,OpenCenter 3.0 开发者预览版发布
- 让开发者专注于应用开发,OpenCenter 3.0 开发者预览版发布
- GitHub 推出开发者赚钱新利器,100% 全给开发者!
- Google开发者大会:为中国开发者和消费者推出新的工具
- OpenCenter3.0开发者预览版发布,开发者不能错过的新特性!
- 开发者的硬核福利:专为开发者而生的免费开源安全检测工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Android编程权威指南(第2版)
Bill Phillips、Chris Stewart、Brian Hardy、Kristin Marsicano / 王明发 / 人民邮电出版社 / 2016-5 / 109.00 元
Big Nerd Ranch是美国一家专业的移动开发技术培训机构。本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共34章,详细介绍了8个Android 应用。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得最前沿的开发经验。 如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始And......一起来看看 《Android编程权威指南(第2版)》 这本书的介绍吧!