容器最佳实践不是一组孤立建议,而是一套围绕应用交付、运行稳定性和安全边界的治理体系。很多团队已经使用 Kubernetes 部署应用,但仍会遇到镜像越来越大、资源配置随意、Pod 偶发重启、线上排障依赖个人经验、权限策略无法解释等问题。原因往往不是缺少某个工具,而是缺少一份能被研发、平台、运维和安全共同执行的容器治理清单。
生产环境的容器实践应避免两个极端:一类是只关注部署成功,忽略镜像、资源和安全基线;另一类是一次性设置大量强规则,导致业务上线阻塞。更稳妥的方式是先建立基础红线,再逐步把经验固化到模板、流水线和平台能力中。

本文评估口径
本文讨论的容器最佳实践主要面向已经在 Kubernetes 上运行业务应用的团队,重点关注生产环境长期治理,而不是本地开发容器的快捷用法。评估对象包括镜像构建与分发、资源配置、健康检查、权限控制、网络访问、发布策略、日志监控和平台管控。
如果团队还处于试运行阶段,可以先从镜像、资源和健康检查三项开始;如果已经承载关键业务,则需要把安全、观测、变更和多集群治理纳入同一套标准。
镜像基线先统一
镜像是容器运行的源头。生产环境建议统一基础镜像来源、版本策略、构建参数和制品仓库规则。基础镜像不应长期停留在无人维护版本,也不应让业务团队随意选择未知来源镜像。平台侧可以提供经过验证的语言基础镜像,例如 Java、Go、Node.js、Python,并明确更新节奏。
镜像基线至少包含四点:来源可信、体积可控、依赖可追踪、版本可回滚。来源可信解决供应链入口问题,体积可控减少拉取和启动成本,依赖可追踪方便定位漏洞和兼容性问题,版本可回滚则保证线上变更出现问题时可以恢复。
这里要注意,镜像治理不等于只做安全扫描。扫描能发现风险,但不能替代基础镜像选型、仓库权限、标签规范和生命周期清理。对于镜像安全治理,可结合容器镜像专题建立更完整的制品管理流程。
资源配置要从经验值走向画像
容器资源配置最常见的问题是 Request 和 Limit 写得过于随意。有些应用 Request 过小,调度时看似节省资源,运行中却频繁争抢 CPU;有些应用 Limit 过紧,业务高峰时被限流或触发 OOM;还有些应用完全不写资源限制,影响节点整体稳定性。
建议把资源治理拆成三步。第一步建立默认模板,避免应用裸跑。第二步根据监控数据调整资源画像,把 CPU、内存、启动峰值和日常波动分开看。第三步对核心应用建立周期性复核机制,防止业务增长后配置仍停留在早期估算。

对于在线服务,CPU Request 应接近稳定负载下的合理水位,内存 Limit 要考虑峰值、缓存和 JVM 等运行时特性。对于批处理或任务型容器,资源配置还要结合任务并发、队列长度和节点池隔离策略。资源治理的目标不是把每个 Pod 压到最低成本,而是在稳定性、利用率和调度效率之间取得平衡。
健康检查决定发布质量
容器能启动不代表应用已经可服务。生产环境至少应区分启动探针、存活探针和就绪探针。启动探针适合启动慢的应用,避免在初始化阶段被误杀;存活探针用于识别进程僵死或无法恢复的状态;就绪探针用于告诉 Service 这个 Pod 是否可以接收流量。
很多线上问题来自探针配置不准确。例如探针只检查端口是否打开,实际依赖数据库不可用;探针过于严格,短暂抖动就触发重启;探针路径与真实流量链路差异过大,导致发布后才暴露问题。建议把健康检查设计成分层能力:基础进程存活、核心依赖可用、业务服务就绪分别对应不同判断。
滚动发布、自动扩缩容和故障迁移都依赖健康检查信号。如果就绪探针不可信,平台无法判断新副本是否真的可以承接流量;如果存活探针过度激进,故障恢复可能变成重启风暴。
安全边界要前置到模板
容器安全不应完全依赖上线前人工检查。常见基线包括禁用特权容器、限制宿主机目录挂载、避免以 root 用户运行、控制 Linux capabilities、设置只读根文件系统、限制容器逃逸风险、规范镜像仓库来源。
这些能力最好通过模板和准入策略前置,而不是让每个业务团队都自行理解。平台可以提供默认安全上下文,并对确实需要例外的场景建立审批和到期复核。这样既不会阻断所有特殊业务,也能避免例外长期失控。
安全治理还要区分风险等级。测试环境可以先提示和记录,生产环境则应对高风险配置启用强规则。比如特权容器、宿主机网络、敏感目录挂载、未知仓库镜像,在生产中都应有明确管控口径。
发布与回滚需要标准动作
容器化之后,发布频率通常会提高。如果没有标准化发布策略,高频变更会放大风险。生产环境建议至少统一滚动发布参数、灰度方式、回滚条件和变更记录。
滚动发布要关注最大不可用副本数、最大额外副本数、启动时间、预热时间和下游依赖承载能力。灰度发布要关注流量比例、观测窗口、指标阈值和自动停止条件。回滚不应只停留在“重新发布旧镜像”,还要确认配置、数据库变更、外部依赖和缓存状态是否可回退。

