云原生入门系列|第2集:搭建你的第一个K8s实验环境 —— minikube 零基础教程
云原生入门系列第2集搭建你的第一个K8s实验环境 —— minikube 零基础教程1. 为什么需要本地环境学游泳不能只在岸上看视频学K8s也不能只看概念。你需要一个可随意折腾的集群而且是免费的、跑在你自己的电脑上。生产环境的集群至少需要几台服务器但本地开发可以用minikube—— 一个单节点的K8s集群占用资源小通常分配2核4GB内存即可支持 Linux/macOS/Windows。除了 minikube还有kindK8s in Docker、k3s等选择。但对于初学者minikube 最成熟文档最全。2. 安装前的准备minikube 需要一个虚拟化或容器驱动。推荐使用 Docker如果你已经安装了 Docker DesktopWindows安装 Docker Desktop for Windows并启用 WSL2 后端。macOS安装 Docker Desktop for Mac。Linux安装 Docker Engine。然后去 minikube 官网 下载适合你系统的二进制文件。Windows 快速安装使用 wingetwinget install minikube macOS 使用 brew brew install minikube Linux curl-LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64/usr/local/bin/minikube}启动你的第一个集群一切顺利的话一条命令启动minikube start如果没有报错你会看到类似输出 minikube v1.33.0 on Ubuntu 22.04✨ Using the docker driver based on user configuration Starting control plane node minikube in cluster minikube Creating docker container (CPUs2, Memory2200MB) … Preparing Kubernetes v1.28.3 on Docker 24.0.7 … Configuring bridge CNI (Container Networking Interface) … Verifying Kubernetes components… Enabled addons: default-storageclass, storage-provisioner Done! kubectl is now configured to use “minikube” cluster and default namespace这时候你的 K8s 集群已经运行起来了。执行 kubectl get nodes应该看到一个叫 minikube 的节点状态为 Ready。关于 kubectl —— 与 K8s 对话的瑞士军刀kubectl 是 K8s 的命令行工具。minikube 启动时会自动配置 kubectl 指向自己。如果你还没有 kubectlminikube 会帮你装好一个minikube kubectl --但为了方便建议单独安装。验证 kubectl 是否可用bashkubectl version --client --short常用别名很多人喜欢设置 alias kkubectl后续文章我们也将使用 k 来简化。你的第一个 Pod现在集群准备好了我们来运行一个真正的容器化应用。创建 nginx Podbashkubectl run my-nginx --imagenginx --port80这条命令会创建一个名为 my-nginx 的 Pod容器镜像为 nginx。查看 Pod 状态bashkubectl get pods一开始是 ContainerCreating几十秒后变成 Running。此时 Pod 在集群内部有一个 IP可通过 kubectl get pod my-nginx -o wide 查看。但这个 IP 只有集群内部能访问。我们怎样才能在浏览器里看到 nginx 欢迎页呢需要用到 端口转发bashkubectl port-forward pod/my-nginx 8080:80然后打开浏览器访问 http://localhost:8080你会看到 nginx 主页。按 CtrlC 停止转发。几个必会的 minikube 命令命令 作用minikube status 查看集群状态是否 runningminikube pause / unpause 暂停/恢复集群不销毁资源minikube stop 停止集群虚拟机或容器停止minikube start 重新启动已存在的集群minikube delete 删除整个集群所有资源被清空minikube dashboard 打开 Web UI 管理界面非常直观推荐探索执行 minikube dashboard 后会自动打开浏览器里面有工作负载、网络、存储等图形化面板。遇到问题怎么办问题1minikube start 卡在 “Starting the cluster”检查你的 Docker 是否正在运行。尝试 minikube delete 后重新 start。指定驱动minikube start --driverdocker 或 --driverhyperkitmacOS。问题2kubectl get nodes 显示 “The connection to the server … was refused”确认 minikube 状态minikube status。如果没有 running执行 minikube start。问题3端口转发时提示 “Unable to listen on port 8080”8080 可能被其他程序占用更换一个端口如 kubectl port-forward pod/my-nginx 8888:80访问 localhost:8888。扩展用 kind 做备选环境如果你觉得 minikube 太重需要虚拟化可以尝试 kindKubernetes in Docker。它完全运行在 Docker 容器中启动速度更快。安装 kindbashbrew install kind # macOS或者从 GitHub releases 下载。创建集群bashkind create cluster --name my-k8s之后 kubectl cluster-info --context kind-my-k8s 确认。删除集群kind delete cluster --name my-k8s。本集实战任务为了巩固今天的知识请完成以下小任务启动 minikube 集群。创建一个 Pod 运行 httpdapache镜像。用 kubectl port-forward 让本机能访问到 httpd 默认页面。打开 minikube dashboard在界面里找到你刚刚创建的 Pod查看它的日志。完成这些你就拥有了一个随时可用的 K8s 实验环境。