Ubuntu 20.04 上快速搭建Minikube集群:从安装到Dashboard访问全攻略

📅 发布时间:2026/7/14 13:23:32 👁️ 浏览次数:
Ubuntu 20.04 上快速搭建Minikube集群:从安装到Dashboard访问全攻略
Ubuntu 20.04 上快速搭建Minikube集群从安装到Dashboard访问全攻略对于开发者而言在本地快速构建一个可用的Kubernetes环境进行应用开发、测试和概念验证是提升效率的关键一步。然而搭建一个多节点的完整集群往往意味着高昂的硬件成本和复杂的运维工作。这时Minikube的价值就凸显出来了——它让你在一台普通的开发机甚至是虚拟机里就能启动一个功能完备的单节点Kubernetes集群。本文将手把手带你在Ubuntu 20.04 LTS这个长期支持版本上完成从零到一的Minikube集群搭建并最终通过Dashboard直观地管理你的集群。整个过程会避开常见的“坑”比如权限问题和镜像拉取缓慢力求让你获得一个流畅的初体验。1. 环境准备与核心组件安装在开始Minikube之旅前我们需要确保基础环境就绪。Ubuntu 20.04是一个稳定的起点但我们需要为其安装两个核心引擎容器运行时和Minikube本身。1.1 安装Docker容器运行时Minikube支持多种驱动如Docker、KVM、VirtualBox等。对于Ubuntu桌面或服务器环境使用Docker驱动是最简单、性能也相对较好的选择。因此我们的第一步是安装Docker。首先更新你的软件包索引并安装一些必要的工具sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release接下来添加Docker的官方GPG密钥和软件源。这里我们使用阿里云的镜像源来加速下载curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null注意使用国内镜像源可以显著加快软件包的下载速度避免因网络问题导致的安装失败。更新源列表并安装Docker引擎sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io安装完成后启动Docker服务并设置开机自启。为了避免每次使用docker命令都加sudo可以将当前用户加入docker用户组。sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER执行完用户组修改后你需要注销并重新登录或者打开一个新的终端会话才能使权限生效。之后运行docker version来验证安装是否成功。1.2 安装Minikube二进制文件Minikube是一个独立的Go语言二进制程序安装过程非常简洁。我们直接从其官方GitHub仓库下载指定版本。为了获得更稳定的下载体验同样可以使用国内的镜像地址。下载并安装Minikube v1.23.1你可以根据需要替换为其他版本curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.23.1/minikube-linux-amd64下载完成后赋予其可执行权限并将其移动到系统的可执行文件路径下chmod x minikube sudo mv minikube /usr/local/bin/现在你可以通过以下命令检查Minikube是否安装成功minikube version如果终端输出了类似minikube version: v1.23.1的信息恭喜你Minikube已经准备就绪。2. 启动你的第一个Minikube集群环境准备妥当后最激动人心的时刻到了启动你的第一个Kubernetes集群。这个过程看似简单但有几个关键细节决定了成败。2.1 以非root用户启动集群这是新手最容易踩的“坑”。Minikube出于安全考虑禁止以root用户身份启动集群。如果你在终端中看到类似“不能以root执行这条命令”的错误就是因为这个原因。确保你正在使用一个普通用户账户即非root用户进行操作。如果你之前用sudo安装了Docker现在请切换回你的普通用户终端。直接运行启动命令minikube start --driverdocker这条命令告诉Minikube使用Docker作为驱动来创建集群。Minikube会执行一系列操作下载一个轻量级的Kubernetes基础镜像kicbase。在Docker中创建一个容器这个容器将模拟一个完整的节点。在该节点容器内拉取并启动所有必要的Kubernetes核心组件如kube-apiserver、etcd、kube-controller-manager等。提示首次启动会下载基础镜像和Kubernetes组件镜像耗时取决于你的网络速度。使用国内镜像源后这个过程通常会快很多。2.2 关于镜像与版本控制的深入解析你可能在网上看到过使用--image-mirror-countrycn参数的教程。对于从阿里云镜像站下载的Minikube二进制文件其内部已经集成了针对中国区的优化会自动从国内镜像源拉取Kubernetes组件因此通常无需额外指定此参数。一个更有用的参数是--kubernetes-version。Kubernetes版本迭代很快Minikube默认启动的版本可能不是你想要的。你可以通过以下方式指定版本minikube start --driverdocker --kubernetes-versionv1.22.0要查看Minikube支持哪些Kubernetes版本可以运行minikube config defaults kubernetes-version启动成功后Minikube会自动配置kubectl的上下文context使其指向这个新创建的集群。你可以运行docker ps查看正在运行的Minikube容器也可以运行docker images看到名为kicbase的基础镜像。Minikube拉取的Kubernetes组件镜像缓存默认存储在用户主目录下的.minikube/cache/images路径中。这意味着一旦缓存下次创建集群即使是不同版本时如果镜像已存在就会直接使用缓存极大加快启动速度。3. 高效操作你的Minikube集群集群运行起来后我们需要与之交互。Minikube提供了多种便捷的方式来管理你的集群。3.1 使用内置的kubectlkubectl是操作Kubernetes集群的命令行工具。虽然你可以单独安装kubectl但Minikube已经内置了一个与当前集群版本完全匹配的kubectl。使用方式稍有不同minikube kubectl -- get pods -A这条命令会列出所有命名空间下的Pod。为了操作方便强烈建议为这个内置的kubectl设置一个别名这样你就可以像使用原生kubectl一样操作了。将以下命令添加到你的shell配置文件如~/.bashrc或~/.zshrc中alias kubectlminikube kubectl --然后执行source ~/.bashrc使配置生效。现在你可以直接使用kubectl get nodes来查看你的单节点集群状态了。3.2 管理多个集群配置Minikube一个强大的特性是支持在单机上运行多个独立的Kubernetes集群。这对于测试不同版本、不同配置的应用场景非常有用。每个集群通过一个**profile配置文件**来区分。默认的profile名为minikube。你可以通过指定-p或--profile参数来创建和管理不同的集群。例如创建一个名为my-test的新集群并指定Kubernetes版本minikube start -p my-test --driverdocker --kubernetes-versionv1.21.0启动后所有针对该集群的操作都需要带上profile名minikube status -p my-test kubectl get nodes --contextmy-test # 如果你配置了多上下文要查看所有已创建的集群profile及其状态可以使用minikube profile list这个命令会以清晰的表格形式展示所有集群的名称、驱动、Kubernetes版本和运行状态。名称驱动Kubernetes版本状态minikubedockerv1.22.3Runningmy-testdockerv1.21.0Stopped当你需要暂停某个集群以释放资源时使用minikube stop -p profile-name。要彻底删除一个集群及其所有数据则使用minikube delete -p profile-name。4. 可视化利器访问Kubernetes Dashboard命令行虽然强大但一个可视化的管理界面能让你更直观地了解集群状态和资源情况。Minikube内置了Kubernetes Dashboard并提供了极其简单的一键启动方式。4.1 启动Dashboard服务在Minikube环境中只需一条命令即可在后台启动Dashboardminikube dashboard执行后你会看到终端提示Dashboard已经在集群内启动并尝试在本地打开浏览器。然而由于Dashboard服务运行在集群内部默认只能通过集群内部的网络访问。因此Minikube同时创建了一个代理proxy将本地端口的请求转发到集群内的Dashboard Pod。4.2 解决外部访问问题如果你是在虚拟机如VMware里安装的Ubuntu和Minikube并且希望从宿主机比如你的Windows或Mac电脑的浏览器访问这个Dashboard就需要做一些额外的网络配置。Minikube dashboard命令通常会输出一个本地的URL如http://127.0.0.1:12345/api/v1/...。这个地址只在Ubuntu虚拟机内部可访问。为了让宿主机能访问我们需要手动创建一个代理并绑定到虚拟机的网络IP上。首先查看你的Ubuntu虚拟机的IP地址假设为192.168.1.100ip addr show然后在Ubuntu虚拟机中新开一个终端运行kubectl proxy命令并指定代理监听的地址为虚拟机的IP同时放宽主机名检查kubectl proxy --port8000 --address192.168.1.100 --accept-hosts^.* 注意--accept-hosts^.*参数放宽了安全限制仅建议在本地开发测试环境中使用。现在回到Minikube dashboard命令输出的那个URL。将其中的127.0.0.1部分替换为你的虚拟机IP192.168.1.100并将端口替换为8000。例如原始的URL可能是http://127.0.0.1:12345/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/替换后变为http://192.168.1.100:8000/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/将这个修改后的URL粘贴到宿主机的浏览器中你就能看到Kubernetes Dashboard的登录界面了。Dashboard默认需要令牌Token登录。你可以通过以下命令获取管理员服务的账户令牌kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk {print $1}) | grep ^token: | awk {print $2}复制输出的长字符串令牌粘贴到Dashboard的登录框中即可进入管理界面。5. 日常维护与故障排查技巧让Minikube集群稳定运行并知道如何解决常见问题是提升开发体验的重要一环。5.1 基础维护命令日常开发中你会频繁用到以下几个命令来控制集群的生命周期暂停集群minikube stop。这会让集群容器停止运行释放CPU和内存资源但保留磁盘状态。下次minikube start会快速恢复。彻底删除集群minikube delete。这会删除集群容器和所有相关数据包括.minikube目录下的缓存。用于清理环境或重新开始。查看集群状态minikube status。快速获取集群的运行状态、主机、Kubelet和APIServer的健康情况。查看服务URLminikube service list。列出集群中所有已部署的Service及其访问URLMinikube可以为其创建隧道方便访问。进入节点Shellminikube ssh。这让你可以直接登录到Minikube创建的虚拟机或容器节点内部进行更深层次的调试。5.2 常见问题与解决方案即使流程再清晰也难免会遇到问题。这里汇总几个典型场景问题一启动时卡在“Pulling base image...”或下载组件镜像极慢。原因网络连接Kubernetes官方镜像仓库k8s.gcr.io不畅。解决确认你使用的是国内镜像站下载的Minikube。可以尝试在启动时显式指定阿里云镜像仓库虽然新版可能已自动处理minikube start --driverdocker --image-repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers。对于已经启动的集群可以手动从国内源拉取镜像然后通过docker tag和docker push到Minikube的本地仓库但这比较繁琐。最根本的还是确保网络环境。问题二执行minikube dashboard后浏览器无法打开页面。原因代理未正确运行或浏览器插件拦截。解决检查minikube dashboard命令是否仍在运行它启动了一个前台进程。可以新开终端执行minikube dashboard --url只获取URL然后手动处理访问。确保kubectl proxy命令如果需要从外部访问正在后台运行且监听的IP和端口正确。尝试使用minikube service kubernetes-dashboard -n kubernetes-dashboard命令Minikube会尝试为你创建一个临时的访问隧道。问题三Docker驱动下宿主机如何访问Minikube集群内的服务场景你在集群内部署了一个NodePort类型的Service想在Ubuntu宿主机的浏览器中访问它。解决使用minikube service service-name命令。Minikube会自动获取服务的URL并尝试打开。或者先获取URLminikube service service-name --url然后手动在浏览器中访问该地址。Minikube会处理网络路由让你直接从宿主机访问到集群内的服务。掌握这些维护和排查技巧你就能从容应对大多数Minikube使用过程中的小波折让本地Kubernetes开发环境真正成为你手中得心应手的工具。