minikube介绍

徒手搭建过k8s的同学都晓得其中的煎熬,复杂的认证,配置环节相当折磨人,出错率相当高,而minikube就是为解决这个问题而衍生出来的工具,它基于go语言开发,可以在单机环境下快速搭建可用的k8s集群,非常适合测试和本地开发,现有的大部分在线k8s实验环境也是基于minikube,如果想直接试用k8s,可直接用 play-with-k8s ,下图为minikube 创建k8s集群的简易流程

bfad13eff7541486f6842e61ca28e6a5.png

minikube 架构图

少絮叨,先上手

环境

  • windows 10
  • minikube 1.8.2
  • kubernetes 17.3

安装minikube

  • 使用 window包管理工具 choco 安装 minikube choco install minikube
  • 也可以直接下载安装包 minikube
  • 安装完成后命令行输入 minikube version 如下说明安装成功

创建k8s环境

minikube 提供了跨平台搭建k8s的能力,支持mac ,linux ,windows平台,每一个平台上也支持多种驱动架构,windows 支持docker,hyper-V,virtualBox等,由于win10已经内置了Hyper-V,这里选择Hyper-v

  • 命令行启用Hyper-v 管理员权限打开 powershell,运行如下命令 Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  • 也可以选择图形界面
  • 启用完成后,按照提示重启电脑
  • 创建虚拟网络交换机
  • 创建k8s 正常情况下运行如下命令即可 minikube start --driver=hyperv --hyperv-virtual-switch="minikube" ```
  • 使用国内镜像创建 由于网络原因,用官网源创建可能一直失败,所以切换镜像源到国内镜像,如下
  minikube.exe start  image-mirror-country='cn' --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="minikube" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

选项说明:

  • vm-driver 如果不写会自动检测,可选值 virtualbox, vmwarefusion, hyperv, vmware
  • image-mirror-country 需要使用的镜像镜像的国家/地区代码。留空以使用全球代码。对于中国大陆用户,请将其设置为 cn。
  • image-repository 用来拉取 Kubernetes 集群所需镜像的仓库
  • registry-mirror docker registry 的镜像源,集群安装后拉取镜像加速用,可以使用其它加速器地址
  • memory 虚机内存大小

这里会花一段时间去拉镜像,构建集群,耐心等待

  • 查看集群状态 正常情况下,等待一段时间,集群便搭建成功,运行如下命令,查看集群状态 minikube kubectl get nodes

首次执行会安装windows平台的kubectl,安装好之后再执行,即可看到集群已经就绪

d2f7fdadc18e0460d251c83ed1ff11c3.png

nodes

  • 打开dashboard 运行 minikube.exe dashboard ,访问管理页至此没有异常的化,k8s单机集群就搭建完成了

万年hello

  • 配置资源 接下来启动一个运行着web 应用的容器,资源描述如下
apiVersion: apps/v1 kind: Deploymentmetadata: name: hello-world spec: selector: matchLabels: run: load-balancer-example replicas: 2 template: metadata: labels: run: load-balancer-example spec: containers: - name: hello-world image: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0 ports: - containerPort: 8080 protocol: TCP

该文件简单描述了一个k8s deployment 资源的属性,包含一个deployment,一个replicaSets,每一个replicaSets 包含两个Pod,每个Pod中运行一个容器,容器的镜像源是registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0,容器端口8080

  • 启动应用 保存该文件为 hello-application.yaml,运行如下命令kubectl.exe apply -f .hello-application.yaml,提示创建成功
  • 查看deploymen 状态如下 运行
  • 暴露应用访问入口 运行如下命令,服务暴露方式为NodePort
    kubectl.exe expose deployment hello-world --type=NodePort --name=node-service
  • 查看node-service 可以看到,服务通过30585 端口映射到容器的8080端口,这样我们就可以通过 30585端口访问容器内的web应用了,如下响应正常 到此,通过k8s 搭建web应用就完成了

总结

搭建过程中出过不少异常,需要一点一点分析或找资料解决,但相对全程徒手搭建,效率提高不少,本地测试玩耍必备,下面大概了解下我们搭建完成后都产生了什么资源

  • 虚机 minikube创建了一台虚机,用来搭建linux环境
  • 容器 minikube ssh 登录,docker ps 可以看到很多运行中的容器,包括web应用,k8s dashboard, etcd,coredns,storage,scheduler,apiserever,controller等,正是这些资源之间相互协作,帮我们完成快速部署应用,后续继续探究
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