Skip to content

从零到可用的 libvirt + Vagrant + k3s 学习路径 #39

Description

@damingerdai

✔ 总体路线图(先建立认知)

Linux/KVM基础
      ↓
libvirt(虚拟化管理层)
      ↓
Vagrant(自动化 VM 编排)
      ↓
k3s(三节点 Kubernetes)
      ↓
K8s 核心机制学习

✔ Phase 0:准备环境(1 次性)

目标:把虚拟化能力打通

安装 libvirt + KVM

sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

加入用户组:

sudo usermod -aG libvirt $USER
sudo usermod -aG kvm $USER

验证:

virsh list --all

安装 Vagrant + libvirt plugin

sudo apt install vagrant

安装 provider:

vagrant plugin install vagrant-libvirt

✔ Phase 1:理解 libvirt(不深入,只要够用)

目标:知道 VM 是怎么被管理的

你需要理解 4 个概念:

  • domain(虚拟机)
  • network(虚拟网络)
  • storage pool(磁盘)
  • bridge(桥接网络)

基础命令

virsh list --all
virsh net-list
virsh dominfo vm1

学习重点(非常重要)

你只需要理解:

libvirt = 管 VM 生命周期 + 网络 + 磁盘

不用深入源码级理解。


✔ Phase 2:Vagrant(核心自动化层)

目标:用代码生成 3 个 VM


安装验证

vagrant --version
vagrant plugin list

确认有:

  • vagrant-libvirt

学习 Vagrant 4 个核心概念

  • box(基础镜像)
  • provider(libvirt)
  • Vagrantfile(配置)
  • provision(自动安装脚本)

第一个 VM

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"

  config.vm.define "node1" do |node|
    node.vm.hostname = "node1"
    node.vm.network "private_network", ip: "192.168.56.10"
  end
end

运行:

vagrant up

✔ Phase 3:搭建 3 节点 VM 集群(关键阶段)

目标:得到 3 台可 SSH 的机器


推荐结构

node1 (server)
node2 (worker)
node3 (worker)

Vagrantfile 核心结构

(你后面可以让我帮你生成完整版本)


学习重点

你要理解:

  • IP 分配
  • SSH 登录
  • 网络互通
  • VM 生命周期

✔ Phase 4:安装 k3s(重点)

目标:真正进入 Kubernetes


1. server 节点

curl -sfL https://get.k3s.io | sh -

获取 token:

cat /var/lib/rancher/k3s/server/node-token

2. worker 节点加入

curl -sfL https://get.k3s.io | \
K3S_URL=https://node1:6443 \
K3S_TOKEN=xxx sh -

3. 验证

kubectl get nodes

✔ Phase 5:K8s 基础学习(核心)

你要按顺序学:


1. Pod / Deployment

  • 创建 nginx
  • replicas

2. Service

  • ClusterIP
  • NodePort

3. Ingress

  • Traefik(k3s 默认)

4. Scheduling(重点)

  • Pod 分布在哪个节点
  • NodeSelector
  • taint / toleration

5. 存储

  • PVC
  • local-path-provisioner

✔ Phase 6:故障模拟(这是你最大收获)

你可以做:

virsh shutdown node2

观察:

  • Pod 是否重建
  • 调度变化
  • service 是否正常

✔ Phase 7:进阶(可选)

当你熟悉后再做:

  • Helm
  • StatefulSet
  • CloudNativePG
  • monitoring stack

✔ 推荐学习节奏(非常重要)

Week 1

  • libvirt + Vagrant
  • 3 VM 跑起来

Week 2

  • k3s multi-node
  • Pod / Service

Week 3

  • Ingress + scheduling

Week 4

  • 存储 + StatefulSet

✔ 最重要的原则(避免你走偏)

❌ 不要一开始做:

  • Flux
  • ArgoCD
  • Longhorn
  • Istio
  • CNPG HA

这些会让你:

变成“系统工程师”,而不是“K8s 学习者”


✔ 正确目标

理解 Kubernetes 是怎么调度和运行容器的


✔ 你这个方案的优势

相比:

  • 两台物理机
  • minikube
  • 单节点 k3s

这个方案是:

✔ 可控
✔ 可重复
✔ 可破坏
✔ 可重建
✔ 接近真实集群行为


source: https://chatgpt.com/c/6a2c9d5a-9f2c-83ec-8708-86a8cced27ba

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions