K8s deployment 滚动更新卡住,求助
滚动更新经常卡住,新 Pod 起不来,旧 Pod 不退出, kubectl get pods 里一直一堆 WaitFor。 常见原因排查: readinessProbe 太严格,新 Pod 永远 not ready。 资源不足,新 Pod Pending。 PDB(PodDisr
Posts
Start discussions like a forum — great for questions, opinions, tool recommendations, and experience sharing.
滚动更新经常卡住,新 Pod 起不来,旧 Pod 不退出, kubectl get pods 里一直一堆 WaitFor。 常见原因排查: readinessProbe 太严格,新 Pod 永远 not ready。 资源不足,新 Pod Pending。 PDB(PodDisr
小项目,单机部署,用 docker compose 跑了快一年生产,整体挺稳。但每次跟人聊都说 "compose 只能跑开发,生产得上 K8s",搞得有点虚。 我的实际体验: 单机够用,重启策略 restart: unless stopped 兜底。 healthcheck 配好
不想用 GitHub/GitLab 的团队,自建了一套 Gitea + Drone CI,全开源、私有化、零订阅费。 整体体验: Gitea 轻、快,基本就是 "自托管的 GitHub"。 Drone 用容器跑 pipeline,每个 step 一个镜像,干净。 配置即代码( .
Nginx 反代后端服务,平时好好的,高峰期偶发 502,后端日志又没明显异常。排查思路分享一下。 可能原因: 后端进程崩了或重启(看进程存活)。 后端 backlog 满了,新连接被拒( ss ltn 看 Recv Q)。 keepalive 连接被后端单方面关闭,Nginx
一个查询慢,加了个索引还是慢, EXPLAIN ANALYZE 出来一堆 Seq Scan / Index Scan / Bitmap Heap Scan,看不太懂。 简单总结: Seq Scan:全表扫,大表就是性能杀手。 Index Scan:走索引取数据,再回表。 Bitm
热点 key 突然过期,瞬间几十个请求一起打数据库,差点把 Postgres 压垮。事后做了几层防护。 方案: 互斥锁:缓存 miss 后只让一个请求查库,其它等待(setnx 实现)。 逻辑过期:value 里带过期时间,过期后异步刷新,期间返回旧值。 热点 key 永不过期,
在 K8s 跑 Next.js,liveness/readiness probe 一直没配顺。配错要么 Pod 频繁重启,要么起不来不感知。 我的配置: 注意: Next.js 自定义一个 /api/health 路由,只返 200,别走中间件。 initialDelaySeco
团队统一了一套本地开发环境,全部 docker compose 跑起来,新人入职一条 docker compose up 就能开发。 几个心得: 数据用 named volume 持久化,删容器不丢数据。 应用本体不进 compose,本地 dev server 跑(热更新快)。
之前用 ELK,Elasticsearch 又吃内存又吃磁盘,小团队根本养不起。换成 Grafana Loki 后清爽多了。 Loki 的思路是不索引日志内容,只索引 label,存的是压缩的日志流。资源占用低一个数量级。 配合 Grafana 看日志,跟 metrics / t
搭了 Postgres 流复制,主从架构,读走从库。但偶尔出现 "写完立刻读不到" 的问题,应该是复制延迟。 排查: pg stat replication 看 replay lag ,确实有 100ms 2s 抖动。 大事务会导致延迟突增。 从库 IO/CPU 慢也会拖后腿。
Docker 跑服务,默认 bridge 网络,但有时为了性能或方便(不想映射端口)会切 host 模式。两种模式一直没完全搞清楚取舍。 简单总结: bridge:隔离性好,端口要 p 映射,性能略损(NAT)。 host:直接用宿主网络,性能最好,但端口冲突、隔离差。 macv
K8s 集群用 ingress nginx 暴露 HTTP 服务,配置过几轮后总结了一些常用 snippet。 基础 ingress: 常用 annotation:限流(limit rps)、CORS、basic auth、canary。证书走 cert manager 自动签发