饮墨

子安饮墨馀三斗,留与卿儿作赋来

分类目录归档:aws

Rook-Ceph:Kubernetes 原生分布式存储落地实战

142 views

痛点

Kubernetes 集群跑有状态服务(数据库、消息队列、对象存储)时,存储始终是最大的痛点:

  • 云厂商 EBS/EFS 成本高:大规模集群每月存储账单轻松破万美元,且 IOPS 按量计费让预算不可控
  • hostPath/local PV 无高可用:节点宕机数据丢失,运维半夜被 PagerDuty 叫醒
  • 外置 Ceph 集群运维复杂:独立于 K8s 的 Ceph 集群需要单独的运维团队,升级和扩容都是噩梦

Rook 把 Ceph 变成 Kubernetes 的一等公民——用 Operator 模式管理分布式存储,让存储和计算在同一个控制平面内声明式管理。

方案

Rook 是 CNC...

Read more

LiteLLM Proxy — 统一 LLM API 网关的生产部署实践

123 views

痛点

当团队同时使用 OpenAI、Claude、Gemini、Azure OpenAI 等多家 LLM 服务时,运维面临几个棘手问题:

  1. 多密钥管理混乱 — 每个服务独立 API Key,散落在各业务代码的 .env 里,轮转和审计成本高
  2. 成本黑洞 — 无法统一追踪各模型的 Token 消耗和费用,月底账单靠猜
  3. 无降级容灾 — 某家供应商出故障时,业务直接挂掉,没有自动 Fallback 机制
  4. 限流和配额管控缺失 — 开发者随意调用,容易触发供应商 Rate Limit 或产生意外大额账单

LiteLLM Proxy 正是解决这些问题的开源方案 —— 一个统一的 LLM API 网关...

Read more

Velero 实战:3 步搞定 Kubernetes 集群备份与灾难恢复

176 views

痛点

生产环境的 Kubernetes 集群一旦出事——误删 Namespace、etcd 损坏、跨区域迁移——没有备份等于裸奔。传统的 etcd snapshot 只覆盖集群状态,不管 PV 数据;手动写 CronJob 导出 YAML 又维护成本高、恢复时还原顺序容易出错。

Velero(前身 Heptio Ark)是 VMware 开源的 Kubernetes 备份/恢复/迁移工具,支持: - 集群资源(Deployment、ConfigMap、CRD 等)的声明式备份 - PersistentVolume 数据快照(通过 CSI 或云厂商插件) - 定时调度、TTL 自动过期、跨...

Read more

Podman Quadlet:用 systemd 原生方式管理容器,彻底告别 docker-compose

144 views

痛点

在非 Kubernetes 的服务器环境中(边缘节点、单体应用服务器、CI Runner),我们通常用 docker-compose 编排容器。但它带来几个尴尬问题:

  1. compose 是个额外守护进程层 — 服务启停依赖 docker compose up -d,与系统的 init 体系割裂,重启后需要额外 enable
  2. 日志管理分裂 — 容器日志走 docker driver,系统日志走 journald,排查故障两头看
  3. 依赖管理弱 — compose 的 depends_on 只做启动顺序,不做健康依赖,复杂场景照样翻车
  4. Rootless 场景受限 — docker-comp...

Read more

Falco 实战:Kubernetes 运行时安全威胁检测与响应

157 views

痛点

容器安全扫描(如 Trivy)解决了镜像构建阶段的漏洞发现,但运行时阶段的异常行为——容器内反弹 Shell、敏感文件读取、异常网络外连——传统工具几乎无能为力。Kubernetes 集群一旦被攻破,从横向移动到数据外泄,整个链路可能在几分钟内完成,而你的告警系统可能毫无感知。

Falco 是 CNCF 毕业项目,基于 eBPF/kernel module 在内核层实时捕获系统调用,用规则引擎检测运行时威胁,填补了从「镜像安全」到「运行时安全」的最后一块拼图。

方案

Falco 的核心架构:

┌────────────────────────────────────────────...

Read more

Infisical:开源密钥管理平台,彻底替代 .env 散落式密钥管理

