前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发者如何快速搭建本地 Kubernetes 集群?Minikube趟坑记录

开发者如何快速搭建本地 Kubernetes 集群?Minikube趟坑记录

原创
作者头像
JFrog杰蛙科技
修改2019-12-26 18:20:30
1.5K0
修改2019-12-26 18:20:30
举报
文章被收录于专栏:JFrog杰蛙DevOps

一、 背景

为啥要在本地搭建 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 环境安装:

使用官方地址进行一键安装:

o 坑点 :二进制包下载需访问外国网站

官方文档给的下载地址需要访问谷歌的服务器storage.googleapis.com,有时候下载容易失败,可以切换到阿里云的下载地址:

该地址亲测可用

· 启动 Minikube:

使用官网文档启动:Minikube Start,集群可以正常启动。

o 坑点 :镜像源指向了 gcr.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 镜像仓库,一般企业内部都有私有镜像库。

o 坑点 :指定私有镜像库不生效

笔者使用的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 可以正常运行。

o 坑点: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 重启也不会丢失数据。

o 坑点:挂载目录写失败

当挂创建好/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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 背景
  • 二、 搭建趟坑之旅
  • 三、 小结
  • 四、 附录
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档