文档首页 > > 常见问题> 容器应用部署上云CheckList

容器应用部署上云CheckList

分享
更新时间: 2020/06/17 GMT+08:00

简介

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

检查项

表1 系统可用性

类别

评估项目

类型

影响说明

FAQ&样例

集群

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

网络规划

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

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

网络规划

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

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

部署

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

使用高可用集群,在创建集群时将“高可用”选择为“是”

可靠性

“高可用”集群的控制节点是单点,单控制节点异常,会导致整个集群不可用,因此建议生产环境创建“高可用”集群。

如何确认已创建的集群是否为高可用集群?

集群一旦创建,便无法更改“高可用”“非高可用”的集群模式,需要重新创建集群才能调整,请在创建时谨慎选择。

Containerd和Docker作为CCE当前支持的运行时组件,有不同的适用场景。创建集群时,请根据业务场景选择合适的容器运行时(Container Runtime)组件。

部署

集群一旦创建,便无法更改容器运行时,除非重新创建集群。

如何选择Containerd和Docker?

创建集群时,根据业务场景选择合适的网络模型:容器隧道网络、VPC网络。

部署

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

工作负载

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

部署

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

如何设置应用的CPU和内存资源上下限?

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

可靠性

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

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

部署

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

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

可靠性

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

如何设置工作负载的实例数?

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

可靠性

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

反例:

应用A设置对节点1、节点2亲和性,节点3、节点4反亲和性,应用A通过ELB发布Service,ELB监听节点1和节点2上面。对应用A进行升级,会概率出现应用A被调度到节点1-4之外的节点,无法通过Service访问应用A。

原因:

kubernetes的亲和反亲和调度策略是满足一个就可以调度成功,此时是满足了节点3、节点4反亲和性调度策略。

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

可靠性

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

表2 数据可靠性

类别

评估项目

类型

影响说明

FAQ&样例

容器数据持久化

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

可靠性

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

数据备份

对应用数据进行备份

可靠性

数据丢失后,无法恢复。

CCE支持的存储在持久化和多节点挂载方面的区别是怎样的?

表3 运维可靠性

类别

评估项目

类型

影响说明

FAQ&样例

工程

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

部署

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

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

部署

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

详情参见高危操作及解决方案

反例:

  1. 用户升级了节点内核,可能会导致容器网络异常;
  2. 用户在节点上安装了开源的kubernetes网络插件,导致容器网络异常;
  3. 用户在节点上将/var/paas,/mnt/paas/kubernetes删除,导致该节点异常。

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

部署

会导致CCE集群功能异常。

反例:

  1. 在弹性负载均衡页面修改CCE创建的监听器名称;
  2. 在虚拟私有云页面修改CCE创建的安全组;
  3. 在云硬盘页面删除或者卸载CCE集群节点挂载的数据盘;
  4. 在统一身份认证页面删除cce的委托“cce_admin_trust”。

以上修改都会导致CCE集群功能异常。

主动运维

云容器引擎提供多维度的监控和告警功能,同时结合云监控服务AOM提供的基础资源监控,能保证更细的指标覆盖。配置监控告警,以便于异常时及时收到告警和故障定位。

监控

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

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问