一 Minikube介绍

1.1 概述

Minikube是一种可以在本地轻松运行Kubernetes的工具。Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户测试使用。特点是不能启动生产集群,没有高可用性的单节点机器。
使用Minikube CLI管理虚拟机上的Kubernetes环境,比如:启动,停止,删除,获取状态等。

1.2 Minkube功能

Minikube支持Kubernetes功能,例如:
  • DNS
  • NodePorts
  • ConfigMaps和Secrets
  • 仪表板
  • Container Runtime:Docker,rktCRI-Ocontainerd
  • 启用CNI(容器网络接口)
  • 入口

1.3 架构示意

Minikube利用本地虚拟机环境部署Kubernetes,其基本架构如下图所示:

二 Minikube安装

2.1 前置条件

必须在计算机的BIOS中启用VT-x或AMD-v虚拟化。
安装kubetcl工具,参考《附001.kubectl介绍及使用》。

2.2 正式安装

 [root@k8s ~]# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& sudo install minikube-linux-amd64 /usr/local/bin/minikube
 
提示:Minkube相关源位于国外,也可采用国内阿里修改的Minkube,操作如下:
 [root@k8s ~]# curl -Lo \
minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v0.25.2/minikube-linux-amd64 && \
chmod +x minikube && sudo mv minikube /usr/local/bin/
 

三 使用Minkube启动Kubernetes

3.1 前期准备

安装virtualbox:
 [root@k8s ~]# yum -y update
[root@k8s ~]# yum -y install kernel-devel
[root@k8s ~]# vi /etc/yum.repos.d/virtualbox.repo
[virtualbox]
name=Oracle Linux / RHEL / CentOS-$releasever / $basearch - VirtualBox
baseurl=http://download.virtualbox.org/virtualbox/rpm/el/7/$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.virtualbox.org/download/oracle_vbox.asc
[root@k8s ~]# yum -y install VirtualBox-5.2
[root@k8s ~]# sudo /sbin/vboxconfig #测试
 

提示:可使用kvm或virtualbox(默认)启动虚拟节点,在此节点上部署Kubernetes集群,国内环境无法正常下载相应驱动,若采用none,即宿主机自身docker环境进行部署,需要提前安装docker。

3.2 快速构建

 [root@k8s ~]# minikube start
提示:如果要更改VM驱动程序,请添加相应的--vm-driver=xxx标志minikube start,如minikube start --vm-driver hyperv,如下为使用kvm2驱动部署示例:
 root@k8s01:~# sudo apt -y install libvirt-clients libvirt-daemon-system qemu-kvm
#安装KVM2前置组件
root@k8s01:~# curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && sudo install docker-machine-driver-kvm2 /usr/local/bin/
#安装KVM2
root@k8s01:~# minikube start --vm-driver kvm2 #本实验使用kvm驱动
 
提示:更多驱动安装文档参考:https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver
 [root@k8s ~]# kubectl cluster-info			#查看集群Master信息
[root@k8s ~]# kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.10 --port=8080
[root@k8s ~]# kubectl expose deployment hello-minikube --type=NodePort
[root@k8s ~]# kubectl get pod #查看pod节点
[root@k8s ~]# kubectl get all --namespace=kube-system #查看部署组件
 

3.3 确认验证

 [root@k8s ~]# minikube ssh			#进入集群虚机
$ docker ps #查看所运行的容器
[root@k8s ~]# minikube dashboard #打开Kubernetes web界面
 

四 Minkube常见操作

4.1 常见操作

 [root@k8s ~]# minikube version		#查看安装Minkube版本
[root@k8s ~]# minikube status #查看状态
[root@k8s ~]# minikube start #启动一个Kubernetes
 
提示:minikube start可用于启动/创建集群,并配置运行单节点Kubernetes集群的虚拟机,同时会将kubectl安装配置为与此集群通信。
 [root@k8s ~]# minikube start --kubernetes-version v1.7.3
#指定特定版本启动Kubernetes。
root@k8s01:~# minikube stop #停止一个Kubernetes
 
提示:minikube stop将关闭minikube虚拟机,但会保留所有群集状态和数据。再次启动群集会将其恢复到之前的状态。
 [root@k8s ~]# minikube ip		#查看内部虚拟机启动的IP
[root@k8s ~]# minikube ssh #进入虚机所构建的集群内部
[root@k8s ~]# minikube logs #查看运行log
[root@k8s ~]# minikube addons list #查看addons的列表
 
 root@k8s01:~# minikube start --kubernetes-version v1.7.3    #启动指定版本的Kubernetes
