使用minikube安装Kubernetes Cluster的步骤

时间:2020-01-09 10:40:57  来源:igfitidea点击:

如何设置Kubernetes集群?
Kubernetes是一个复杂的系统,要对其进行安装和良好地管理"不是一件容易的事"。

但是,随着Kubernetes社区的扩展和成熟,出现了越来越多的用户友好工具。
截止到今天,根据要求,有很多选项可供选择:

  • 如果我们使用的是物理(裸机)服务器或者虚拟机(VMs),则Kubeadm非常适合。

  • 如果我们在云环境上运行,则kops和Kubespray可以简化Kubernetes的安装以及与云提供商的集成。

  • 如果我们想减轻管理Kubernetes控制平面的负担,几乎所有云提供商都提供其Kubernetes托管服务,例如Google Kubernetes Engine(GKE),Amazon Elastic Kubernetes Service(EKS),Azure Kubernetes Service( AKS)和IBM Kubernetes Service(IKS)。

  • 如果我们只想在操场上学习Kubernetes,MinikubeKind可以在几分钟内启动Kubernetes集群。

因此,如我们所见,部署第一批Kubernetes集群有很多选择。
在本Kubernetes教程中,我将介绍"使用Minikube在CentOS 8上安装kubernetes集群"的步骤。

Minikube概述

Minikube是可用于设置"单节点集群"的工具,它提供了方便的命令和参数来配置集群。
它的主要目的是提供本地测试环境。
它打包了一个包含所有Kubernetes核心组件的VM,这些虚拟组件可以一次安装到主机上。
只要预先安装了虚拟化工具(也称为" Hypervisor"),它就可以支持任何操作系统。

Minikube架构

正如我们在之前的教程中了解到的那样,Kubernetes集群由一个控制器节点和一个工作节点组成,其中两种节点类型都有其自己的一组组件。
但是,由于Minikube是一个单节点集群,因此它将包含此单个节点内的所有集群组件,如下所示:

准备工作

物理主机的"最小资源需求":

  • 2个或者更多CPU

  • 至少2GB的可用内存

  • 最少20GB的可用磁盘空间

另外,主机必须具有:

  • 正常的互联网连接

  • 必须在BIOS中启用虚拟化技术以支持虚拟机监控程序

  • 任何受支持的管理程序

以下是Minikube支持的最常见的"超级管理程序":

  • VirtualBox(适用于所有操作系统)

  • KVM(特定于Linux)

  • Hyperkit(特定于macOS)

  • Hyper-V(特定于Windows)

实验室环境

我将使用Windows 10和Oracle VirtualBox安装的笔记本电脑来设置Minikube。

安装Oracle VirtualBox

我们也可以根据环境选择安装不同的虚拟机管理程序,我们将使用Oracle VirtualBox,因为我已经使用它来编写大多数教程了。

从其官方存储库下载VirtualBox软件。

我写了另一篇文章来安装Oracle Virtual Box,它在Windows上是安静的。

只需双击下载的软件,然后按照说明进行操作,即可将所有设置保留为默认设置。

下载并安装kubectl

Kubernetes命令行工具kubectl允许我们对Kubernetes集群运行命令。
我们可以使用kubectl来部署应用程序,检查和管理集群资源以及查看日志。

  • 如果我们使用Windows以外的其他平台,则可以按照官方指南下载适用于我们平台的kubectl

  • 我在C驱动器C:\Kubernetes内创建了一个文件夹,用于存储这些软件。

  • 在撰写本教程时,kubectl 1.19是此链接上可用的最新稳定版本。

  • 或者如果我们已经安装了curl,请使用以下命令:

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/windows/amd64/kubectl.exe
  • 要查找最新的稳定版本(例如,用于脚本编写),请查看https://storage.googleapis.com/kubernetes-release/release/stable.txt。

  • 测试以确保kubectl的版本与下载的版本相同:

C:\Kubernetes>kubectl version --client

我的设置的输出:

下载并安装Minikube

  • 我们可以按照官方指南获取适用于我们各自平台的最新minikube软件包。

对于Windows,我们可以从https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe下载最新的可用minikube。

  • 我已经下载了minikube并将其放置在上一步创建的C:\Kubernetes文件夹中。

  • 接下来,我们可以双击下载的安装程序,然后按照屏幕上的说明安装软件。

  • 安装后,打开命令提示符并输入minikube版本,以确保它按预期运行。

建立并启动minikube集群

接下来,我们将部署我们的Kubernetes集群,我们将对其执行minikube start。
此命令将下载minikube ISO镜像并使用Oracle VirtualBox部署新的虚拟机,这将需要一些时间,具体取决于网络速度。

说明:

我们无需创建任何VM,此步骤本身将在Oracle VirtualBox上创建并部署新的VM。
关闭虚拟机后继续前进,应该再次使用minikube start启动群集服务,然后才能访问它。

minikube已成功部署了我们的单节点集群,我们可以在Oracle VirtualBox上进行验证,以确保新VM处于运行状态。

与集群互动

以下命令应有助于确定由Minikube启动的Kubernetes集群是否在正常运行。

C:\Kubernetes>minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

现在,让我们看一下kubectl客户端和Kubernetes服务器的版本:

C:\Kubernetes>kubectl version --short
Client Version: v1.19.0
Server Version: v1.19.2

要检查组成集群的计算机并获取有关它们的一些基本信息:

C:\Kubernetes>kubectl get node
NAME       STATUS   ROLES    AGE    VERSION
minikube   Ready    master   112m   v1.19.2

现在我们应该为Minikube设置一个"单节点Kubernetes集群"。

部署应用

现在我们的集群节点已经启动并且正在运行,我们可以创建我们的第一个Pod(基本上是一个容器),但是在此之前,请验证minikube集群上是否已经有可用的pod:

C:\Kubernetes>kubectl get pods
No resources found in default namespace.

由于群集是全新安装的,因此我们没有任何Pod。
我将创建一个新的pod hello-minikube

C:\Kubernetes>kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
pod/hello-minikube created

现在验证可用的Pod,当前状态显示为ContainerCreating

C:\Kubernetes>kubectl get pods
NAME                              READY   STATUS              RESTARTS   AGE
hello-minikube-6ddfcc9757-gtr9s   1/1     ContainerCreating   1          19h

等待一段时间并执行相同的命令,现在pod的状态显示为"正在运行":

C:\Kubernetes>kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
hello-minikube-6ddfcc9757-gtr9s   1/1     Running   1          3m2s

这基本上是一个Web服务器,要访问它,我们需要执行以下命令:

C:\Kubernetes>kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed

获取Web服务器的URL

C:\Kubernetes>minikube service hello-minikube --url
http://192.168.99.100:31068

现在我们可以使用此URL来访问我们的应用程序

我们已经完成了这个演示,所以我将删除部署

C:\Kubernetes>kubectl delete deployment hello-minikube
deployment.apps "hello-minikube" deleted

现在,我们没有任何其他Pod在运行:

C:\Kubernetes>kubectl get pods
No resources found in default namespace.

管理集群

要暂停Kubernetes而不影响已部署的应用程序,请使用:

minikube pause

最后,我将停止我的minikube集群,该集群将关闭虚拟机的电源:

C:\Kubernetes>minikube stop
* Stopping node "minikube"  ...
* 1 nodes stopped.

删除所有minikube集群

minikube delete --all