天天看点

使用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集群(二十八)

使用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部署本地Kubernetes集群(二十八)

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要求】一栏如下图所示:

使用Minikube部署本地Kubernetes集群(二十八)

C:\Users\Lys_Desktop\Documents\Tencent Files\512982554\Image\C2C\M%YWM2VE`R)$F2KF`{~M{LU.jpg

如果已经装了Hyper-V,则提示如下:

使用Minikube部署本地Kubernetes集群(二十八)

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

使用Minikube部署本地Kubernetes集群(二十八)

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.

  • 通过下载安装包安装

下载地址: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进行指定指定的虚拟网络交换机。虚拟网络交换机设置如下图所示:

使用Minikube部署本地Kubernetes集群(二十八)

在中国,由于网络和防火墙的原因,通常会无法拉取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

使用Minikube部署本地Kubernetes集群(二十八)

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部署本地Kubernetes集群(二十八)

刚才我们使用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部署本地Kubernetes集群(二十八)

打开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部署本地Kubernetes集群(二十八)
使用Minikube部署本地Kubernetes集群(二十八)

常见错误

启动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 \

然后将可执行文件添加到/usr/local/bin目录下

sudo install minikube /usr/local/bin

minikube start --vm-driver=none

如果存在网络问题,请使用--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers指定镜像仓库地址。

使用Minikube部署本地Kubernetes集群(二十八)

安装过程中如出现问题,可以执行以下命令之后再重新尝试:

minikube delete

rm ~/.minikube

往期内容链接

Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

Docker最全教程——从理论到实战(八)

Docker最全教程之使用Tencent Hub来完成CI(九)

Docker最全教程——数据库容器化(十)

Docker最全教程——数据库容器化之持久保存数据(十一)

Docker最全教程——MongoDB容器化(十二)

Docker最全教程——Redis容器化以及排行榜实战(十三)

Docker最全教程之Ubuntu下安装Docker(十四)

Docker最全教程之树莓派和Docker(十五)

Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)

Docker最全教程之使用Docker搭建Java开发环境(十七)

Docker最全教程之Go实战,墙裂推荐(十八)

Docker最全教程之使用.NET Core推送钉钉消息(十九)

Docker最全教程之使用 Visual Studio Code玩转Docker(二十)

Docker最全教程之Python爬网实战(二十一)

Docker最全教程之使用PHP搭建个人博客站点(二十二)

Docker最全教程之使用Node.js搭建团队技术文档站(二十三)

Docker最全教程之MySQL容器化 (二十四)

Docker+ Kubernetes已成为云计算的主流(二十五)

容器化之后如何节省云端成本?(二十六)

了解Kubernetes主体架构(二十七)

作者:雪雁

出处:http://www.cnblogs.com/codelove/

沟通渠道:编程交流群<85318032> 产品交流群<897857351>

如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

静听鸟语花香,漫赏云卷云舒。