概述
应用部署配置目前特指容器部署配置,无论对于微服务应用还是通用应用,要完成容器部署,都离不开应用部署配置。应用部署配置中涉及了许多K8s中的概念,如果要使用到应用部署配置中的这些高级特性,需要对K8s有较为深入的了解。下面将介绍一些推荐使用的部署配置中的特性。
应用配置信息
- 建议为应用配置2个及以上Pod实例。配置多个Pod实例,可有效避免单个Pod实例故障而导致的应用无法使用。如图所示:
- 建议为应用配置合理的CPU资源预留(Request)和Mem资源限制(Limit)。配置合理的单Pod资源配额,可以有效利用K8s集群资源。
说明对于Java应用,配置的Mem资源限制(Limit)不应低于JVM配置的内存使用上限,否则会在Pod层面出现内存不足(OOM),导致Pod重启。
应用高级配置信息
- 建议为应用设置合理的日志滚动策略,及时清理。Pod实例内打印过多日志将侵占节点的磁盘空间,导致节点进入DiskPressure状态,并引发Pod驱逐。
- 合理配置应用生命周期的探针。
为了便于故障自愈和优雅上下线,Liveness存活探针的各参数配置应当保证应用可以正常启动,若应用正常启动时间较长,可以配置更长的首次启动延迟时间(InitialDelaySeconds)。相关文档,请参见持续交付-->应用管理-->创建微服务应用,以创建源码微服务为例,查看应用高级配置——应用生命周期管理文档。如图所示:
如果部署的是非微服务应用,且通过Service实现的服务暴露,Readiness就绪探针的各参数配置应当保证能准确的反映应用健康状况,以免非健康Pod提供服务(即未被Service摘除)。如图所示:
- 配置日志收集规则。将Pod实例日志持久化保存到云日志服务,便于问题排查。由于Pod实例本身是无状态的,会因为各种调度而重新创建和删除,因此需要将Pod实例的日志进行集中化收集并持久化存储。以创建源码微服务为例,查看应用高级配置——日志收集管理文档。如图所示: