使用Minikube部署本地Kubernetes集群(二十八)
前言
使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题。
在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建。如果搭建过程中出现错误,建议使用minikube delete之后再重新搭建。
目录
使用Minikube部署本地Kubernetes集群
1. 什么是Kubernetes集群?
2. 使用Minikube创建本地Kubernetes实验环境
1)什么是Minikube?
2)Minikube支持的功能
3)Windows 10下安装
4)打开Minikube可视化面板
5)常见错误
6)Linux下安装
使用Minikube部署本地Kubernetes集群
什么是Kubernetes集群?
Kubernetes 用于协调高度可用的计算机集群,这些计算机被连接作为单个工作单元。 Kubernetes允许用户将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要被容器化。容器化应用程序比过去的部署模型更灵活和可用——而不是将应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。
Kubernetes 集群由两种类型的资源组成:
- Master:即集群的调度节点,负责管理集群,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。
- Nodes:即应用程序实际运行的工作节点,可以是物理机或者虚拟机。每个工作节点都有一个 Kubelet(节点代理),它是管理节点并与Kubernetes Master节点进行通信的代理。节点上还应支持容器操作,例如 Docker或rkt。一个 Kubernetes 工作集群至少有三个节点。
当我们在Kubernetes上部署应用程序时, Master会启动应用程序容器,并调度容器在集群的Nodes上运行,而Nodes使用Master公开的Kubernetes API与Master进行通信。最终用户还可以直接使用 Kubernetes 的API与集群交互。
使用Minikube创建本地Kubernetes实验环境
在大部分情况下,我们需要在本地玩转Kubernetes,以便于Kubernetes应用程序的开发和调测。搭建完整的Kubernetes集群毕竟太重,那么使用Minikube则是不二选择。
什么是Minikube?
Minikube 是一个轻量级的Kubernetes实现,会在本机创建一台虚拟机,并部署一个只包含一个节点的简单集群。 Minikube适用于Linux, Mac OS和Windows系统。Minikube CLI提供了集群的基本引导操作,包括启动、停止、状态和删除。
Minikube的目标是成为本地Kubernetes应用程序开发的最佳工具,并支持所有适合的Kubernetes功能!
官方GitHub地址:https://github.com/kubernetes/minikube
Minikube支持的功能
Minikube支持以下Kubernetes功能:
- DNS
- NodePorts(可使用“minikube service”命令来管理)
- ConfigMaps和Secrets
- 仪表板(Dashboards,minikube dashboard)
- 容器运行时:Docker,rkt,CRI-O和containerd
- Enabling CNI(容器网络接口)
- Ingress
- LoadBalancer(负载均衡,可以使用“minikube tunnel”命令来启用)
- Multi-cluster(多集群,可以使用“minikube start -p <name>”命令来启用)
- Persistent Volumes
- RBAC
- 通过命令配置apiserver和kubelet
Windows 10下安装
1.安装要求
Windows必须支持虚拟化,可以执行“systeminfo”命令来确认。如果支持虚拟化,则【Hyper-V要求】一栏如下图所示:
C:\Users\Lys_Desktop\Documents\Tencent Files\512982554\Image\C2C\M%YWM2VE`R)$F2KF`{~M{LU.jpg
如果已经装了Hyper-V,则提示如下:
2.启用Hyper-V(推荐)
可以通过【程序和功能】=》【打开或关闭 Windows 功能】=》勾选【Hyper-V】来启用Hyper-V,也可以通过管理员执行以下Powershell脚本:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
如果不支持启用Hyper-V,大家可以安装“VirtualBox”,而且目前“VirtualBox”是官方默认的虚拟机管理程序。
3.安装Minikube和kubectl
- 使用Chocolatey安装Minikube(推荐)
Chocolatey我们前面已经进行了讲解,这里面我们可以使用Chocolatey以管理员身份一键安装Minikube:
choco install minikube kubernetes-cli
PS C:\WINDOWS\system32> choco install minikube kubernetes-cli
Chocolatey v0.10.11
Installing the following packages:
minikube;kubernetes-cli
By installing you accept licenses for the packages.
Minikube v1.1.1 [Approved]
minikube package files install completed. Performing other installation steps.
ShimGen has successfully created a shim for minikube.exe
The install of minikube was successful.
Software install location not explicitly set, could be in package or
default install location if installer.
kubernetes-cli v1.14.3 already installed.
Use --force to reinstall, specify a version to install, or try upgrade.
Chocolatey installed 1/2 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Warnings:
- kubernetes-cli - kubernetes-cli v1.14.3 already installed.
Use --force to reinstall, specify a version to install, or try upgrade.
- 通过下载安装包安装
下载地址:https://github.com/kubernetes/minikube/releases/
需下载【minikube-windows-amd64.exe】,下载完成后,需要重命名为“minikube.exe”进行使用。
4.启动Minikube
Minikube在Windows上支持使用VirtualBox和Hyper-V,这里我们使用Hyper-V进行实践。
我们需要执行“minikube start”命令来启动Minikube。这个过程中会下载Minikube ISO镜像,如果Minikube ISO镜像下载失败,可复制链接手工下载或者配置容器代理再试。如果是手工下载,下载后,请将ISO文件放置C:\Users\<用户名>\.minikube\cache\iso目录,然后再次执行“start”命令。具体命令如下所示:
需使用管理员执行以下Powershell脚本:
minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096
其中,--registry-mirror参数用于设置镜像服务地址,这里设置为国内镜像服务地址。--vm-driver参数设置了虚拟机类型,这里我们使用Hyper-V,默认是VirtualBox。--memory参数设置了虚拟机内存大小。执行此脚本后,会使用默认的Hyper-V的虚拟交换机,我们也可以使用参数--hyperv-virtual-switch进行指定指定的虚拟网络交换机。虚拟网络交换机设置如下图所示:
在中国,由于网络和防火墙的原因,通常会无法拉取k8s相关镜像或者下载速度过于缓慢,因此,我们可以通过参数--image-repository来设置Minikube使用阿里云镜像。如下列命令:
minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
PS C:\WINDOWS\system32> minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
* minikube v1.1.1 on windows (amd64)
* using image repository registry.cn-hangzhou.aliyuncs.com/google_containers
* Creating hyperv VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...
* Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6
* Pulling images ...
* Launching Kubernetes ...
* Verifying: apiserver proxy etcd scheduler controller dns
* Done! kubectl is now configured to use "minikube"
成功之后,我们就可以使用kubectl来操作集群了,比如查看当前所有pod的状态:
kubectl get pods --all-namespaces
刚才我们使用Minikube创建了默认的集群,我们还可以使用Minikube创建新的集群,比如:
minikube start -p mycluster
值得注意的是,Minikube搭配Hyper-V使用需要禁用动态内存(Docker for Windows初始化时指定禁用了相关虚拟机使用动态内存),执行Powershell脚本如下所示:
Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false。
在Windows 10下,我们还可以使用docker-desktop来启用k8s,不过由于网络的原因,并不是很推荐:
打开Minikube可视化面板
成功启动Minikube之后,我们就可以通过以下命令来打开Minikube可视化面板:
minikube dashboard
启用面板
PS C:\WINDOWS\system32> minikube dashboard
* Enabling dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:3173/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...
常见错误
启动Minikube时提示错误如下:X Unable to start VM: start: exit status 1
处理方案:执行“minikube delete”或者手工清理时虚拟机目录存在残留内容,需手动删除目录“C:\Users\{your username} \.minikube\machines”后再次尝试。
Linux下安装
1.安装虚拟机(可选)
在Linux环境下,Minikube支持直接在主机上运行Kubernetes,因此此步骤为可选。所以大家可以根据实际情况来选择是否安装虚拟机,比如KVM和VirtualBox。
注意:如果直接在主机上运行,Minikube会运行一个不安全的API Server,可能会导致安全隐患,因此不建议在个人工作环境安装。
2.安装kubectl
由于Google网络不太稳定,我们使用阿里云镜像进行安装。
- CentOS
echo '#k8s
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
'>/etc/yum.repos.d/kubernetes.repo
#kubeadm和相关工具包
yum -y install kubelet kubeadm kubectl kubernetes-cni
- Debian / Ubuntu
apt-get update && apt-get install -y apt-transport-https
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main' >/etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
3.安装Minikube
这里我们直接下载安装:
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
由于网络问题,我们可以选择使用阿里云的执行程序:
curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
然后将可执行文件添加到/usr/local/bin目录下
sudo install minikube /usr/local/bin
4.启动Minikube
minikube start --vm-driver=none
如果存在网络问题,请使用--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers指定镜像仓库地址。
安装过程中如出现问题,可以执行以下命令之后再重新尝试:
minikube delete
rm ~/.minikube
往期内容链接
Docker最全教程之使用Tencent Hub来完成CI(九)
Docker最全教程——Redis容器化以及排行榜实战(十三)
Docker最全教程之Ubuntu下安装Docker(十四)
Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)
Docker最全教程之使用Docker搭建Java开发环境(十七)
Docker最全教程之使用.NET Core推送钉钉消息(十九)
Docker最全教程之使用 Visual Studio Code玩转Docker(二十)
Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
使用Minikube部署本地Kubernetes集群(二十八)的更多相关文章
- Kubernetes 学习笔记(二):本地部署一个 kubernetes 集群
前言 前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的.我们需要有一个多节点集群,才能用到各种调度/监控功能.而且单节点只能是一个加引号的"集群&quo ...
- 使用 Kubeadm+Containerd 部署一个 Kubernetes 集群
本文独立博客阅读地址:https://ryan4yin.space/posts/kubernetes-deployemnt-using-kubeadm/ 本文由个人笔记 ryan4yin/knowle ...
- ingress-nginx 的使用 =》 部署在 Kubernetes 集群中的应用暴露给外部的用户使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488189&idx=1&sn=8175f067 ...
- 快速部署一个Kubernetes集群
官方提供的三种部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用. 部署地址:https:// ...
- Harbor快速部署到Kubernetes集群及登录问题解决
Harbor(https://goharbor.io)是一个功能强大的容器镜像管理和服务系统,用于提供专有容器镜像服务.随着云原生架构的广泛使用,原来由VMWare开发的Harbor也加入了云原生基金 ...
- CentOS 7.5 使用 yum 安装 Kubernetes 集群(二)
一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...
- kubeadm部署一个Kubernetes集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具.这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 $ kubeadm in ...
- 第3章:快速部署一个Kubernetes集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点$ kubeadm in ...
- CYQ.Data 轻量数据层之路 使用篇-MProc 存储过程与SQL 视频[最后一集] H (二十八)
2019独角兽企业重金招聘Python工程师标准>>> 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇五曲 MProc 存储过程与SQL(十六) 的附加视 ...
随机推荐
- Android备注26.Android异步任务(AsyncTask)
转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言 我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕画 ...
- [转]TensorFlow如何进行时序预测
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组 ...
- WPF编游戏系列 之二 图标效果
原文:WPF编游戏系列 之二 图标效果 本篇将要实现图标的两个效果:1. 显示图标标签,2. 图标模糊效果.在上一篇中提到Image没有HTML <img>的Title属性( ...
- <input type="image"> 和 <img> 用法区别
原文:<input type="image"> 和 <img> 用法区别 w3c定义如下: Image <input type="image ...
- GIS基础软件及操作(七)
原文 GIS基础软件及操作(七) 练习七.地形分析 地形分析:TIN及DEM的生成及应用 加深对TIN建立过程的原理.方法的认识: 熟练掌握ArcGIS中建立DEM.TIN的技术方法: 结合实际,掌握 ...
- 零元学Expression Blend 4 - Chapter 44 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(下)
原文:零元学Expression Blend 4 - Chapter 44 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(下) 抱歉久等了!!!! 终於到了动画MenuBar ...
- C++ GUID和string转化函数【转载】
原文地址:https://blog.csdn.net/zgl7903/article/details/5488294 因为这两个函数太好用,解决了大问题,我必须转载一下了.转自csdn牛人 zgl79 ...
- C#6.0一些特性
1.自动属性初始化的改进 声明属性时可以直接进行初始化 public int id {get;set;}=10; 自动属性是省去了get和set内部的过程,而直接用set;get;这样的语句代替, 把 ...
- [转] Protobuf高效结构化数据存储格式
从公司的项目源码中看到了这个东西,觉得挺好用的,写篇博客做下小总结.下面的操作以C++为编程语言,protoc的版本为libprotoc 3.2.0. 一.Protobuf? 1. 是什么? Goo ...
- 每天进步一点--WCF学习笔记
最近买了一本书WCF服务编程,重头再开始了解学习WCF,现将学习记录,以便后来复习,也希望和大家一起进步. WCF用终结点表示一种组成关系,终结点就是地址.契约与绑定的混合品,即 地址(Address ...