对平台团队来说,更有效的做法是把发布策略沉淀为不同等级模板:普通服务、核心服务、批处理任务、网关入口、状态ful组件分别使用不同默认值。业务团队选择模板,平台负责守住底线。
日志、指标和事件要串起来
容器运行状态分散在多个层面:应用日志、Pod 事件、容器状态、节点资源、运行时日志、网络和存储插件。只看单一指标很难定位复杂问题。生产环境应把日志、指标、事件和链路追踪尽量关联起来。
例如一次接口延迟上升,可能不是应用代码慢,而是 HPA 扩容后节点镜像拉取慢、Pod 长时间 Pending、就绪探针延迟、下游连接池耗尽。没有统一观测视图时,排障会在多个系统之间来回切换。
容器最佳实践中的观测要求可以先定义最低标准:应用日志输出到标准输出,关键指标暴露给监控系统,Pod 事件可检索,发布变更可关联,异常重启可告警。后续再逐步加入链路追踪和业务指标。
从文档规范走向平台治理
最佳实践如果只停留在文档里,很容易失效。平台化治理的价值在于把规则内置到镜像模板、CI流水线、部署模板、准入控制和监控告警中。研发不需要每次从零理解全部规范,也能在默认路径上做出相对正确的选择。
建议把容器治理分为三类规则:必须满足的红线、建议遵循的基线、可按业务调整的参数。红线适合自动阻断,例如未知镜像仓库、特权容器、生产环境无资源配置。基线适合自动填充,例如默认探针、日志采集和资源模板。可调参数适合提供推荐值,并通过运行数据持续优化。
常见问题
容器最佳实践应该先从哪几项开始?
如果只能先做少量工作,建议从镜像来源、资源 Request、健康检查和日志采集开始。这四项覆盖供应链入口、调度稳定性、发布质量和故障排查,是生产容器治理的基础。安全上下文、准入策略、多集群治理可以在基础能力稳定后逐步加强。
是否需要为所有应用设置一样的资源模板?
不建议完全一致。统一模板适合作为默认起点,但不同应用的资源画像差异很大。在线服务、任务消费者、批处理、网关和数据处理应用应有不同模板。平台应提供分层默认值,再通过监控数据持续校准,而不是让所有应用套用同一组数字。
容器最佳实践会不会降低研发效率?
短期看,规范会增加一些检查和改造成本;长期看,它能减少线上故障、重复排障和安全例外。关键是不要把所有规则一次性强推,而是先建立默认模板和清晰红线,把复杂度留给平台,把简单路径留给研发团队。
小团队也需要完整容器治理吗?
小团队不一定需要完整平台化能力,但仍需要最小治理清单。至少要保证镜像来源可控、资源配置不为空、健康检查有效、日志可查看、回滚路径清晰。等业务规模增长后,再把这些规范自动化到流水线和平台中。
结语
容器最佳实践的核心不是记住更多配置项,而是把镜像、资源、健康、安全、发布和观测连接成一套可执行的生产治理体系。只有当规范能够被默认模板、自动检查和平台流程承载,容器化才能从“能部署”走向“可持续运行”。
转载请注明出处:https://www.cloudnative-tech.com/p/7473/