这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否仍然准确。
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 并将其放入 PATH 路径一样简单。
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 创建了一个 Host-Only 网络接口,该接口路由到你的节点。要与正在运行的 Pod 或 Service 交互,你应该通过此地址发送流量。要查明此地址,你可以使用 minikube ip
命令。
Minikube 还附带 Kubernetes Dashboard。要在浏览器中打开它,你可以使用内置的 minikube dashboard
命令。
通常,Minikube 支持 Kubernetes 集群应具备的所有功能。你可以使用 kubectl exec
在集群中的 Pod 内获取一个 bash shell。你可以使用 kubectl port-forward
和 kubectl proxy
命令将流量从 localhost 转发到 Pod 或 API 服务器。
由于 Minikube 是在本地运行而不是在云提供商上运行,因此某些特定于提供商的功能,例如 LoadBalancer 和 PersistentVolume,将无法直接使用。但是,你可以使用 NodePort LoadBalancer 和 HostPath PersistentVolume。
架构
Minikube 基于 Docker 的libmachine 构建,并利用驱动模型来创建、管理和与本地运行的虚拟机交互。
RedSpread 非常慷慨地将其 localkube 代码库捐赠给了 Minikube 仓库,我们使用它在虚拟机内部启动一个单进程 Kubernetes 集群。Localkube 将 etcd、DNS、Kubelet 和所有 Kubernetes 主控组件打包到一个 Go 二进制文件中,并通过独立的 goroutine 运行它们。
即将推出的功能
到目前为止,开发 Minikube 一直充满乐趣,并且我们一直在寻求改进 Minikube,以提供更好的 Kubernetes 开发体验。如果你有任何功能建议,请随时在issue 跟踪器中告诉我们。
以下是我们希望尽快添加到 Minikube 的一些功能列表:
- 对 macOS 和 Windows 提供原生 hypervisor 支持
- 我们计划移除对 Virtualbox 的依赖,并与 macOS 和 Windows 中包含的原生 hypervisor (分别是 Hypervisor.framework 和 Hyper-v) 集成。
- 改进对 Kubernetes 特性的支持
- 我们计划增加支持的 Kubernetes 特性范围,包括 Ingress 等。
- 可配置的 Kubernetes 版本
- 目前 Minikube 只支持 Kubernetes 1.3。我们计划添加对用户可配置的 Kubernetes 版本的支持,以便更容易地匹配你在笔记本电脑上运行的生产环境版本。
社区
我们很乐意听取关于 Minikube 的反馈。加入社区:
请尝试使用 Minikube,并告诉我们使用体验如何!