Minikube 入门:从集群搭建到清理的完整流程
本教程将引导您使用 Minikube 在本地环境中快速体验 Kubernetes 的核心功能。我们将依次完成集群创建、应用部署、服务暴露、插件管理以及最终的资源清理。
1. 初始化集群
首先,通过 minikube start 命令启动一个单节点的 Kubernetes 集群。该命令会自动配置虚拟环境并安装 kubectl 命令行工具,确保其能够与集群通信。
$ minikube start * minikube v1.14.0 on Centos 7.8.2003 * 使用 docker 驱动 * 启动控制平面节点 minikube * 准备 Kubernetes v1.19.2 ... * 完成!kubectl 已配置为默认使用 "minikube"
2. 部署应用
Kubernetes 中,Pod 是运行容器的最小单元,而 Deployment 则负责管理 Pod 的声明式更新和弹性扩缩。
使用 kubectl create deployment 命令,基于 k8s.gcr.io/echoserver:1.4 镜像创建一个名为 hello-node 的 Deployment。该 Deployment 会确保 Pod 始终保持运行状态。
$ kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 deployment.apps/hello-node created $ kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 36s $ kubectl get pods NAME READY STATUS RESTARTS AGE hello-node-7567d9fdc9-prltr 1/1 Running 0 51s $ kubectl get events LAST SEEN TYPE REASON OBJECT MESSAGE 73s Normal Scheduled ... Successfully assigned ... 71s Normal Pulling ... Pulling image "echoserver:1.4" 43s Normal Pulled ... Successfully pulled image ...
3. 暴露服务
默认情况下,Pod 仅拥有集群内部 IP。若要从外部访问应用,必须创建 Service 资源。以下命令将 Deployment 暴露为 LoadBalancer 类型的 Service,并指定端口 8080。
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080 service/hello-node exposed $ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.109.212.214 <pending> 8080:32765/TCP 15s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5h31m $ minikube service list | default | hello-node | 8080 | http://192.168.49.2:32765 |
在 Minikube 环境中,LoadBalancer 类型的 Service 可以通过 minikube service hello-node 命令在浏览器中直接打开。
4. 管理插件
Minikube 提供了丰富的内置插件,用于扩展集群功能。以下示例演示如何启用、查看和禁用 metrics-server 插件。
$ minikube addons list | metrics-server | minikube | disabled | $ minikube addons enable metrics-server * 已启用 'metrics-server' 插件 $ minikube addons list | grep metrics | metrics-server | minikube | enabled ✅ | $ kubectl get pod,svc -n kube-system pod/metrics-server-d9b576748-5mh9l 1/1 Running 0 40s service/metrics-server ClusterIP 10.103.101.207 <none> 443/TCP 40s $ minikube addons disable metrics-server * 已禁用 'metrics-server' 插件
5. 清理资源
实验完成后,依次删除 Service 和 Deployment,然后再停止并销毁整个 Minikube 集群。
$ kubectl delete service hello-node service "hello-node" deleted $ kubectl delete deployment hello-node deployment.apps "hello-node" deleted $ minikube stop * 正在停止节点 "minikube" ... * 1个节点已停止。 $ minikube status host: Stopped kubelet: Stopped apiserver: Stopped $ minikube delete * 正在删除 "minikube" 集群 ... * 已删除 "minikube" 的所有痕迹。