-
日志收集链路:采集、传输、存储与检索
日志链路是一条数据管道:应用产生事件,采集端读取,传输层削峰,存储层建立索引,查询端再按条件检索。任何一段都可能限流或中断。设计重点不是“能看到日志”,而是在业务高峰与局部故障下,日志不反向阻塞业务,并能说明丢失、重复与延迟的边界。 两种 Agent 采集模式 读文件 tail 模式由节点 Agent 监听日志文件,记录文件标识和读取偏移。它适合传统进程、需要本地落盘审计的场景,也便于应用与采集器
韩澈
-
密钥与配置管理:Vault 与 Sealed Secrets
配置与密钥都能改变应用行为,但泄露后果不同。端口、功能开关、重试次数通常可公开评审,适合进入普通配置仓库;数据库密码、签名私钥、访问令牌和加密材料不可公开,需要限制读取、轮换和审计。判断标准不是文件名,而是内容泄露后是否会赋予权限、暴露数据或破坏身份可信度。 密钥不能以明文进入 Git 把密钥从当前分支删除,并不等于它已经消失。Git 对象、历史提交、分支、标签、代码评审缓存、CI 工作区和开发者
Vector 陈
-
容器镜像优化:分层、多阶段构建与体积控制
镜像优化不只是追求一个更小的数字。镜像会进入构建缓存、制品仓库、节点本地存储和运行时,每多一份无用数据,都可能增加传输、解压、扫描与回收成本。优化的目标应同时覆盖可重复构建、缓存命中、运行安全和排障能力。 镜像分层如何工作 Dockerfile 中多数会改变文件系统的指令都会产生只读层。构建器按顺序计算指令及其输入的缓存标识;前一层变化后,依赖它的后续层通常都要重建。容器启动时只在镜像只读层之上增
宋识
-
IaC 入门:Terraform 的状态管理与模块化
基础设施即代码的核心,是把资源期望状态放进可评审的声明文件,再由工具比较现状并生成变更。命令式脚本描述“创建网络、再创建实例”,重复执行前必须自行判断对象是否存在;声明式配置描述“网络和实例应当具备这些属性”,调谐过程依据差异决定创建、更新或删除。幂等能力来自这种状态比较,但仍受资源提供方接口、副作用和配置完整性影响。 声明式配置与执行图 Terraform 解析资源引用,建立依赖图,并在无依赖冲
Talen
-
混沌工程入门:用故障注入验证系统韧性
系统在预发环境跑得好好的,到生产上遇到一个依赖超时就全线变慢。这类事发生几次后会让人意识到:正确性和韧性是两件事。前者说没有故障时行为对不对,后者说有故障时行为还能不能接受,而后者几乎不可能靠读代码确认。 实验的前提:先有假设 混沌工程的核心动作不是注入故障,而是验证假设,注入只是手段。 假设需要参照物,即稳态指标:一组代表"系统当前正常"的可观测指标,如请求成功率、P99 延迟、核心接口 QPS
周牧野
-
滚动更新与回滚:K8s 健康检查的细节
Kubernetes 的滚动更新能逐步替换副本,但“Pod 已启动”与“业务可接流量”并不是同一状态。更新能否不断流,取决于探针语义、替换节奏、流量摘除和进程退出能否在一个时间窗口内配合,而不只是 Deployment 使用了 RollingUpdate。 readiness 与 liveness 不能互换 readinessProbe 表示当前容器是否准备好接收流量。探针失败时,容器不会被重启,
凛川 Wave
-
容器网络入门:CNI、Service 与 Ingress 的流量路径
一台机器上跑多个容器,用 veth pair 加网桥就能互通。跨了机器,问题就变成另一个:Pod 的 IP 是 10.244.1.5,另一台宿主机上的 Pod 要访问它,怎么知道把包发到哪里。容器网络的设计,基本都围绕这个"怎么知道"展开。 要解决的问题:跨主机 Pod 互通 Kubernetes 对网络的要求可概括成三条:Pod 之间不经 NAT 直接互通;节点与 Pod 互通;Pod 自己看到
码同客
-
监控告警体系:指标选型、阈值与降噪
监控系统收集的数据越多,不代表故障越容易发现。有效体系需要回答三个问题:用户是否受影响、影响正在扩大吗、值班人员能采取什么动作。若一个告警没有明确的响应者与处置路径,它更接近噪声,而不是安全网。 黄金四指标、RED 与 USE 面向在线服务时,黄金四指标提供了一组稳定视角: 指标 关注内容 常见观测 延迟 请求完成速度 成功与失败请求的耗时分布 流量 系统承载量 每秒请求、消息、字节 错误 未满足
许既白
-
CI/CD 流水线设计:从提交到上线的每一步
流水线的价值不是把若干命令搬进自动化平台,而是建立一条可追溯、可重复、能在错误扩散前停下来的交付路径。设计时应从反馈速度与风险暴露顺序出发:成本低、执行快、失败概率高的检查靠前,昂贵或会改变环境状态的动作靠后。 阶段划分与快速失败 一条常见路径可以拆成六段,各段只输出下一段真正需要的结果: 阶段 核心动作 失败后的处理 lint 格式、静态规则、配置语法 立即停止,不占用构建资源 构建 编译、打包
苏念禾
-
生产事故复盘:从故障树到改进项落地
事故复盘的目的是改进系统,而不是追责。它的产出也不是一份解释谁做错了的报告,而是让同类故障更难发生、发生后更快发现、更容易控制。追责导向会促使参与者隐去不确定操作和薄弱环节,系统失去真实证据。无责文化也不等于不承担改进责任:事实、决策与流程仍需被审视,只是不把个体失误当作分析终点。 先保存证据,再补叙事 事故处理中应同步记录时间线,但不能只依赖群聊中的“刚才”“大概五分钟前”。每个事件使用统一时区
江眠
-
Kubernetes 核心概念:Pod、Deployment 与 Service
理解 Kubernetes 的关键不在于记住命令,而在于看清声明式 API 与控制器循环。用户提交的是期望状态,例如“始终运行三个副本”,控制器持续观察实际状态,计算差异并执行创建、更新或删除,直到两者收敛。某个 Pod 被节点故障带走后,系统不会修复原 Pod,而是创建符合模板的新 Pod。 声明式 API 与控制器循环 资源对象通常包含 metadata 、 spec 和 status 。 s
Pipeline 郑
-
容量规划与压测:如何估算系统承载能力
"这套系统能扛多少流量"很难凭直觉回答。难在两处:容量不是单一数字而是一组相互影响的参数;测算环境与真实环境总有差距,测出来的数不能直接搬用。把这两处理清楚,估算才有意义。 四个基本量与它们的换算 容量讨论里反复出现四个量:QPS、并发数、单次请求耗时、单机承载能力。它们之间有一条来自利特尔法则的核心关系: 并发数 ≈ QPS × 平均耗时 单位必须统一:耗时用毫秒而 QPS 用秒,算出的并发会差
祝青禾