主题
K8S学习环境搭建与初体验
课程目标
通过本课程的学习,你将能够:
- 根据自己的机器配置选择合适的K8S学习环境
- 成功搭建并运行一个K8S集群
- 使用kubectl进行基础操作
- 部署并访问你的第一个K8S应用
1. 选择合适的K8S学习环境
1.1 生产K8S集群 vs 学习环境
| 对比项 | 生产K8S集群 | K8S学习环境 |
|---|---|---|
| 节点数量 | 多个Master + 多个Worker | 单节点或少量节点 |
| 资源要求 | 高(每台至少4C8G) | 低(最低2C2G) |
| 高可用 | 必须配置 | 不需要 |
| 网络配置 | 复杂(CNI、负载均衡等) | 简单或自动配置 |
| 安装难度 | 复杂(数小时) | 简单(几分钟) |
| 成本 | 高(多台服务器) | 低(个人电脑或免费云资源) |
1.2 学习路径规划
第一阶段:学习环境(本课程)
├── 使用minikube/K3s/云服务器快速体验K8S
├── 理解K8S基础概念
└── 掌握kubectl基本操作
第二阶段:正式集群部署
├── 使用kubeadm部署多节点集群
├── 配置网络插件(CNI)
├── 配置存储方案
└── 配置监控日志
第三阶段:生产环境运维
├── 高可用架构设计
├── 性能优化
├── 故障排查
└── 安全加固2. 环境选择指南
2.1 根据机器配置选择
| 你的配置 | 推荐方案 | 说明 |
|---|---|---|
| 4核8G以上 | minikube | 功能最全,内置插件丰富 |
| 2核4G以下 | K3s | 轻量级,接近生产环境 |
| 无本地环境 | 云服务器/Killercoda | 零资源占用,即开即用 |
2.2 三种方案对比
| 方案 | 资源要求 | 安装难度 | 功能完整度 | 适合场景 |
|---|---|---|---|---|
| minikube | 4C4G | ⭐⭐ | ⭐⭐⭐⭐⭐ | 配置较好,追求完整功能 |
| K3s | 2C2G | ⭐ | ⭐⭐⭐⭐ | 配置较低,接近生产环境 |
| 云服务器 | 无要求 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 无本地环境 |
3. 方案A:minikube(首推)
3.1 minikube简介
minikube是Kubernetes官方提供的本地单节点K8S集群工具,适合个人学习和开发测试。
优势:
- 官方出品,文档完善
- 内置常用插件(dashboard、ingress、metrics-server等)
- 支持多种虚拟化驱动(Docker、VirtualBox、VMware、Hyper-V等)
- 跨平台支持(Windows、Mac、Linux)
3.2 系统要求
- 最低配置:2核CPU + 2GB内存 + 20GB磁盘
- 推荐配置:4核CPU + 4GB内存 + 20GB磁盘
- 虚拟化支持:需要开启CPU虚拟化(VT-x/AMD-V)
3.3 Windows安装minikube
前置条件
开启虚拟化
- 重启电脑进入BIOS
- 开启Intel VT-x或AMD-V
- 保存并重启
安装Docker Desktop(推荐驱动)
- 下载地址:https://www.docker.com/products/docker-desktop
- 安装并启动Docker Desktop
- 确保Docker正常运行
📌 重要说明:Docker 与 Kubernetes 的关系
你可能听说过"K8s 不再支持 Docker",这确实是真的,但需要理解两个不同的概念:
角色 是否被 K8s 支持 说明 Docker 作为容器运行时 ❌ 不支持 K8s 1.24+ 移除了 dockershim,生产环境使用 containerd 或 CRI-O Docker 作为开发工具 ✅ 仍然需要 构建镜像、本地测试、作为 minikube 驱动 为什么这里需要安装 Docker?
- minikube 使用 Docker 作为虚拟化驱动(
--driver=docker),在 Docker 容器中运行 K8s 节点- 你需要 Docker 来构建应用镜像(
docker build)- minikube 内部的 K8s 实际使用的是 containerd 作为容器运行时(自动配置)
简单理解:Docker 在这里是"虚拟机"的角色,不是 K8s 的容器运行时。
安装步骤
powershell
# 1. 下载minikube安装包
# 访问 https://github.com/kubernetes/minikube/releases/latest
# 下载 minikube-installer.exe
# 2. 运行安装程序,按提示完成安装
# 3. 验证安装
minikube version
# 4. 启动minikube(使用Docker驱动)
minikube start --driver=docker
# 5. 验证集群状态
minikube status
# 6. 查看kubectl是否能连接到集群
kubectl get nodes常见问题
问题1:虚拟化未开启
Error: This computer doesn't have VT-X/AMD-v enabled解决:进入BIOS开启虚拟化
问题2:Docker未运行
Error: Exiting due to PROVIDER_DOCKER_NOT_RUNNING解决:启动Docker Desktop
问题3:内存不足
Error: Unable to start VM: start: exit status 1解决:关闭其他程序释放内存,或调整minikube内存限制
powershell
minikube start --driver=docker --memory=20483.4 Mac安装minikube
前置条件
- 安装Docker Desktop
安装步骤
bash
# 1. 使用Homebrew安装
brew install minikube
# 2. 验证安装
minikube version
# 3. 启动minikube
minikube start --driver=docker
# 4. 验证集群
kubectl get nodes3.5 Linux安装minikube
前置条件
- 安装Docker
📌 关于 Docker 的说明:与 Windows/Mac 相同,这里的 Docker 是作为 minikube 的虚拟化驱动使用。minikube 内部的 K8s 使用 containerd 作为容器运行时,而非 Docker。
bash
# Rocky Linux 9 / CentOS
sudo dnf install -y docker
sudo systemctl start docker
sudo systemctl enable docker
# Ubuntu
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker安装步骤
bash
# 1. 下载minikube二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 2. 安装到系统目录
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 3. 验证安装
minikube version
# 4. 启动minikube
minikube start --driver=docker
# 5. 验证集群
kubectl get nodes3.6 minikube常用命令
bash
# 查看集群状态
minikube status
# 停止集群
minikube stop
# 删除集群
minikube delete
# 查看minikube IP
minikube ip
# 打开Dashboard
minikube dashboard
# 启用插件
minikube addons enable ingress
minikube addons enable metrics-server
# 查看已启用插件
minikube addons list
# SSH进入minikube节点
minikube ssh4. 方案B:K3s(轻量级)
4.1 K3s简介
K3s是Rancher Labs发布的轻量级Kubernetes发行版,专为资源受限环境设计。
优势:
- 单二进制文件,安装极简(一条命令)
- 资源占用极低(最低512MB内存可运行)
- 兼容标准K8S API
- 适合边缘计算和IoT场景
- 更接近生产环境架构
4.2 系统要求
- 最低配置:1核CPU + 512MB内存 + 5GB磁盘
- 推荐配置:2核CPU + 1GB内存 + 10GB磁盘
4.3 K3s安装
K3s需要在Linux环境下运行,Windows/Mac用户可以使用虚拟机(如VirtualBox、VMware或Multipass)。
在Linux上直接安装
bash
# 单节点安装(Server + Agent合一)
curl -sfL https://get.k3s.io | sh -
# 验证安装
sudo systemctl status k3s
# 查看节点
sudo kubectl get nodes
# 配置非root用户使用kubectl
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
chmod 600 ~/.kube/config
# 测试kubectl
kubectl get nodes使用Multipass安装(Windows/Mac推荐)
Multipass是Canonical出品的轻量级VM管理工具。
Windows/Mac安装Multipass:
bash
# Mac
brew install multipass
# Windows
# 下载安装包:https://multipass.run/创建Ubuntu虚拟机并安装K3s:
bash
# 1. 创建Ubuntu虚拟机
multipass launch --name k3s-node --cpus 2 --mem 2G --disk 10G
# 2. 进入虚拟机
multipass shell k3s-node
# 3. 在虚拟机内安装K3s
curl -sfL https://get.k3s.io | sh -
# 4. 验证安装
sudo kubectl get nodes
# 5. 获取kubeconfig(在宿主机访问)
multipass exec k3s-node -- sudo cat /etc/rancher/k3s/k3s.yaml > ~/.kube/k3s-config
# 修改server地址为虚拟机IP
sed -i "s/127.0.0.1/$(multipass info k3s-node | grep IPv4 | awk '{print $2}')/" ~/.kube/k3s-config
export KUBECONFIG=~/.kube/k3s-config
kubectl get nodes4.4 K3s常用命令
bash
# 查看K3s服务状态
sudo systemctl status k3s
# 停止K3s
sudo systemctl stop k3s
# 启动K3s
sudo systemctl start k3s
# 查看K3s日志
sudo journalctl -u k3s -f
# 卸载K3s
/usr/local/bin/k3s-uninstall.sh5. 方案C:云服务器(零本地资源)
5.1 阿里云/腾讯云/华为云免费试用
适用场景:无本地环境或配置极低
步骤:
- 注册阿里云/腾讯云/华为云账号
- 领取新用户免费试用(通常1-3个月)
- 创建云服务器(建议2核4G以上)
- 在云服务器上安装K3s或minikube
5.2 Killercoda(浏览器体验,无需安装)
适用场景:想立即体验,不想安装任何软件
使用步骤:
- 访问Killercoda网站
- 搜索"Kubernetes"场景
- 选择"Kubernetes Basics"或类似场景
- 在浏览器中直接操作K8S集群
优势:
- 无需注册账号
- 无需安装软件
- 即开即用
- 免费
6. kubectl基础操作
kubectl是Kubernetes的命令行工具,用于与K8S集群交互。
6.1 安装kubectl
Windows
powershell
# 使用choco安装
choco install kubernetes-cli
# 或使用curl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/windows/amd64/kubectl.exe"
# 将kubectl.exe添加到PATHMac
bash
brew install kubectlLinux
bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl6.2 验证kubectl连接
bash
# 查看kubectl版本
kubectl version --client
# 查看集群信息
kubectl cluster-info
# 查看节点
kubectl get nodes
# 查看节点详情
kubectl describe node6.3 核心命令
bash
# 查看所有资源
kubectl get all
# 查看Pod
kubectl get pods
# 查看Pod详情
kubectl describe pod <pod-name>
# 查看Pod日志
kubectl logs <pod-name>
# 进入Pod容器
kubectl exec -it <pod-name> -- /bin/bash
# 查看服务
kubectl get services
# 查看命名空间
kubectl get namespaces
# 切换命名空间
kubectl config set-context --current --namespace=<namespace>7. 部署第一个应用:Nginx
7.1 创建Deployment
bash
# 创建nginx deployment
kubectl create deployment nginx --image=nginx:latest
# 查看deployment
kubectl get deployment
# 查看Pod
kubectl get pods7.2 暴露服务
bash
# 创建Service暴露nginx
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看Service
kubectl get service
# 输出示例
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# nginx NodePort 10.96.123.45 <none> 80:30080/TCP 10s7.3 访问应用
minikube环境
bash
# 获取访问地址
minikube service nginx --url
# 或直接打开浏览器
minikube service nginxK3s环境
bash
# 查看节点IP
kubectl get nodes -o wide
# 访问nginx(使用NodePort)
curl http://<节点IP>:30080云服务器环境
bash
# 使用服务器公网IP访问
curl http://<服务器公网IP>:300807.4 清理资源
bash
# 删除service
kubectl delete service nginx
# 删除deployment
kubectl delete deployment nginx8. 课后练习
练习1:验证你的K8S环境
- [ ] 根据你的机器配置选择合适的方案
- [ ] 成功安装并启动K8S集群
- [ ] 运行
kubectl get nodes看到Ready状态
练习2:部署Nginx应用
- [ ] 创建nginx deployment
- [ ] 暴露NodePort服务
- [ ] 成功在浏览器中访问nginx欢迎页面
练习3:探索kubectl
- [ ] 查看所有命名空间下的Pod
- [ ] 查看系统组件(kube-system命名空间)
- [ ] 查看集群事件
练习4:启用Dashboard(minikube用户)
- [ ] 启用metrics-server插件
- [ ] 打开minikube dashboard
- [ ] 在Dashboard中查看你的nginx应用
9. 常见问题
Q1: minikube启动失败,提示驱动问题
解决:确保Docker Desktop已启动,或使用其他驱动
bash
# 查看可用驱动
minikube start --help | grep driver
# 使用VirtualBox驱动
minikube start --driver=virtualboxQ2: kubectl无法连接集群
解决:检查kubeconfig配置
bash
# 查看当前配置
kubectl config view
# 查看当前上下文
kubectl config current-context
# minikube用户重新配置
minikube update-contextQ3: 端口无法访问
解决:检查防火墙和安全组
bash
# 查看Service端口
kubectl get svc
# minikube用户可以使用端口转发
kubectl port-forward svc/nginx 8080:80
# 然后访问 http://localhost:8080Q4: 内存不足导致集群运行缓慢
解决:减少minikube资源使用或切换到K3s
bash
# 删除现有集群
minikube delete
# 使用更少资源重新创建
minikube start --driver=docker --memory=2048 --cpus=210. 下一步
完成本课程后,你应该已经:
- ✅ 成功搭建了自己的K8S学习环境
- ✅ 掌握了kubectl基础操作
- ✅ 部署并访问了第一个K8S应用
下节课预告:《K8S集群架构与核心概念》
- 深入理解K8S架构设计
- 掌握Pod、Service、Deployment等核心概念
- 学习K8S资源对象的定义和使用