K8s 容器运维 — 知识地图

本笔记为 MOC(Map of Content)

K8s 容器运维的核心难点不在编排语法,而在容器文件系统、挂载语义与运行时环境这三者的交互。本 MOC 汇总相关原子笔记。

存储与挂载 ⭐ 高频故障区

主题核心笔记
卷挂载的覆盖语义K8s卷挂载是覆盖而非合并
实战案例:挂载遮蔽 /usr/share案例-K8s容器时区异常-PVC挂载遮蔽usr-share

最容易忽视的一条规则

挂载点必须是镜像里不存在的目录。 只要挂载点在镜像中已有内容,就会被整体遮蔽——对 PVC、ConfigMap、Secret、hostPath 一律成立。 被遮蔽后镜像层与包数据库都毫发无损,卸载卷即恢复,但故障期间没有任何报错。

时区与运行时环境

主题核心笔记
TZ 变量与时区数据的关系TZ环境变量只是指针-时区数据才是本体
Alpine 镜像不含 tzdataAlpine镜像不自带tzdata

OS 时区 ≠ JVM 时区

JDK 自带 tzdb.dat,可能”date 显示 UTC 而 Java 日志显示 CST”。二者必须分别验证

镜像与诊断工具

主题核心笔记
docker history 的误导性docker-history是审计日志不是文件清单
包数据库与文件系统是两套真相apk数据库与文件系统是两套真相
ENOENT 无法区分层级容器文件消失排查-ENOENT无法区分层级
Dockerfile ENTRYPOINT 指令Dockerfile-ENTRYPOINT指令

网络与服务

主题核心笔记
DNS 故障排查方法论K8s-DNS-故障排查方法论
Service DNS 域名解析规则K8s-Service-DNS域名解析规则
NodePort 流量流转K8s-NodePort流量流转
MetalLB L2 模式限制MetalLB-L2模式-VIP-自身不支持跨网段访问
IPVS 负载均衡IPVS-IP虚拟服务器详解

配置与发布

主题核心笔记
ConfigMap 变更触发 Pod 重启K8s-ConfigMap变更触发Pod重启

日志采集

主题核心笔记
Fluent Bit 背压与缓冲FluentBit背压导致mem-buf-overlimit
VictoriaLogs 部署与保留VictoriaLogs-Windows部署 · VictoriaLogs-日志保留策略
LogsQL 查询语言LogsQL-查询语言

排查心法

四条实战原则

  1. 先查挂载,再查镜像:挂载遮蔽无法从容器内的”文件是否存在”看出,必须先查 mount 视角
  2. 找对照组:“同样技术栈却正常”的服务,是把问题从”制品缺陷”推进到”环境差异”的关键
  3. 反常证据当线索:“包记录完好但文件不见”这个矛盾,应尽早把方向从删除扭向遮蔽
  4. 优先怀疑配置层:离代码越近的配置改动,往往越容易被忽视

加固检查清单

措施目的
用准入策略(OPA/Kyverno)禁止挂载到 /usr/etc/lib/var 等系统目录从源头杜绝遮蔽类事故
Dockerfile 显式声明运行时依赖 + 构建期断言([ -f ... ]消除对基础镜像隐式内容的依赖
基础镜像用 digest 固定;Harbor 配置 Tag Immutability保证构建可复现
启动自检关键运行时资源(时区、CA 证书),不符则拒绝启动把静默错误转为显式失败
发布前跑”运行时资源冒烟测试”在交付前拦截