minikube简介
众所周知,由于 Kubernetes 部署较为复杂,使得广大开发者和运维人员学习和试用 Kubernetes 的门槛很高。光是部署一套 Kubernetes 集群,就需要部署大量的组件,花费精力较大。为了降低用户体验 Kubernetes 的门槛,Minikube 项目应运而生。它是 Github 上的一个开源项目,提供了一键安装的 Kubernetes 本地集群,支持 MacOS、Linux、Windows。Minikube 简化开发者部署自己的服务到 Kubernetes的流程。
Minikube可以在一台主机上快速搭建单节点Kubenetes集群。大大方便我们初学者对kubernetes的学习。并且通过 Minikube 实现开发者微服务的本地快速部署,能够对自己开发的功能、接口进行本地的快速验证,大大提升开发者的交付质量和效率。
实验环境
Ubuntu 18.04
docker 19.03.5
minikube 1.6.2
安装流程
安装minikube之前,要首先确认是否支持虚拟化,然后安装virtualbox、kubectl和docker。
确认是否支持虚拟化
因为minikube创建K8S虚拟机是通过Virtualbox来实现的,所以要确认是否支持虚拟化,然后安装virtualbox。否则一切都前功尽弃。
egrep -q 'vmx|svm' /proc/cpuinfo && echo yes || echo no
如果返回结果是yes,则可进行下一步。
如果是no:
- 如果是在虚拟机内跑Ubuntu,则需要确认虚拟机是否支持嵌套虚拟化功能。如果支持,则将其打开。
- 如果是在物理机上运行Ubuntu,则需要确认BIOS的硬件虚拟化功能是否打开。
安装virtualbox
可到官网下载 virtualbox 安装包安装。
如果安装不成功,可先安装依赖库
sudo apt-get install libqt5x11extras5 libsdl1.2debian
安装kubectl
根据官网安装说明,ubuntu安装kubectl可使用以下命令
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
此外,可用snap安装
snap install kubectl --classic
安装docker
官方指南Get Docker Engine - Community for Ubuntu
中文指南Ubuntu Docker 安装
安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_1.6.2.deb \
&& sudo dpkg -i minikube_1.6.2.deb
运行minikube version
,显示成功安装
运行
因为笔者的Ubuntu是运行在物理机上的,所以使用–vm-driver=virtualbox 运行minikube。如果Ubuntu是运行在虚拟机上的,可以用–vm-driver=none。配置镜像为网易镜像。
NOTE: Minikube 也支持 --vm-driver=none 选项来在本机运行 Kubernetes 组件,这时候需要本机安装了 Docker。此外 none 驱动会运行一个不安全的API Server,会导致安全隐患,不建议在个人工作环境安装。从1.5.0版本开始,Minikube缺省使用本地最好的驱动来创建Kubernetes本地环境。
minikube start --vm-driver=virtualbox --registry-mirror=http://hub-mirror.c.163.com
minikube start主要做了这些事:
- 创建了名为minikube的虚拟机,并在虚拟机中安装了Docker容器。(实际就是Docker-machine)
- 下载了Kubeadm与Kubelet工具
- 通过Kubeadm部署Kubernetes集群
- 进行各组件间访问授权、健康检查等工作
- 在用户操作系统安装并配置kubectl
一旦启动起来,就可以通过kubectl 像普通k8s集群与minikube创建的集群交互了。
命令
启动本地集群
minikube start
停止本地集群
minikube stop
删除本地集群
minikube delete
获取本地集群状态
minikube status
访问集群中运行的k8s dashboard
minikube dashboard