# 00-04-部署环境说明 > 本文描述本仓库文档所针对的**验证环境**:节点布局、IP、OS、K3s 版本等。其他环境按需对照调整。 ## 1. 节点与角色 | 主机名 | IP | 角色 | 说明 | | -------- | ------------- | --------------- | --------------------------------------- | | ylc61 | 192.168.2.61 | k3s server | 控制节点,运行 API、etcd、Traefik 等 | | ylc62 | 192.168.2.62 | k3s worker | 工作节点 | | ylc63 | 192.168.2.63 | k3s worker | 工作节点 | | ylc64 | 192.168.2.64 | k3s worker | 工作节点 | | ylc65 | 192.168.2.65 | Linux 工作机(非 K3s) | **不参与** `kubectl get nodes`;提供日常 **Linux/x86_64** 环境,用于克隆本仓库、跑 `ansible-playbook` / `scripts/verify.sh`、编辑与排障;通过 SSH 连 ylc61~ylc64 执行自动化,磁盘与 **§3.1 K3s 节点约定无关**(按本机实际即可) | | openwrt | 192.168.2.1 | OpenWrt 主路由 | 局域网网关;可选 HAProxy 将 80/443 转发至 K3s,见 `01-07` | | onecloud | 192.168.2.22 | ARM32(Armbian) | 非 K3s 集群节点;armv7 / NFS 等文档的实验或外部 curl 来源 | - Kubernetes 中的节点名使用短主机名(**仅** `ylc61`~`ylc64` 四类 K3s 机器),与 inventory 中 `[k3s_server]` / `[k3s_worker]` 一致;`ylc65` **不是**集群成员。便于配合 Cloudflare CDN(若计算机 hostname 为 FQDN,本机解析会优先走本地导致无法访问)。 - **控制机**(运行 `ansible-playbook`、`verify.sh`):推荐 **`ylc65`(Linux 工作机)** 或 ylc61;亦可在你的本机 Linux 上执行,只要装好 Ansible、能 SSH 到 inventory 中的节点。 ## 2. 软件版本(已验证) | 组件 | 版本 | 备注 | | ------- | ----------------- | --------------------------- | | OS | Fedora 43 Server (CoreOS) | 其他 RHEL 系 / Debian 系按文档说明适配 | | K3s | v1.34.5+k3s1 | 来自 get.k3s.io 默认 | | Ansible | ansible-core 2.18 | 用于 `01-06` 自动化安装 | ## 3. 网络与存储 - **网段**:192.168.2.0/24 - **可选**:OpenWrt 主路由(上表 `openwrt`,192.168.2.1)上配置 HAProxy 负载均衡,将 80/443 转发到 K3s 节点,见 `01-07-openwrt-haproxy.md` ### 3.1 磁盘规划(四台 K3s 节点统一:10G + 32G) 本仓库验证环境约定:**每台 K3s 节点**(`ylc61`~`ylc64`,即 1 server + 3 worker)各用一块约 **10G 系统盘**(根文件系统)+ 一块约 **32G 数据盘**,与 Longhorn、K3s `--data-dir` 实验相匹配。**`ylc65` 为工作机,不适用本节 `/storage` 与 K3s 数据盘约定。** - **`/storage` 必须是独立挂载点**(数据盘格式化后挂载),**不能**只是根分区上的普通目录;否则镜像、local-path、Longhorn 仍会写满系统盘,控制节点易出现 **DiskPressure**。 - **K3s**:server 与 worker 均使用 `--data-dir=/storage`(见 `ansible/group_vars/all.yml`)。 - **token 路径**:`/storage/server/token` **自检(每台执行)**: ```bash findmnt -n -o SOURCE / /storage lsblk -f ``` 两行 `SOURCE` 应指向**不同**块设备(或不同 LV);若 `/storage` 未单独挂载,请先完成分区、格式化、`/etc/fstab` 再装 K3s(见 `01-06`)。 ### 3.2 推荐自动化顺序 1. (可选)`ansible/playbooks/k3s-prepare-storage.yml`:声明 `k3s_data_disk_device` 并启用 `k3s_prepare_storage` 时,幂等准备 `/storage`。 2. `ansible/playbooks/k3s-init-and-install.yml`:安装 K3s(可开启 `k3s_verify_storage_mount` 校验挂载)。 3. (可选)`ansible/playbooks/longhorn-install.yml`:Helm 安装 Longhorn(`ansible/files/03-07-longhorn/values-lab.yaml`)。 4. (可选)按 `03-05` 应用本仓库 **local-path** ConfigMap 真源(`ansible/files/03-05-local-path-config/local-path-config-lab.json`)。 ## 4. 防火墙 - **firewalld**:启用 - **已放行端口**: - 6443/tcp(k3s API,仅 server) - 8472/udp(flannel VXLAN,全部节点) - flannel.1、cni0 加入 trusted zone ## 5. Ansible 相关 - **inventory**:`ansible/inventory.ini`,分组 `k3s_server`、`k3s_worker`、`k3s_nodes`(**勿**将 `ylc65` 列入 K3s 分组;工作机只作为 Ansible 控制端) - **变量**:`ansible/group_vars/all.yml`,含 `k3s_data_dir`、`k3s_server_ip`、`k3s_manage_`* 等 - **playbook(k3s)**:`ansible/playbooks/k3s-init-and-install.yml` - **playbook(数据盘,可选)**:`ansible/playbooks/k3s-prepare-storage.yml` - **playbook(Longhorn,可选)**:`ansible/playbooks/longhorn-install.yml`(Helm + `ansible/files/03-07-longhorn/values-lab.yaml`,文档 `03-07`) - **playbook(nginx 矩阵)**:`ansible/playbooks/nginx-matrix-deploy.yml`(manifests 在 `ansible/files/02-05-nginx-matrix/`,文档 `02-05`) - **playbook(nginx TLS 矩阵)**:`ansible/playbooks/nginx-matrix-tls-deploy.yml`(manifests 在 `ansible/files/03-02-nginx-matrix-tls/`,文档 `03-02`(02-05 升级版)) - **SSH**:root 连接,`scripts/ssh/setup-k3s-workers-ssh.sh` 预配密钥 ## 6. 验证时间 - 2026-03:**4 节点**(1 server + 3 worker)集群按 `01-06` 一次性安装成功,各节点 Traefik 入口 404 可达。自动化与验证常在 **`ylc65` Linux 工作机**上执行,该主机不参与 K3s。