168 views

痛点:.env 文件在生产环境的致命缺陷

运维工程师大概都经历过这些场景:

  • 新人入职,前辈把 .env 文件通过 Slack/钉钉明文发一份过来
  • 某个 API Key 轮换,需要逐台服务器手动更新 .env,漏改一台就是 P0 事故
  • 审计要求追溯"谁在什么时间修改了哪个密钥",.env 文件毫无审计能力
  • 多环境(dev/staging/prod)密钥靠命名约定(.env.prod)区分,一旦复制错误直接打到生产数据库

.env 是开发阶段的便利工具,但它从来不是为生产环境设计的密钥管理方案。当团队规模超过 5 人、服务超过 10 个时,散落的 .env 文件就是一颗定时炸弹。


方案...

Read more

Kaniko:在 Kubernetes 中构建容器镜像,彻底告别 Docker Daemon

140 views

痛点

在 CI/CD 流水线中构建容器镜像,传统方案是 Docker-in-Docker(DinD)或挂载宿主机 Docker Socket。两种做法都有硬伤:

  • DinD:需要 --privileged 特权模式,Pod 拥有宿主机几乎所有权限,一旦被攻破等同于节点沦陷
  • 挂载 Socket:任何能访问 /var/run/docker.sock 的容器都能操控宿主机上所有容器,安全审计直接红灯
  • Kubernetes 1.24+ 已移除 dockershim:节点上可能根本没有 Docker Daemon,containerd/CRI-O 环境下 DinD 方案失效

生产环境需要一种 无...

Read more

Mise:一个工具统一管理所有开发语言版本,彻底告别 nvm/pyenv/rbenv

110 views

痛点

运维团队的开发环境管理是个老问题:项目 A 需要 Node 18 + Python 3.11,项目 B 需要 Node 20 + Python 3.12 + Go 1.22。传统方案是装一堆 *env 工具——nvm 管 Node、pyenv 管 Python、goenv 管 Go、rbenv 管 Ruby。

实际痛点:

  • 工具碎片化:每个语言一个版本管理器,shell 初始化慢,.bashrc 越来越臃肿
  • asdf 虽好但慢:asdf 解决了统一管理的问题,但它是纯 Shell 实现,每次切换目录都有明显延迟(尤其在有几十个插件时)
  • CI 环境难复现:本地和 CI 用不同的版本管...

Read more

Temporal 分布式工作流引擎生产实践:告别脆弱的 Cron Job 和消息队列

106 views

痛点:分布式任务编排的脆弱性

运维团队经常面对这样的场景:一个跨服务的业务流程——比如「用户注册 → 发邮件 → 创建资源 → 配置权限 → 通知上游」——被拆成 5 个 Cron Job + 3 个消息队列 + 若干重试逻辑。任何一个环节失败,排查成本极高:

  • Cron Job 没有状态持久化,失败后从头开始还是从断点续跑?靠人肉判断
  • 消息队列的消费者幂等性难保证,重试导致重复执行
  • 跨步骤的超时、取消、补偿逻辑散落在各处,维护噩梦
  • 流程可观测性几乎为零,只能靠日志 grep

Temporal 正是为解决这类问题而生的开源分布式工作流引擎。它将「工作流即代码」的理念落地,让你用普通编程...

Read more

Kubernetes PDB 生产实战:零停机集群维护的关键配置

129 views

痛点

集群升级节点、内核补丁滚动更新、节点缩容时,kubectl drain 一把梭直接驱逐 Pod,结果核心服务瞬间副本数归零,告警群炸了——这是很多运维团队踩过的坑。

根本原因:Kubernetes 默认不关心你的业务可用性,drain 操作会无差别驱逐节点上所有 Pod。如果多个副本恰好调度在同一节点,或者驱逐速度快于新 Pod 就绪速度,服务就会出现中断窗口。

PodDisruptionBudget(PDB) 正是解决这个问题的原生机制——它告诉集群:"在任何自愿中断(voluntary disruption)期间,我的服务至少要保持 N 个副本可用"。

方案

PDB 的核心逻辑...

Read more