Skip to content

附录:可直接使用的产物

本目录里的文件与正文一一对应:正文代码块的第一行(或紧跟 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.yamljoin 节点(worker)示例配置3.4对照差异字段:server_url / token / mode: join / role: worker
configs/gen-configs.sh一键生成 12 份 config + 一致性自检3.5bash gen-configs.shout/config-node01..12.yaml
network/01-clusternetwork-cn-vm.yamlClusterNetwork cn-vm4.3kubectl apply -f
network/02-vlanconfig-vlan-cfg-vm.yamlVlanConfig(12 节点、eno3/eno4、802.3ad)4.4kubectl apply -f;改网卡名/bond 模式前先读 4.9
network/03-nad-net-91.yamlVM Network default/net-91(VLAN 91)4.6kubectl apply -f;VM 网卡引用 default/net-91
network/04-hostnetworkconfig-dhcp.yaml宿主机自身在 VLAN 91 上取 DHCP4.7二选一(与 05 互斥)
network/05-hostnetworkconfig-static.yaml宿主机静态 10.181.91.11-.22(推荐)4.7每台节点一份,改 IP/节点名
network/06-ippool-net-91-dhcp.yamlManaged DHCP 的 IPPool(network.harvesterhci.io4.8实验特性,需先装 addon
network/07-ippool-lb-net-91.yamlLoadBalancer 的 IPPool(networking.harvesterhci.io5.6.3LB VIP 池 10.181.91.50-.99
network/08-svc-lb-vm-web-01.yamlLoadBalancer 类型 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.yamlVM 模板 + 模板版本6.2批量交付的基础
vm/templates/vm.yaml.tpl批量渲染用的 VM 模板(占位符)6.5.2gen-vms.sh 使用
vm/templates/cloudinit.yaml.tpl批量渲染用的 cloud-init 模板(占位符)6.5.3gen-vms.sh 使用
vm/vms.csv机器清单(name,ip,cpu,memory,disk,tier,env)6.5.4改这个文件就能改交付批次
vm/gen-vms.sh渲染 + 校验 + apply 的批量创建脚本6.5.5IMAGE_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.shVLAN 直通网络 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 --recursivekubectl get <obj> -o yaml 在自己的集群上复核一次,尤其是两个同名 IPPoolnetwork.networking.)。