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

栏目: IT技术 · 发布时间: 4年前

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

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

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

  • 坑点 :二进制包下载需翻墙

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

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

该地址亲测可用。

  • 启动 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”

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

配置完之后镜像拉取默认会从私有镜像仓库寻找镜像。

  • 从私有镜像仓库拉取镜像

启动 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 通过密钥登录私有镜像仓库,拉取镜像。

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

配置好私有镜像仓库之后,你的Pod 镜像拉取速度是秒级的。

  • 启动应用-Jenkins

写一个 Jenkins 的部署 yaml 文件,让它运行在 Kubernetes 集群里。

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

Jenkins 可以正常运行。

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

  • 坑点:Pod 重启时候,Jenkins 数据没了?

很多应用的配置文件是需要放到 Pod 之外进行管理的,比如 Jenkins。这就需要 Minikube 支持挂载目录。Minikube 官方提供了对挂载目录的支持,默认/data 目录是在重启 Minikube 之后,文件也会保留的目录,可以在/data 目录下创建Jenkins_home目录,然后在Kubernetes 里声明 PV,类型为 hostPath,挂载这个目录。

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

声明好这个持久化卷之后,就可以在 Jenkins 的部署 yaml 文件里通过 PVC 来使用这个目录。

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

上图可以看到我们把 Jenkins pod 里的/var/Jenkins_home 目录映射到了 Pod 外部,也就是 Minikube 主机上的/data/Jenkins-home,这样即使 Pod 重启,Minikube 重启也不会丢失数据。

  • 坑点:挂载目录写失败

当挂创建好/data/Jenkins-home目录之后,默认只有 root 用户有写权限,Jenkins Pod 启动起来之后,会因为无法写入配置文件而启动失败,此时需要将/data/Jenkins-home的权限赋予 docker 用户,再次启动 pod 即可正常运行。

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

  • 访问服务

当 Jenkins Pod 运行起来之后,可以通过 Jenkins service 的 nodePort 暴露的 31081进行访问,这里注意 ip 是 Minikube 的 ip 地址:

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

三、小结

通过 Minikube 能够实现开发者微服务的本地快速部署,对自己开发的功能,接口进行本地的快速验证,大大提升开发者的交付质量和效率。

四、附录

文中用到的代码仓库在这里,欢迎想动手实践的同学进行 clone https://github.com/alexwang66/sample-microservices-k8s

更多精彩内容可以专注我们的在线课堂

微信搜索公众号:jfrogchina 获取课程通知


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js开发实战

Node.js开发实战

[美] Jim R. Wilson / 梅晴光、杜万智、陈琳、纪清华、段鹏飞 / 华中科技大学出版社 / 2018-11-10 / 99.90元

2018年美国亚马逊书店排名第一的Node.js开发教程。 . Node.js是基于Chrome V8引擎的JavaScript运行环境,它采用事件驱动、非阻塞式I/O模型,具有轻量、高效的特点。Node.j s 工作在前端代码与 数据存储层之间,能够提高web应用的工作效率和 响应速度。本书以最新版Node.js 8为基础,从实际案例出发 讲解Node.js的核心工作原理和实用开发技......一起来看看 《Node.js开发实战》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具