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

1.背景

为啥要在本地搭建 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
    2.搭建趟坑之旅
    ?Mac 环境安装:
    使用官方地址进行一键安装:
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 \
    && sudo install minikube-darwin-amd64 /usr/local/bin/minikube

?启动 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=*** [email protected]

在微服务的 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 地址:

3.小结
通过 Minikube 能够实现开发者微服务的本地快速部署,对自己开发的功能,接口进行本地的快速验证,大大提升开发者的交付质量和效率。
4.附录
文中用到的代码仓库在这里,欢迎想动手实践的同学进行 clone:https://github.com/alexwang66/sample-microservices-k8s

原文地址:https://blog.51cto.com/jfrogchina/2446801

时间: 2024-07-30 09:25:59

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

使用 Docker 搭建本地 Hadoop 集群

终于开始学习hadoop了,虽然是学校开课了才开始跟着学校的课程学,至少也是开始了.首先要做的就是搭建好一个hadoop的环境,需要三台主机,配置一个master两个slave的架构.老师让我们用vbox来做,但是个人觉得虚拟机太慢了,而且还要开三个,太亏.刚好最近开始接触docker,准备就在docker的环境下搭建hadoop环境. 安装docker 可以考虑使用国内的加速镜像 daocloud.io 注册后可以看到如何使用 由于我已经通过官网的方法安装了,这里就只记录下我的操作: curl

kubernetes集群部署

鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,coreos,aws等iaas平台,部署起来也相当的方便.鉴于网上众多资料基于的是不少老版本,本篇文章针对最新的kubernetes及其依赖组件的部署简要阐述.通过本文可以比较粗暴的运行你的kubernetes集群,要优雅还需要更多的工作.部署主要分为三步: 1.准备机器并打通网络 如果要部署kube

向Kubernetes集群添加/删除Node

向Kubernetes集群添加/移除Node Minion Node操作前准备 #关闭防火墙 systemctl stop firewalld #禁止防火墙开机启动 systemctl disable firewalld #检查selinux getenforce Disabled #端口检查 Kubernetes集群中添加Node在kubeadm init初始化操作完成时,系统最后给出了将节点加入集群的命令: kubeadm join 10.0.0.39:6443 --token 4g0p8w

部署kubernetes集群

一.部署说明最近很多学生问我kubernetes的技术问题,回答了很多次,突然间想我是不是做一些帖子,可以让我的学生能看到,身边想学习的人也都能看到呢!于是我打算开始写这边文章,如果访问量大,学习的人多,我会每周更新一篇的速度去将kubernetes的技术一直更新下去.随着云计算的发展,容器技术不断的更新,发展.从docker到kubernetes,企业也在不断的升级自己的架构,代表公司就是我们熟悉的京东,从2015年开始不断的使用容器来承载自己的业务.2018年618,60%的业务都是由kub

《二》Kubernetes集群部署(master)-搭建单集群v1.0

搭建单集群平台的环境规划 多master环境规划 官方提供的三种部署方式 minikubeMinikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用.部署地址:https://kubernetes.io/docs/setup/minikube/ kubeadmKubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群.部署地址:https://kubernetes.

Kubernetes集群搭建过程中遇到的问题

1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating "nginx-pod.yaml": Pod "nginx" is forbidden: no API token found for service account default/default, retry after the token is automatically

基于 CentOS 7 搭建kubernetes集群

基于Centos7构建Kubernetes平台 一.实验环境 3台centos7的主机: master  192.168.111.131部署etcd,kube-apiserver,kube-controller-manager,kube-scheduler 4个应用. node01  192.168.111.130  部署docker,kubelet, kube-proxy  3个应用 node02  192.168.111.129  部署docker,kubelet, kube-proxy  

kubeadm搭建kubernetes集群

一.环境准备首先我的三个ubuntu云主机的配置如下 cpu数量 内存 磁盘 Ubuntu 2 8G 20G 18.04LTS 而且能保证三台机器都能连接外网这里的所有命令都是在root用户下操作的二.安装 1.在所有的节点上安装Docker和kubeadm [email protected]:~# apt-get install curl -y [email protected]:~# curl -s https://packages.cloud.google.com/apt/doc/apt-

Shell脚本快速部署Kubernetes集群系统

本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本. 运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog.51c