1. 概述
Kubernetes 是一个广受欢迎的开源平台,用于管理容器化的工作负载和服务。它提供了一种管理并协调容器化应用程序的方法,可以根据需要扩展或缩小它们的规模,并确保它们可靠、安全地运行。
Minikube 是一个工具,允许我们在本地机器上运行一个单节点的 Kubernetes 集群,非常适合测试和开发用途。本文档将指导我们完成在本地机器上安装和使用 Minikube 的步骤。
2. 先决条件
在开始之前,我们需要确保以下几点:
- 一台运行 Linux、macOS 或 Windows 的机器。
- 在我们的机器上安装了一个虚拟机管理程序,如 VirtualBox 或 KVM。如果我们在使用 Windows,则可以使用 Hyper-V。
- 一个外壳环境,如 Bash 或 PowerShell。
- 我们机器上已安装 curl。
3. 安装 Minikube
第一步是将 Minikube 安装到我们的机器上。我们可以按照 Minikube 网站提供的说明进行操作:https://minikube.sigs.k8s.io/docs/start/
或者,我们可以通过以下命令安装最新版本的 Minikube:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
此命令适用于 Linux。如果我们正在使用 macOS 或 Windows,则需要下载适合我们平台的二进制文件。
一旦安装了 Minikube,我们可以通过运行以下命令验证其是否正确安装:
$ minikube version
minikube version: v1.18.1
此命令输出 Minikube 二进制文件的版本号。
4. 启动 Minikube 集群
下一步是启动 Minikube 集群。我们可以通过运行以下命令来执行此操作:
$ minikube start
此命令将在我们的本地机器上启动一个虚拟机,并配置它以运行单节点的 Kubernetes 集群。
首次运行此命令时,它会下载虚拟机所需的必要的 ISO 映像,这可能需要几分钟时间。一旦虚拟机运行起来,我们可以通过运行以下命令检查集群的状态:
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent
此输出显示 Minikube 控制平面正在运行,kubelet 和 API 服务器也正在运行。kubeconfig 已配置,这意味着我们可以使用 kubectl 命令与集群进行交互。此外,输出还显示了 Minikube 主机机器的状态。
5. 与 Minikube 集群交互
一旦集群启动并运行,我们可以使用 kubectl 命令行工具与之交互。kubectl 是与 Kubernetes 集群交互的主要 CLI 工具,允许我们部署应用、管理节点并执行其他操作。
为了使用 kubectl 与 Minikube 进行交互,我们需要将上下文设置为 Minikube 集群。通过运行以下命令可以完成此操作:
$ kubectl config use-context minikube
此命令告诉 kubectl 使用 Minikube 集群的配置。
我们现在可以运行 kubectl 命令与 Minikube 集群进行交互。例如,我们可以运行以下命令获取集群中节点的信息:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 250d v1.20.2
此命令显示集群中的节点列表及其状态、角色、年龄和 Kubernetes 版本。
6. 部署应用
要将应用部署到 Minikube 集群,我们需要创建一个 Kubernetes 部署对象。部署对象管理一组应用的副本,并确保维持所需的状态。
对于这个示例,我们将创建一个简单的部署对象,运行 NGINX Web 服务器。首先,我们需要创建一个名为 nginx-deployment.yaml 的文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
此 YAML 文件定义了一个包含单个副本的部署对象,该副本运行 NGINX 容器。它在虚拟机上暴露了端口 80 的 HTTP 流量。
然后,为了创建部署,我们运行以下命令:
$ kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
此命令在 Minikube 集群中创建了部署对象。
要访问 NGINX Web 服务器,我们需要将其作为 Kubernetes 服务进行暴露。服务 是一种抽象,将一组 pod 作为网络服务进行暴露。让我们创建一个名为 nginx-service.yaml 的文件,内容如下:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- name: http
port: 80
targetPort: 80
此 YAML 文件定义了一个服务对象,它在虚拟机上的随机分配端口上暴露了 NGINX 部署。
为了创建服务,我们运行以下命令:
$ kubectl apply -f nginx-service.yaml
service/nginx-service created
我们现在可以通过获取虚拟机的 IP 地址和服务的端口号来访问 NGINX Web 服务器:
$ minikube service nginx-service --url
http://192.168.64.2:31637
这应该输出一个 URL,我们可以使用它来访问 NGINX Web 服务器。
要在 Minikube 中使用 本地构建的 Docker 图像,我们只需将图像标记为 Minikube Docker 服务器的 IP 地址,并使用 docker tag 和 docker push 命令将其推送到 Minikube Docker 注册表。
7. 结论
本文档涵盖了如何安装和使用 Minikube 在本地机器上运行 Kubernetes 集群的步骤。我们还演示了如何将应用部署到集群并在使用 Kubernetes 服务的情况下访问它。
Minikube 是一个非常优秀的测试和开发工具,它使我们能够快速、轻松地开始使用 Kubernetes。