使用minikube安装Kubernetes Cluster的步骤
如何设置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,
Minikube
和Kind
可以在几分钟内启动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