更新时间:2024-12-04 GMT+08:00

容器应用部署上云CheckList

简介

安全高效、稳定高可用是每一位涉云从业者的共同诉求。这一诉求实现的前提,离不开系统可用性、数据可靠性及运维稳定性三者的配合。本文将通过评估项目、影响说明及评估参考三个角度为您阐述容器应用部署上云的各个检查项,以便帮助您扫除上云障碍、顺利高效地完成业务迁移至云容器引擎(CCE),降低因为使用不当导致集群或应用异常的风险。

检查项

表1 系统可用性

类别

评估项目

类型

影响说明

集群

创建集群前,根据业务场景提前规划节点网络和容器网络,避免后续业务扩容受限。

网络规划

集群所在子网或容器网段较小,将可能导致集群实际支持的可用节点数少于业务所需容量。

创建集群前,提前梳理云专线、对等连接、容器网段、服务网段和子网网段等相关网段的规划,避免出现网段冲突影响业务。

网络规划

简单组网场景按照页面提示配置集群相关网段,避免冲突;业务复杂组网场景,例如对等连接、云专线、VPN等,网络规划不当将影响整体业务正常互访。

创建集群时,会自动新建并绑定默认安全组,支持根据业务需求设置自定义安全组规则。

部署

安全组是重要的安全隔离手段,不当的安全策略配置可能会引起安全相关的隐患及服务连通性等问题。

使用多控制节点模式,创建集群时将控制节点数设置为3。

可靠性

多控制节点模式开启后将创建三个控制节点,在单个控制节点发生故障后集群可以继续使用,不影响业务功能。商用场景建议选择多控制节点模式集群。

创建集群时,根据业务场景选择合适的网络模型:
  • CCE Standard集群支持选择“VPC网络”“容器隧道网络”

部署

集群创建成功后,网络模型不可更改,请谨慎选择。

工作负载

创建工作负载时需设置CPU和内存的限制范围,提高业务的健壮性。

部署

同一个节点上部署多个应用时,当未设置资源上下限的应用出现应用异常资源泄露问题时,将会导致其它应用分配不到资源而异常,且应用监控信息会出现误差。

创建工作负载时可设置容器健康检查:“工作负载存活探针”“工作负载业务探针”

可靠性

容器健康检查未配置,会导致用户业务出现异常时Pod无法感知,从而导致不会自动重启恢复业务,最终将会出现Pod状态正常,但Pod中的业务异常的现象。

创建服务时需要根据实际访问需求选择合适的访问方式,目前支持以下几种:集群内访问(ClusterIP)、节点访问(NodePort)、负载均衡 ( LoadBalancer )。

部署

选择不当的访问方式,可能造成服务内外部访问逻辑混乱和资源浪费。

工作负载创建时,避免单Pod副本数设置,请根据自身业务合理设置节点调度策略。

可靠性

如设置单Pod副本数,当节点异常或实例异常会导致服务异常。为确保您的Pod能够调度成功,请确保您在设置调度规则后,节点有空余的资源用于容器的调度。

合理设置“亲和性”“反亲和性”

可靠性

对外提供服务的应用,如果以“或”的关系同时配置“亲和性”“反亲和性”,应用升级或者重启后,会概率出现服务无法访问的问题。

设置应用生命周期中的“停止前处理”,确保升级或者实例删除时可以提前将实例中运行的业务处理完成

可靠性

如果没有配置,用户在应用升级时,Pod会被直接Kill,导致Pod中运行的业务中断。

表2 数据可靠性

类别

评估项目

类型

影响说明

容器数据持久化

应用Pod数据存储,根据实际需求选择合适的数据卷类型。

可靠性

节点异常无法恢复时,存在本地磁盘中的数据无法恢复,而云存储此时可以提供极高的数据可靠性。

数据备份

对应用数据进行备份

可靠性

数据丢失后,无法恢复。

表3 运维可靠性

类别

评估项目

类型

影响说明

工程

ECS、VPC、子网、EIP及EVS等资源配额是否满足客户需求。

部署

配额不足会导致创建资源失败,对于配置了自动扩容的用户尤其需要保障所使用的云服务配额充足。

集群的节点上不建议用户随意修改内核参数、系统配置、集群核心组件版本、安全组及ELB相关参数,也不建议用户随意安装未经验证的软件。

部署

可能会导致CCE集群功能异常或安装在节点上的Kubernetes组件异常,节点状态变成不可用,无法部署应用到此节点。

不要修改CCE创建的安全组、云硬盘等信息。CCE创建的资源标记有“cce”字样

部署

会导致CCE集群功能异常。

主动运维

云容器引擎提供多维度的监控和告警功能,配置监控告警,以便于异常时及时收到告警并进行故障定位。

  • 云监控服务AOM:CCE默认的基础资源监控,覆盖详细的容器相关指标,并提供告警配置能力。
  • 开源Prometheus:面向云原生应用程序的开源监控工具,并集成独立的告警系统,提供更高自由度的监控告警配置。

监控

未配置监控告警,将无法建立容器集群性能的正常标准,在出现异常时无法及时收到告警,需要人工巡检环境。