本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Minikube:轻松在本地运行 Kubernetes
编者按:这是关于 Kubernetes 1.3 新功能系列深度文章的第一篇。
虽然 Kubernetes 是当今管理容器化应用程序的最佳工具之一,并且已经生产就绪一年多,但 Kubernetes 一直缺少一个优秀的本地开发平台。
在过去的几个月里,我们 Kubernetes 社区的几位成员一直在 GitHub 上的 Minikube 仓库中致力于解决这个问题。我们的目标是构建一个易于使用、高保真度的 Kubernetes 发行版,可以在 Mac、Linux 和 Windows 工作站和笔记本电脑上通过单个命令在本地运行。
在社区成员的大力帮助下,我们很自豪地宣布 Minikube 的正式发布。此版本支持 Kubernetes 1.3,提供了更方便与本地集群交互的新命令,以及对 xhyve (macOS 上) 和 KVM (Linux 上) 的实验性驱动程序。
使用 Minikube
Minikube 作为独立的 Go 二进制文件发布,因此安装它就像下载 Minikube 并将其放入您的路径一样简单。
Minikube 目前需要您安装 VirtualBox,您可以在此处下载。
_(这是针对 Mac 的,对于 Linux,请将“minikube-darwin-amd64”替换为“minikube-linux-amd64”)_curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/_
要启动 Minikube 中的 Kubernetes 集群,请使用 minikube start
命令。
$ minikube start
Starting local Kubernetes cluster...
Kubernetes is available at https://192.168.99.100:443
Kubectl is now configured to use the cluster
此时,您的笔记本电脑上已经运行了一个单节点 Kubernetes 集群!Minikube 还会为您配置 kubectl
,因此您也无需更改即可运行容器。
Minikube 会创建一个路由到您节点的仅主机网络接口。要与正在运行的 Pod 或服务进行交互,您应该通过此地址发送流量。要查找此地址,您可以使用 minikube ip
命令。
Minikube 还附带了 Kubernetes Dashboard。要在浏览器中打开它,您可以使用内置的 minikube dashboard
命令。
一般来说,Minikube 支持您期望从 Kubernetes 集群获得的一切。您可以使用 kubectl exec
在集群中的 Pod 内获取 bash shell。您可以使用 kubectl port-forward
和 kubectl proxy
命令将流量从 localhost 转发到 Pod 或 API 服务器。
由于 Minikube 是在本地运行而不是在云提供商上运行,因此某些特定于提供商的功能(如 LoadBalancers 和 PersistentVolumes)将无法直接使用。但是,您可以使用 NodePort LoadBalancers 和 HostPath PersistentVolumes。
架构
Minikube 基于 Docker 的 libmachine 构建,并利用驱动程序模型来创建、管理和与本地运行的虚拟机进行交互。
RedSpread 慷慨地将其 localkube 代码库捐赠给了 Minikube 仓库,我们用它在虚拟机内部启动一个单进程 Kubernetes 集群。Localkube 将 etcd、DNS、Kubelet 和所有 Kubernetes Master 组件捆绑到一个 Go 二进制文件中,并通过独立的 goroutine 运行它们。
即将推出的功能
到目前为止,Minikube 的开发工作非常有趣,我们一直在寻求改进 Minikube,以提供更好的 Kubernetes 开发体验。如果您有任何功能想法,请随时在问题跟踪器中告诉我们。
以下是我们希望尽快添加到 Minikube 的一些功能列表:
- 对 macOS 和 Windows 的原生管理程序支持
- 我们计划移除对 Virtualbox 的依赖,并与 macOS 和 Windows 中包含的原生管理程序(分别为 Hypervisor.framework 和 Hyper-v)集成。
- 改进对 Kubernetes 功能的支持
- 我们计划增加支持的 Kubernetes 功能范围,包括 Ingress 等功能。
- 可配置的 Kubernetes 版本
- 目前 Minikube 仅支持 Kubernetes 1.3。我们计划增加对用户可配置的 Kubernetes 版本的支持,以便更轻松地在您的笔记本电脑上匹配您在生产环境中运行的版本。
社区
我们很乐意听取您对 Minikube 的反馈。加入社区:
请尝试使用 Minikube,并告诉我们您的使用体验!