跳转到内容

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 三种方案对比

方案资源要求安装难度功能完整度适合场景
minikube4C4G⭐⭐⭐⭐⭐⭐⭐配置较好,追求完整功能
K3s2C2G⭐⭐⭐⭐配置较低,接近生产环境
云服务器无要求⭐⭐⭐⭐⭐⭐⭐⭐无本地环境

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

前置条件

  1. 开启虚拟化

    • 重启电脑进入BIOS
    • 开启Intel VT-x或AMD-V
    • 保存并重启
  2. 安装Docker Desktop(推荐驱动)

📌 重要说明: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=2048

3.4 Mac安装minikube

前置条件

  1. 安装Docker Desktop

安装步骤

bash
# 1. 使用Homebrew安装
brew install minikube

# 2. 验证安装
minikube version

# 3. 启动minikube
minikube start --driver=docker

# 4. 验证集群
kubectl get nodes

3.5 Linux安装minikube

前置条件

  1. 安装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 nodes

3.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 ssh

4. 方案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 nodes

4.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.sh

5. 方案C:云服务器(零本地资源)

5.1 阿里云/腾讯云/华为云免费试用

适用场景:无本地环境或配置极低

步骤

  1. 注册阿里云/腾讯云/华为云账号
  2. 领取新用户免费试用(通常1-3个月)
  3. 创建云服务器(建议2核4G以上)
  4. 在云服务器上安装K3s或minikube

5.2 Killercoda(浏览器体验,无需安装)

适用场景:想立即体验,不想安装任何软件

网址https://killercoda.com/

使用步骤

  1. 访问Killercoda网站
  2. 搜索"Kubernetes"场景
  3. 选择"Kubernetes Basics"或类似场景
  4. 在浏览器中直接操作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添加到PATH

Mac

bash
brew install kubectl

Linux

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/kubectl

6.2 验证kubectl连接

bash
# 查看kubectl版本
kubectl version --client

# 查看集群信息
kubectl cluster-info

# 查看节点
kubectl get nodes

# 查看节点详情
kubectl describe node

6.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 pods

7.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   10s

7.3 访问应用

minikube环境

bash
# 获取访问地址
minikube service nginx --url

# 或直接打开浏览器
minikube service nginx

K3s环境

bash
# 查看节点IP
kubectl get nodes -o wide

# 访问nginx(使用NodePort)
curl http://<节点IP>:30080

云服务器环境

bash
# 使用服务器公网IP访问
curl http://<服务器公网IP>:30080

7.4 清理资源

bash
# 删除service
kubectl delete service nginx

# 删除deployment
kubectl delete deployment nginx

8. 课后练习

练习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=virtualbox

Q2: kubectl无法连接集群

解决:检查kubeconfig配置

bash
# 查看当前配置
kubectl config view

# 查看当前上下文
kubectl config current-context

# minikube用户重新配置
minikube update-context

Q3: 端口无法访问

解决:检查防火墙和安全组

bash
# 查看Service端口
kubectl get svc

# minikube用户可以使用端口转发
kubectl port-forward svc/nginx 8080:80
# 然后访问 http://localhost:8080

Q4: 内存不足导致集群运行缓慢

解决:减少minikube资源使用或切换到K3s

bash
# 删除现有集群
minikube delete

# 使用更少资源重新创建
minikube start --driver=docker --memory=2048 --cpus=2

10. 下一步

完成本课程后,你应该已经:

  • ✅ 成功搭建了自己的K8S学习环境
  • ✅ 掌握了kubectl基础操作
  • ✅ 部署并访问了第一个K8S应用

下节课预告:《K8S集群架构与核心概念》

  • 深入理解K8S架构设计
  • 掌握Pod、Service、Deployment等核心概念
  • 学习K8S资源对象的定义和使用

参考资源

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径