本文已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。

使用 Minikube 在 Linux 本地运行 Kubernetes - 现在支持 Kubernetes 1.14

几天前,Kubernetes 社区发布了 Kubernetes 1.14,这是 Kubernetes 的最新版本。与此同时,作为 Kubernetes 项目一部分的 Minikube 最近达到了 1.0 里程碑,它默认支持 Kubernetes 1.14

Kubernetes 是分布式云原生计算领域的真正赢家(也是事实上的标准)。虽然它可以处理单个集群中多达 5000 个节点,但在单机(例如笔记本电脑、开发人员工作站等)上进行本地部署是使用 Kubernetes 的日益普遍的场景。

几周前,我在 Twitter 上发起了一项投票,要求社区指定他们首选的在 Linux 上本地运行 Kubernetes 的选项

这是关于 Linux 上本地部署选项的系列文章的第一篇,它将介绍 Minikube,这是最流行的社区构建的在本地计算机上运行 Kubernetes 的解决方案。

Minikube 是一个跨平台、社区驱动的 Kubernetes 发行版,主要用于本地环境。它部署一个单节点集群,这是在 localhost 上启动并运行简单 Kubernetes 集群的绝佳选择。

Minikube 被设计为用作虚拟机 (VM),默认的 VM 运行时是 VirtualBox。同时,可扩展性是 Minikube 的关键优势之一,因此可以使用 VirtualBox 之外的 驱动程序

默认情况下,Minikube 使用 Virtualbox 作为运行虚拟机的运行时。Virtualbox 是一种跨平台解决方案,可以在各种操作系统上使用,包括 GNU/Linux、Windows 和 macOS。

同时,QEMU/KVM 是一种 Linux 原生的虚拟化解决方案,与 Virtualbox 相比可能具有优势。例如,在 GNU/Linux 服务器上使用 KVM 要容易得多,因此您不仅可以在带有 GUI 的 Linux 工作站或笔记本电脑上运行单节点 Minikube 集群,还可以在远程无头服务器上运行。

不幸的是,Virtualbox 和 KVM 不能同时使用,因此如果您已经在计算机上运行 KVM 工作负载并且也想在那里运行 Minikube,则首选使用 KVM minikube 驱动程序。

在本指南中,我们将重点介绍在 Ubuntu 18.04 上使用 KVM 驱动程序运行 Minikube(我使用的是在 packet.com 上运行的裸机)。

Minikube architecture (source: kubernetes.io)

Minikube 架构 (来源: kubernetes.io)

免责声明

这不是 Minikube 的官方指南。您可以在其官方 网页上找到有关运行和使用 Minikube 的详细信息,其中涵盖了不同的用例、操作系统、环境等。相反,本指南的目的是提供清晰易懂的指南,以便在 Linux 上使用 KVM 运行 Minikube。

先决条件

  • 您喜欢的任何 Linux(在本教程中,我们将使用 Ubuntu 18.04 LTS,以下所有说明都适用于它。如果您喜欢使用不同的 Linux 发行版,请查看相关文档)
  • 已安装并正确配置 libvirt 和 QEMU-KVM
  • 用于操作 Kubernetes 集群的 Kubernetes CLI (kubectl)

QEMU/KVM 和 libvirt 安装

注意:如果已安装,请跳过

在继续之前,我们必须验证我们的主机是否可以运行基于 KVM 的虚拟机。可以使用 Ubuntu 上提供的 kvm-ok 工具轻松检查此项。

sudo apt install cpu-checker && sudo kvm-ok

如果您在运行 kvm-ok 后收到以下输出,则可以在您的计算机上使用 KVM(否则,请检查您的配置)

$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

现在让我们安装 KVM 和 libvirt,并将当前用户添加到 libvirt 组以授予足够的权限

sudo apt install libvirt-clients libvirt-daemon-system qemu-kvm \
    && sudo usermod -a -G libvirt $(whoami) \
    && newgrp libvirt

安装 libvirt 后,您可以使用 libvirt 的一部分 virt-host-validate 工具验证主机运行虚拟机的有效性。

sudo virt-host-validate

kubectl (Kubernetes CLI) 安装

注意:如果已安装,请跳过

为了管理 Kubernetes 集群,我们需要安装 kubectl,即 Kubernetes CLI 工具。

在 Linux 上安装它的推荐方法是下载预构建的二进制文件并将其移动到 $PATH 下的目录中。

curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl \
    && sudo install kubectl /usr/local/bin && rm kubectl

或者,可以使用多种不同的方法安装 kubectl(例如,作为 .deb 或 snap 包 - 查看 kubectl 文档以找到最适合您的方法)。

Minikube 安装

Minikube KVM 驱动程序安装

VM 驱动程序是本地部署 Minikube 的基本要求。由于我们选择在本教程中使用 KVM 作为 Minikube 驱动程序,因此让我们使用以下命令安装 KVM 驱动程序

curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \
    && sudo install docker-machine-driver-kvm2 /usr/local/bin/ && rm docker-machine-driver-kvm2

Minikube 安装

现在让我们安装 Minikube 本身

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
    && sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

验证 Minikube 安装

在继续之前,我们需要验证 Minikube 是否正确安装。执行此操作的最简单方法是检查 Minikube 的状态。

minikube version

要使用 KVM2 驱动程序

现在让我们使用 Minikube 和 KVM 运行本地 Kubernetes 集群

minikube start --vm-driver kvm2

将 KVM2 设置为 Minikube 的默认 VM 驱动程序

如果 KVM 用作我们机器上 Minikube 的单个驱动程序,则将其设置为默认驱动程序并使用更少的命令行参数运行 Minikube 更方便。以下命令将 KVM 驱动程序设置为默认值

minikube config set vm-driver kvm2

所以现在让我们像往常一样运行 Minikube

minikube start

验证 Kubernetes 安装

让我们检查一下 Kubernetes 集群是否已启动并运行

kubectl get nodes

现在让我们运行一个简单的示例应用程序(在本例中为 nginx)

kubectl create deployment nginx --image=nginx

让我们也检查一下 Kubernetes Pod 是否已正确配置

kubectl get pods

屏幕录像

[![asciicast](https://asciinema.org/a/237106.svg)](https://asciinema.org/a/237106)

下一步

此时,使用 Minikube 和 KVM 的 Kubernetes 集群已在您的本地计算机上充分设置和配置。

要继续,您可以查看项目网站上的 Kubernetes 教程

还值得查看由 Linux 基金会/云原生计算基金会提供的“Kubernetes 入门”课程,该课程可在 EDX 上免费获得