root@k8s01:~# minikube delete #关闭集群并删除minikube虚拟机,不保留任何虚机数据或状态,但~/.minikube目录会存在缓存文件。
root@k8s01:~# minikube dashboard #启动Kubernetes仪表盘
 

4.2 部分优化

为了能够在宿主机上使用内部docker相关命令,可进行以下操作::
 [root@k8s ~]# eval $(minikube docker-env)
[root@k8s ~]# docker ps
 
 
参考文档:https://yq.aliyun.com/articles/221687
https://github.com/kubernetes/minikube/blob/v0.30.0/README.md
https://kubernetes.io/docs/setup/minikube/

附002.Minikube介绍及使用的更多相关文章

  1. 附001.kubectl介绍及使用

    一 kubectl介绍 1.1 kubectl概要 kubectl控制Kubernetes集群管理器,使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序.使用k ...

  2. 附002.Nginx全系列大总结

    Nginx全系列总结如下,后期不定期更新. 欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识. 若发现任何错误或纰漏,留言反馈或右侧添加本 ...

  3. QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)

    背景: QT在用户关闭窗口(直接点击"X"键)时,程序一般都需要做一些善后的事情,就我现在的程序来说,既关闭USB.如何实现? 正文: 首先,在对应窗体的".h" ...

  4. Python学习(002)--Python介绍

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  5. 002 python介绍/解释器安装/变量/常量/内存管理

    编程语言介绍 机器语言 :直接用计算机二进制指令编写程序,直接控制硬件 汇编语言:用英文标签取代二进制指令编写程序,本质也是直接控制硬件 高级语言:用人能理解的表达方式来编写程序,无需考虑硬件的操作细 ...

  6. 附002.Docker常见命令

    # docker --help Usage: docker [OPTIONS] COMMAND [arg...] docker daemon [ --help | ... ] docker [ -h ...

  7. 【转】exec xargs的区别 另附eval命令介绍

    -exec:  对符合条件的文件执行所给的Linux 命令,执行exec后面的shell脚本.脚本中,{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在命令中还 ...

  8. 附002.Nginx代理相关模块解析

    一 ngx_http_proxy_module模块 1.1 proxy_pass配置 proxy_pass URL; Context: location, if in location, limit_ ...

  9. 附024.Kubernetes全系列大总结

    Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...

随机推荐

  1. Dubbo 2.7新特性之异步化改造

    这是why技术的第1篇原创文章 我与Dubbo的二三事 我是2016年毕业的,在我毕业之前,我在学校里面学到的框架都是SSH,即struts+spring+hibernate,是的你没有看错,在大学里 ...

  2. JS系列:js数据类型的转换

    数据类型的转换[基本数据类型]数字 number字符串 string布尔 boolean空 null未定义 undefined[引用数据类型]对象 object普通对象 {}数组对象 [](Array ...

  3. 【算法】331- JS洗牌算法

    点击上方"前端自习课"关注,学习起来~ 最近的一个塔罗牌项目中,有一个洗牌的需求,其实也就是随机打乱数组,遂网上搜了下,再此做个整理- 塔罗牌 举例来说,我们有一个如下图所示的数组 ...

  4. screen虚拟终端工具

    说明:有时候我们要执行一个命令或脚本,需要几小时甚至几天,但是不能中断,有时想查看当前输出信息的时候,可以将它丢到后台运行,但是后台运行却无法显示或输出相关信息出来:我们可以使用一个虚拟终端工具scr ...

  5. 利用 Redis 来优化功能部署和错误分类

    来源:Redislabs 作者:Shabih Syed 翻译:Kevin (公众号:中间件小哥) 为了让系统运行更流畅,又避免 Knights Capital 在 2012 年犯下的 4.6 亿美元的 ...

  6. JS基础-事件循环机制

    从一道题浅说 JavaScript 的事件循环 原文链接: https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/7 ...

  7. Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?

    JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存.它在JVM启动的时候被创建.对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收. 堆内存是由存活和死亡的对象组成的.存活的对象是应 ...

  8. 使用Portainer集中管理多地域内网运行的Docker实例

    1. 单机运行的Docker 容器化部署是现在进行时,开源应用大多数支持容器化部署 在少量机器的场景下往往采用docker cli 和 docker-compose管理,进行"单机式管理&q ...

  9. 微服务架构 SpringBoot(二)

    第二天内容:想来想去玩个ssm小demo吧 1.创建表 2..引入相关mybatis 数据库jar: <!--mybatis --> <dependency> <grou ...

  10. 聊一聊 webpack 中的 preloading 和 Prefetching

    聊一聊 webpack 中的 preloading 和 Prefetching 提到 Preloading 和 Prefetching 就不得不先说一下代码分割,通过下面的例子我们来说明为什么需要代码 ...