主题
附录:可直接使用的产物
本目录里的文件与正文一一对应:正文代码块的第一行(或紧跟 shebang 的第二行)标了 # appendix/<路径>, tools/sync-from-chapters.py 会把这些块抽取到这里。改正文后跑一次同步即可,不会出现「书里一套、附录一套」。
bash
python3 appendix/tools/sync-from-chapters.py # 同步(NEW/UPDATED/SAME)
python3 appendix/tools/sync-from-chapters.py --check # 只检查漂移,CI 用,漂移时退出码 1目录索引
| 路径 | 内容 | 出处 | 怎么用 |
|---|---|---|---|
configs/config-node01.yaml | 第一台(create / management)完整装机配置母版 | 3.3 | 上传到 HTTP 服务,ISO 启动时 harvester.install.automatic 拉取 |
configs/config-node04.yaml | join 节点(worker)示例配置 | 3.4 | 对照差异字段:server_url / token / mode: join / role: worker |
configs/gen-configs.sh | 一键生成 12 份 config + 一致性自检 | 3.5 | bash gen-configs.sh → out/config-node01..12.yaml |
network/01-clusternetwork-cn-vm.yaml | ClusterNetwork cn-vm | 4.3 | kubectl apply -f |
network/02-vlanconfig-vlan-cfg-vm.yaml | VlanConfig(12 节点、eno3/eno4、802.3ad) | 4.4 | kubectl apply -f;改网卡名/bond 模式前先读 4.9 |
network/03-nad-net-91.yaml | VM Network default/net-91(VLAN 91) | 4.6 | kubectl apply -f;VM 网卡引用 default/net-91 |
network/04-hostnetworkconfig-dhcp.yaml | 宿主机自身在 VLAN 91 上取 DHCP | 4.7 | 二选一(与 05 互斥) |
network/05-hostnetworkconfig-static.yaml | 宿主机静态 10.181.91.11-.22(推荐) | 4.7 | 每台节点一份,改 IP/节点名 |
network/06-ippool-net-91-dhcp.yaml | Managed DHCP 的 IPPool(network.harvesterhci.io) | 4.8 | 实验特性,需先装 addon |
network/07-ippool-lb-net-91.yaml | LoadBalancer 的 IPPool(networking.harvesterhci.io) | 5.6.3 | LB VIP 池 10.181.91.50-.99 |
network/08-svc-lb-vm-web-01.yaml | LoadBalancer 类型 Service 示例 | 5.6.3 | 把外部流量导到 VM 端口 |
vm/01-secret-vm-web-01-cloudinit.yaml | 双网卡 VM 的 cloud-init Secret(静态 IP 版) | 5.3.2 | 单台建 VM 时用 |
vm/02-vm-web-01.yaml | 双网卡 VirtualMachine 完整清单 | 5.3.3 | 单台建 VM 时用 |
vm/03-vmtpl-web.yaml | VM 模板 + 模板版本 | 6.2 | 批量交付的基础 |
vm/templates/vm.yaml.tpl | 批量渲染用的 VM 模板(占位符) | 6.5.2 | 被 gen-vms.sh 使用 |
vm/templates/cloudinit.yaml.tpl | 批量渲染用的 cloud-init 模板(占位符) | 6.5.3 | 被 gen-vms.sh 使用 |
vm/vms.csv | 机器清单(name,ip,cpu,memory,disk,tier,env) | 6.5.4 | 改这个文件就能改交付批次 |
vm/gen-vms.sh | 渲染 + 校验 + apply 的批量创建脚本 | 6.5.5 | IMAGE_PVC=… ./gen-vms.sh vms.csv render |
ops/preflight.sh | 装机前预检(UEFI/磁盘/网卡/连通性/时间) | 2.7 | 每台待装机器执行;退出码 = FAIL 数 |
ops/daily-check.sh | 每日 5 分钟巡检 | 7.1.3 | 挂 cron,输出留档 |
ops/cluster-snapshot.sh | 配置资产与节点网络实况快照 | 7.8.2 | 升级/扩容/排障前各拍一张 |
ops/net-check.sh | VLAN 直通网络 L1–L4 分层体检 | 8.2.10 | 网络出问题时第一个跑 |
ops/vm-net-verify.sh | 双网卡 VM(内部互通 + 固定 IP)一键验收 | 5.7.4 | 每台 VM 交付前跑一遍 |
tools/sync-from-chapters.py | 正文 → 附录同步工具 | 本文件 | 见上 |
使用顺序(第一次部署)
bash
# ① 装机前(每台机器)
sudo bash appendix/ops/preflight.sh http://10.181.0.5:8080
# ② 生成 12 份装机配置并发布
cd appendix/configs && bash gen-configs.sh && ls out/
# ③ 集群 Ready 后,按序建立 VM 直通网络
kubectl apply -f appendix/network/01-clusternetwork-cn-vm.yaml
kubectl apply -f appendix/network/02-vlanconfig-vlan-cfg-vm.yaml
kubectl get vlanstatus -A # 期望 12 条且全 Ready=True
kubectl apply -f appendix/network/03-nad-net-91.yaml
# ④ 先建一台样例 VM 验证网络,并跑一键验收
kubectl apply -f appendix/vm/01-secret-vm-web-01-cloudinit.yaml
kubectl apply -f appendix/vm/02-vm-web-01.yaml
./appendix/ops/vm-net-verify.sh vm-web-01 default ops
# ⑤ 批量交付(含逐台验收)
cd appendix/vm && IMAGE_PVC=image-79hdq ./gen-vms.sh vms.csv render # 评审 out/
cd appendix/vm && IMAGE_PVC=image-79hdq ./gen-vms.sh vms.csv apply
tail -n +2 appendix/vm/vms.csv | cut -d, -f1 | while read -r n; do
./appendix/ops/vm-net-verify.sh "$n"
done
# ⑥ 日常与排障
./appendix/ops/daily-check.sh
./appendix/ops/net-check.sh web-front-01 default⚠️ 所有 YAML 的字段名以 v1.8 官方文档为基准;落地前用
kubectl explain <resource>.spec --recursive或kubectl get <obj> -o yaml在自己的集群上复核一次,尤其是两个同名IPPool(network.与networking.)。