容器化应用系统上生产的最佳实践
容器化应用系统上生产的最佳实践
前言
最近忙的要死, 👻👻👻. 上一周来了一次比996更猛的`907
. 这周二终于有点遭不住了, 调休一天, 稍微歇息一下.
同时手痒的不行, 把筹备了好久的重磅文章发上来哈哈. 😆😆😆
不过时间还是有点仓促, 所以这次就先开个头, 后面有时间再细化.
容器化应用系统上生产的最佳实践
检查镜像、容器是否是用
root
启动以及配置其他特权. 如无必要, 一律使用普通用户.检查镜像
LANG
配置:LANG = en_US.UTF-8
. 目的: 避免生产出现 乱码等问题检查镜像时区配置:
TZ=Asia/Shanghai
目的: 避免生产出现时区不一致的问题配置外部化. 外部化手段有多种:
同一个镜像, 从测试流转到生产. 给镜像打
${version}
或${gitCommitId}
这一类的标签. 目的: 通过版本号或commit id, 保证正确地的版本流转到生产讨论每个组件的
日志输出优化:
(可选) 根据需要, 安装redis/kafka/rabbitmq集群(并配置exporter监控)
微服务参数优化:
制作DEV, TEST, UAT, Pre-PROD, PROD的DevOps pipeline.
配置Readiness和Liveness 探针.
增加JMX-exporter监控和Tracing监控.
NGINX conf建议增加:
worker_processes 1;
然后按需调节副本数.(可选)配置PDB, 指定升级或重启过程中:
maxUnavailable
或minAvailable
(特别适用于: 有状态应用. 典型如: redis, kafka, zookeeper等)配置反亲和性
podAntiAffinity
. 保证同一组微服务/应用/组件尽可能打散在不同node上.
5-6操作步骤:
11步示例如下:
14步示例如下: (注意关键词: maxUnavailable
和 minAvailable
)
15步骤示例如下: (注意关键词: podAntiAffinity
)
完
🎉🎉🎉
版权声明: 本文为 InfoQ 作者【东风微鸣】的原创文章。
原文链接:【http://xie.infoq.cn/article/2760dbc51ca7bd36fa4e72799】。文章转载请联系作者。
评论