minikube快速搭建k8s(一)

minikube 搭建本地k8s集群环境

minikube介绍

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

环境

  • windows 10
  • minikube 1.8.2
  • kubernetes 17.3

安装minikube

  • 使用 window包管理工具 choco 安装 minikube

    	choco install minikube
    
  • 也可以直接下载安装包 minikube

  • 安装完成后命令行输入 minikube version 如下说明安装成功
    检查minikube

创建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
    
  • 也可以选择图形界面
    minikube快速搭建k8s(一)_第2张图片
  • 启用完成后,按照提示重启电脑
  • 创建虚拟网络交换机
    minikube快速搭建k8s(一)_第3张图片
  • 创建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,安装好之后再执行,即可看到集群已经就绪
集群就绪

  • 打开dashboard
    运行 minikube.exe dashboard ,访问管理页minikube快速搭建k8s(一)_第4张图片minikube快速搭建k8s(一)_第5张图片
    至此没有异常的化,k8s单机集群就搭建完成了

万年hello

  • 配置资源
    接下来启动一个运行着web 应用的容器,资源描述如下

    	apiVersion: apps/v1
    	kind: Deployment
    	metadata:
    	  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 状态如下
    运行
    deployment

  • 暴露应用访问入口
    运行如下命令,服务暴露方式为NodePort

   	 kubectl.exe expose deployment hello-world --type=NodePort --name=node-service
  • 查看node-service
    node-serviceminikube快速搭建k8s(一)_第6张图片
    可以看到,服务通过30585 端口映射到容器的8080端口,这样我们就可以通过 30585端口访问容器内的web应用了,如下响应正常
    minikube快速搭建k8s(一)_第7张图片
    到此,通过k8s 搭建web应用就完成了

总结

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

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

参考文献

https://kubernetes.io/zh/docs/tutorials/
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
https://blog.csdn.net/daweileo/article/details/104987795

你可能感兴趣的:(运维组件)