BASELINE — 环境事实与常用命令(稳定层)¶
2026-10-01 从
docs/HANDOFF.md拆出。分工:HANDOFF 只回答「现在是什么状态、下一步做什么」; 本文件回答「环境长什么样、有哪些坑、命令怎么写」。两者都按需查阅, 但 HANDOFF 由SessionStartHook 在每次会话开始时注入,故只装变化的内容。 拓扑与凭据的权威源:env-inventory/inventory.yaml、~/.secrets/。
1. 主机与角色【已确认】¶
| 集群 | 主机 | 角色 |
|---|---|---|
| k8s | .10 / .13 / .14 / .15 | master-01 + node-01~03 |
| slurm | .16 / .17 / .18 / .19 / .20 | 控制主备 + 计算 01~03 |
| lustre | .21 / .22 | MGS/MDS + OSS |
| lsf | .23 / .24 / .25 / .26 / .27 | 主控主备 + 计算 01~03 |
| hpc | .28 | 统一提交节点 |
| license | .29 | FlexLM 许可服务器 |
| registry | .31 | Harbor 内网镜像仓库(harbor-01,v2.15.2) |
| network | .2 | OpenWrt 旁路由 / NAT 网关 + frpc 隧道客户端 |
| local | .249 = .250 | 本机 dell-R620(KVM 宿主 + 计费代理 token_proxy) |
- 登录:本机 dell-R620(br0=.249 / eno2=.250,同机双网口,当前执行环境经
.250)root 免密 ssh 直连 20 台(.2、.10–.29中除.11/.12/.30的 18 台、.31);.11/.12/.30无此主机。 - 权威源:
env-inventory/inventory.yaml(21 台;2026-10-03 增补.2/.31并纳入本机)。
2. 版本与运行形态【已确认】¶
- Slurm 26.05.2:
.18~.20各 8 核(24 CPU),4 分区;slurmdbd active。 - HPC/EDA 仿真环境:Lmod 8.7.65(家族门面制——先 load
synopsys/cadence/siemens,子工具才出现在module avail);LDAP 2.6.10 + sssd 客户端接入(域用户 uid≥2000,shell/bin/csh);Slurm 未接 license 调度(scontrol show lic为空,排队≠许可证可用)。完整契约(分区上限 / 模块树 / 挂载路径 / 提交模板 / 能力边界)见env-inventory/hpc-simulation-env.yaml。 - LSF 10.1.0.12 CE,集群
lsfce,8 队列,.23/.24主备;命令必须带LSF_ENVDIR/LSF_SERVERDIR(否则 rc=255)。 - Lustre 2.17.0,文件系统
edafs:.21=MGS/MDS、.22=OSS、.28=唯一挂载客户端(/mnt/lustre);服务端磁盘层 IO 在osd-ldiskfs.*.brw_stats(mdt.*/obdfilter.*层没有)。 - K8s v1.36.4,业务在
server;入口 Traefik + Envoy Gateway,公网经 frp;单控制面(.10),VIP .8:16443由 keepalived + haproxy 承载(依赖 SELinux 端口标签与haproxy_connect_any)。 - 监控栈 kube-prometheus-stack 91.4.1(Prometheus v3.13.3,retention 15d/90GiB 落
nfs-csi-hdd);Alertmanager 配置存 Secretalertmanager.yaml.gz。 - 本机 Dell R620(Ubuntu 24.04.3):
br0=.249、eno2=.250(跑 apt node-exporter + IPMI 采集)。 k8s_136_cluster_deploy重跑会重写 haproxy 后端(含已关闭的.11/.12)。token_proxy(项目外,.250):计量代理,Hook > Rules > Skill;usage.jsonl每行一请求(轮内步数 = 同turn_key条数);计费 0.02/1.0/4.0(元/百万)。- 注入机制:
SessionStart注入 HANDOFF 全文(仅会话开始一次);user_rules/每轮注入;skill 按需加载。 - SELinux / firewalld 期望态【已确认】:2026-10-03 起 19 台内网主机 SELinux 统一
permissive(lsf 5 台 + hpc 为disabled;不回改,回改需 relabel),firewalld 全部停止 + 禁用。 复核、改配置与回滚见selinux-firewall-20261003/(工程名即主题目录)。香港 frps(公网入口) 与 OpenWrt 旁路由不在该范围,其防火墙不得关。
3. 机制性陷阱【已确认】¶
这些不是"事实",而是会误导判断的机制——不知道就会做出错误决策。
cluster标签由 ServiceMonitor relabel 按节点所属集群生成,会覆盖指标文件里的同名标签:.28的 Lustre 客户端指标cluster=hpc而非lustre,大盘过滤口径须据此设计(2026-10-01 实测,曾因此走弯路)。- Calico 开 natOutgoing:Pod 出集群 SNAT 成节点 IP —— 防火墙放行来源是节点 IP,不是 Pod 网段。
helm upgrade用--no-hooks(pre-upgrade hook 拉ghcr.io/…)决定保留:代理出口为 url-test 按延迟选路,延迟低 ≠ 带宽大,选到低带宽节点时拉取可慢到撞--timeout(2026-10-01 复测稳态 1.2–1.8 MiB/s,但该风险成立)。- 共享库
~/py_public_modules被 6 个工程以.pth挂载(改一处影响全部),未纳入 git。 kubectl exec不继承清单里的namespace:不带-n会落到default,报 "pod not found",表现为「命令一直重试到超时」。清单自带的namespace只对 apply 生效(2026-10-01 EFK 部署踩到)。- 开了
xpack.security的服务,容器readinessProbe不能用httpGet:端点要求认证,探针拿到 401 → Pod 长期0/1,而服务本身早已 GREEN。改用exec+curl -u "$PW"(2026-10-01 EFK 上线实测)。 - StatefulSet 的 Pod template 变更后,Pod 未必自动重建:实测
kubectl apply已更新 sts spec(探针已变),旧 Pod 却仍在跑旧探针,需显式kubectl delete pod <name>(2026-10-01 实测)。 - 集群内 Pod 解析不了
rainchen.top(CoreDNS 只负责集群域名):黑盒探测外部域名须用 IP + module 的headers.Host,不能直接写域名(2026-10-01 实测)。 - 工具异常不得当作事实:
LS返回空 ≠ 目录为空,改用 Glob 取证(2026-09-30 起约定)。 sshpass用-e/-f,禁用-p:-p会把口令暴露在进程参数里。- 管道会让返回码失真:
cmd | tail -3的 rc 是tail的 0,安装/采集命令的失败被掩盖为成功(2026-10-02 实测踩到);校验 rc 时命令不得接管道。 - 指标 relabel 生效有 45~90s 延迟:改完采集配置立即查指标标签会看到旧值,须等一个抓取周期再判定(2026-10-02 实测)。
elasticsearch-plugin install <url>不落包内config/目录:带词典的插件(如 IK)装完只多出 jar,缺main.dic/surname.dic会让Dictionary.initial()抛异常;该异常发生在AnalysisRegistry.build阶段,后果是索引创建失败、集群整体 red(不只是分词不可用)。须从同 URL 的包中解出config/拷入插件目录(2026-10-13 实测)。
4. 命令速查¶
timeout 6 ssh -n -o BatchMode=yes -o ConnectTimeout=3 root@<ip> hostname # 连通性
kubectl get po,deploy,sts,ds -A # K8s 总览
cd env-monitor-deploy && .venv/bin/python main.py verify # 链路体检 / drift(日常见其 RUNBOOK.md)
cd dell-r620-monitor-20260929 && sudo -n .venv/bin/python main.py drift # R620 温度链路(只读)
ssh root@192.168.31.10 "systemctl is-active haproxy; curl -sk https://192.168.31.8:16443/healthz"
ssh root@192.168.31.21 'curl -s localhost:9100/metrics | grep -c "^lustre_"' # 领域采集产物 / 指标计数
cd monitoring-p2-20261001 && .venv/bin/python -c "from utils.cmd import SSHRunner; print(SSHRunner().run('192.168.31.16','hostname').stdout)" # 集群外主机只读取数(凭据由共享库处理,无需接触 secrets;多台用 ThreadPoolExecutor(5) 并行)
python3 env-inventory/build_secrets_env.py # 刷新凭据快照(幂等)
cd selinux-firewall-20261003 && .venv/bin/python main.py drift # SELinux/firewalld 漂移检测(0 无漂移 / 1 有漂移 / 2 检测失败)
5. 文档地图¶
| 文件 | 管什么 |
|---|---|
docs/HANDOFF.md |
当前状态、待办、红线(每会话注入) |
docs/BASELINE.md |
本文件:环境事实、机制陷阱、命令速查 |
docs/PROJECT-MAP.md |
项目全局地图:任务路由 / 依赖图 / 子项目卡片 / 文档约定 |
docs/MONITORING-ROADMAP.md |
监控体系蓝图:八维度口径 / G1–G8 缺口台账 / P0–P2 |
docs/backup/README.md |
根级档案备份台账(各工程备份见其自身 backup/) |
来源:
/home/rain/Documents/k8s_ins/docs/BASELINE.md| 最后更新:2026-10-13 19:50(由build/sync.py同步,请勿在站点侧修改)