本文超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否未变得不正确。
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 仪表板。要在浏览器中打开它,您可以使用内置的 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 存储库,我们用它在 VM 内启动单进程 Kubernetes 集群。Localkube 将 etcd、DNS、Kubelet 和所有 Kubernetes 主组件捆绑到一个 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,并告诉我们您的使用体验!