云计算·大数据 频道

金融行业大数据容器化混部难点分析

  随着云计算的快速发展,容器化技术作为一种轻量级虚拟化技术,已经成为应用部署的主要方式。容器化技术不仅提升了系统部署的灵活性和可靠性,还可以提高资源利用率和运维效率,进一步推动了数字化业务的发展和创新。大数据平台容器化改造的重要性在于加快应用交付速度、提高基础架构利用率和资源灵活调配的能力,使银行业务能够更快、更灵活地应对市场变化和客户需求。另外,随着大数据平台集群规模快速增长,很多银行开始探索借助云原生技术实现大数据平台离线和在线业务混合部署,从而让计算资源更精细化地使用。

  大数据容器化是落地大数据平台混合部署的前提条件。大数据容器化技术路线的选择涉及到不同系统的特点和需求,在降低运维成本、提高安全性和可扩展性方面有不同侧重点,当前有Hadoop Yarn on Kubernetes、多个大数据集群共享统一资源池、大数据集群完全容器化改造等方式。根据调研,使用Yarn Node Manager运行在k8s集群上,通过Yarn进行调度的方式来达到预期目标的占比最多。大数据容器化改造存在系统架构复杂、数据安全、存量系统迁移等挑战,需要综合考量和有效规划。大数据平台容器化建设过程中的核心挑战包括:基于云原生实现大数据混部的主要应用场景有哪些?如何选型适合企业自身的大数据平台容器化技术路线?如何实现业务容器与大数据容器的混合调度部署?如何设计大数据混部的资源控制方案?

  结合以上的挑战重点,社区组织了交流活动,围绕两个大方面进行展开交流探讨:一、大数据容器化应用挑战和解决方案;二、大数据容器化运维体系和资源优化。以下是探讨中的精华内容梳理,希望本文能为更多同行提供参考。

  本文由银行数据架构师xuyy(社区ID)总结和整理,参与分享贡献的金融行业同行详见下文。

  01

  大数据容器化应用挑战和解决方案

  1. 容器技术与大数据平台能力如何完美结合,可以完全兼容并提供大数据场景下的相关能力?

  @dean25 民生银行 软件架构设计师:

  大数据平台容器化后底层容器使用的还是k8s这一套,这个并没有改变。技术方案一般有两大类:第一大类是用k8s模拟YARN调度模式;第二大类是k8s原生调度方式。Spark/Flink社区主要支持k8s原生调度方式。因为历史原因选择用k8s模拟YARN调度模式。大数据容器化只有与混合部署结合才有价值,可以大幅度提升资源使用效率,降低算力成本。单独进行大数据容器化没有很大意义,所以建议在进行大数据容器化改造,可以优先尝试混合部署结合方式。

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  容器的优势是灵活、轻量,大数据平台侧重资源弹性及大数据存储。在处理任务时,可以将两者优点结合起来。两者的调度框架不太一样,容器一般使用K8S,大数据一般使用Hadoop, Strom, Spark等计算引擎基于Yarn的调度。但其也可以容器化改造的,即可以跑在容器化平台K8S中,并可利用K8S的资源弹性、灵活编排等功能来扩充或补充大数据平台的调度能力。还可以通过混布策略,将底层基础设施平台进行统一,即都跑在K8S上。这些是我们在生产环境已经落地了并稳定运行着的。

  2. 大数据平台容器化在进行选型POC测试时,需要关注哪些技术指标?

  @dean25 民生银行 软件架构设计师:

  若是混合部署场景,需要考虑怎样不影响在线应用。另外,需要考虑传统大数据作业迁移到新平台的方式和难度,最好是无感平滑迁移。还有需要考虑大数据作业支持的类型,满足实际需求。

  @SodasV5 技术专家:

  大数据平台容器化在进行选型POC测试时,主要需要关注在性能、高可用性、扩展能力、安全性及成本等方面的技术指标说明如下:

  (1) 评估在容器化环境下运行大数据作业的性能,包括作业执行时间、资源利用率等。

  (2) 评估容器化大数据平台对于节点故障、容器故障等异常情况的处理能力,包括自动故障转移、数据恢复等方面。

  (3) 评估容器化大数据平台对于集群规模的扩展能力,包括节点动态增加、作业动态扩缩容等方面。

  (4) 评估容器化大数据平台的安全特性,包括容器隔离、安全镜像管理、网络安全等方面。

  (5) 评估容器化大数据平台的部署和维护成本,包括人力成本、硬件资源成本等方面。

  3. 容器化技术路线落地大数据平台混部后稳定性如何保障?部分服务要求有状态?

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  (1) 对于部分要求有状态,那么确保有状态服务的数据可靠性和可扩展性,可以使用分布式存储系统(比如ceph、hdfs、glusterfs等)。

  (2) 设计和部署要实现高可用架构,避免单点故障影响系统稳定性(比如多副本部署、负载均衡等)。

  (3) 要使用自动化工具和监控系统,确保及时发现和解决问题,保障系统稳定运行。

  @dean25 民生银行 软件架构设计师:

  企业要通过容器技术落地大数据混部,要保证稳定性这块,首先需要确保基础调度组件,如RM,NM的稳定性,同时具备高可用能力和异常情况下快速重启恢复能力。作业提交建议有重试机制,如果因为RM/NM偶发异常导致作业失败,可以通过重试恢复。这里说的离线大数据作业都是批量式的,Flink这种长期运行的一般放在在线应用范围。

  4. 如何实现业务容器与大数据容器的混合调度部署,两者的调度器的逻辑如何进行统一,以达到在保证安全生产的前提下,充分利用集群资源,降本增效?

  @jinhaibo 昆仑银行 技术管理:

  在大数据业务场景下,容器的调度是一个关键的环节,它决定了如何有效地利用集群资源以支持大数据应用的运行,以下是一些建议的容器调度方法:

  (1)资源需求预测:对于大数据应用,通常需要大量的计算、存储和网络资源。在容器调度之前,可以基于历史数据或机器学习模型预测资源需求,以便提前分配和准备资源。

  (2)静态调度:在大数据应用部署之前,根据应用的需求和集群的资源状况,进行初步的容器调度规划。例如,根据应用对CPU、内存、存储等资源的需求,选择适合的主机进行部署。

  (3)动态调度:在应用运行过程中,根据实时的资源监控数据和性能指标,动态地调整容器的调度策略。例如,当某个主机的负载过高时,可以将一些容器迁移到负载较低的主机上,以实现资源的均衡利用。

  (4)优先级调度:在大数据集群中,不同的应用可能有不同的优先级。例如,一些实时分析应用可能需要更高的优先级以快速响应请求。在容器调度时,可以根据应用的优先级进行调度,确保高优先级的应用能够得到更多的资源支持。

  (5)负载均衡:为了确保集群的整体性能和可靠性,需要进行负载均衡。在容器调度时,可以考虑使用负载均衡算法(如轮询、随机、最少连接等),将请求分散到不同的容器上,避免某个容器过载。

  @dean25 民生银行 软件架构设计师:

  大数据作业通常需要独立的调度器,和在线业务的调度器独立,因为二者的调度逻辑有很大的差异。在线业务用缺省的kube scheduler即可,需要配额应用规格画像、反亲和调度等,让负载分散的更均匀合理。大数据用单独的调度器,实现弹性配额、组调度、负载感知调度等功能。

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  首先,要统一一下调度面,我们是采用K8S来统一混合调度。为了保证安全,需要在NameSpace层面做一些资源配额限制,还需要在集群层面打上标签,预留专用节点,在节点上设置污点和在Pod上配置容忍,实现更细粒度的调度控制。结合监控,实现资源的自动弹性,充分利用集群资源,降本增效。

  5. 大数据容器化如何合理地分配资源、调度容器、实现负载均衡?

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  (1)合理分配资源:通过资源隔离(比如采用K8S不同的NameSpace并分配不同的租户quota)、优先级和抢占(采用不同的PriorityClass )、资源限制(不同的limit、request、quota等)手段。

  (2)容器调度:设置专用节点标签,设置Pod的亲和与反亲和特性等手段。

  (3)业务增长时,一般需要结合监控(如 Prometheus 和 Grafana )来进行集群扩容(比如HPA/VPA,甚至cluster autoscaler 等)手段。

  @技术专家 SodasV5:

  在大数据平台中,容器集群资源调度是一个关键环节,涉及到如何高效、公平地分配计算、存储等资源,确保高吞吐量、低延迟及高可用性。以下是一些关键策略和技术,用于合理分配资源、调度容器、实现负载均衡,以及有效扩展和管理集群:

  合理分配资源与调度容器,容器编排工具如Kubernetes(K8s)提供了强大的资源调度器,它基于预定义的策略(如CPU、内存使用率)来决定容器的放置。K8s支持多调度策略,包括基于资源请求/限制、节点亲和性/反亲和性、污点与容忍度等。

  (1)资源配额与限制:通过设置资源配额和容器的资源请求/限制,可以确保每个应用得到所需的资源同时避免资源过度消耗。这有助于防止资源争抢导致的服务不稳定。

  (2)负载均衡:利用服务发现和负载均衡机制,如K8s的Service和Ingress,可以自动分发流量到多个副本,实现请求的均衡处理,提高系统的整体响应能力。

  (3)自动扩展(Auto-Scaling):根据实时的资源使用情况或预定义的业务指标(如CPU利用率、请求量),自动增加或减少容器实例数量,以应对业务波动。

  随着业务的发展和数据的增长,对容器集群进行有效的扩展和管理:

  (4)水平扩展:通过增加更多的工作节点到集群中,可以线性扩展集群的处理能力。K8s等系统能够自动识别新加入的节点并开始在这些节点上调度容器。

  (5)垂直扩展:虽然不如水平扩展常见,但在某些情况下增加单个节点的资源(如CPU核数、内存大小)也是可行的扩展方式。

  (6)持续集成/持续部署(CI/CD):集成自动化部署流水线,确保代码变更能快速、可靠地部署到集群中,支持快速迭代和故障恢复。

  (7)监控与日志管理:实施全面的监控和日志收集分析,如使用Prometheus、Grafana、ELK Stack等工具,以便及时发现和解决问题,优化资源使用。

  (8)资源预留与抢占:为关键服务预留资源,确保即使在资源紧张时也能稳定运行。同时,实现资源抢占机制,以应对突发的高优先级任务。

  (9)集群联邦或多集群管理:对于大规模部署,考虑使用集群联邦或多集群管理解决方案,如K8s的多集群管理工具,以简化跨多个集群的资源分配和应用部署。

  通过上述方法,不仅可以实现资源的有效分配和调度,还能确保随着业务发展和数据增长,容器集群能够灵活、高效地扩展和管理,满足不断变化的需求。

  @dean25 民生银行 软件架构设计师:

  通过一个好的调度器, 实现负载感知调度,Pod间软性反亲和调度,这样负载就会尽可能分散均匀。容器集群扩容,主要是根据在线服务的需求扩容,在线低谷期或者闲置的资源才出让给大数据作业使用。

  @xuyy 某银行 数据架构师:

  在大数据容器化环境中实现负载均衡可以通过以下几种方式:

  (1) 使用容器编排工具:容器编排工具如Kubernetes、Docker Swarm等可以自动管理容器的部署和调度,通过配置负载均衡器来实现负载均衡。

  (2) 使用服务网格:服务网格如Istio、Linkerd等可以实现对容器间通信的监控和控制,包括负载均衡、流量控制等功能。

  (3) 使用反向代理:在容器内部部署反向代理如Nginx、HAProxy等,通过配置反向代理来实现负载均衡。

  (4) 使用云服务提供商的负载均衡服务:云服务提供商提供了负载均衡服务,可以直接在其平台上配置负载均衡器。

  无论以哪种方式,都需要考虑负载均衡的算法选择、健康检查、自动伸缩等因素,以确保容器化环境的应用能够实现高可用和高性能。

  02

  大数据容器化运维体系和资源优化

  1. 大数据平台容器化混合部署,扩容弹性较云化+分布式存储相比的优势和提升有哪些?

  @dean25 民生银行 软件架构设计师:

  容器相比云化虚机,弹性能力是数量级的提升。大数据容器化后做混合部署,可以复用容器的弹性能力,实现大数据作业的serverless化,即无需为大数据作业准备独立的计算资源,只是需要时将作业提交到在线应用的集群,复用在线应用低谷期或者闲置期资源即可。当然,前提是在线集群的规模要大,否则无法承载大数据作业。

  @技术专家 SodasV5:

  大数据平台容器化混合部署,扩容弹性较云化+分布式存储相比的优势和提升主要体现在以下几个方面:

  (1) 更快的部署和迭代速度:容器化技术允许用户以更快的速度部署和迭代应用程序。容器可以在几秒内启动,而传统的虚拟机可能需要几分钟。这意味着在大数据应用中,容器化可以显著减少开发和测试时间。

  (2) 更高效的资源利用:与云化+分布式存储相比,容器化技术可以更高效地利用资源,因为容器共享宿主机的操作系统内核,而不需要为每个应用程序都运行一个完整的操作系统,如虚拟机所需。

  (3) 灵活的编排和自动化:容器化平台如Kubernetes提供了强大的服务编排功能,使得管理和自动化容器的部署、扩展和更新变得更加容易。这种灵活性使得大数据平台可以更快速地响应需求变化。

  (4) 容错和自我修复能力:容器化平台可以自动处理容器的故障,如容器崩溃,平台可以快速重启容器,保证服务的连续性。

  (5) 跨云和混合云的兼容性:容器化技术的一个重要优势是它可以跨越不同的云服务和本地环境,使得大数据平台可以在混合云环境中无缝运行。

  (6) 成本效益:容器化可以减少对硬件资源的需求,从而降低成本。此外,由于容器的快速启动和停止,可以更有效地使用计算资源,进一步降低运营成本。

  (7) 环境一致性:容器化确保了开发、测试和生产环境的一致性,这对于大数据应用来说非常重要,因为它简化了部署和故障排除过程。

  (8) 安全性:容器化平台可以提供更好的安全隔离,因为容器之间的交互受到限制,减少了攻击面。

  总的来说,大数据平台容器化混合部署通过提高部署速度、资源利用效率、灵活性、容错能力和跨云兼容性,提供了比云化+分布式存储更具优势的扩容弹性解决方案。

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  容器化混合部署在资源利用效率、扩容缩容速度、成本优化、灵活性和可移植性、管理和运维、性能优化以及安全隔离等方面,相比云化+分布式存储具有明显的优势和提升。容器化混合部署 的优势我觉得主要体现在这些个方面,我简单的只列举了一下混部的优势点:

  (1) 在资源利用效率方面,通过容器技术,实现资源的细粒度隔离与共享。多个容器可以在同一台物理服务器上高效运行,减少了资源碎片化,提高了资源利用率。

  (2) 在扩容缩容速度方面,容器的启动和关闭速度非常快,通常在秒级别,可以快速响应业务需求的变化,实现弹性扩缩容。

  (3) 在成本优化方面,可以更精细地控制资源分配,避免资源浪费,降低成本。由于容器的开销较低,可以在相同的硬件资源上运行更多的应用和服务。

  (4) 在灵活度和移植方面,容器化技术提供了良好的可移植性,可以在不同的环境(本地、云端、混合云)中轻松迁移和部署应用,减少环境差异带来的问题。

  (5) 在管理运维方面,使用K8S容器编排工具,可以实现统一管理和自动化运维,包括自动扩缩容、滚动升级、负载均衡等,提高管理效率。

  (6) 在性能优化方面,K8S提供了高级的资源调度和优化功能,可以根据应用需求动态调整资源分配,保证性能的同时提高资源利用率。

  (7) 在安全隔离方面,通过namespace、cgroup和安全上下文等技术,实现严格的资源和安全隔离,确保不同应用之间互不干扰。

  @mxin 上海宝信软件股份有限公司 资深工程师:

  大数据平台采用容器化混合部署相比于云化服务结合分布式存储,在扩容弹性和资源利用方面具有一定的优势。以下是具体的分析:

  提高资源利用率:容器化技术能够更好地提高资源使用率,因为容器对系统资源的占用相对较小,可以在同一台物理机上运行更多的容器实例。

  增强系统管理能力:基于容器的CI/CD(持续集成/持续交付)流程可以大幅提升研发效能和管理效率,容器消除了线上线下环境的差异,保证了应用生命周期的环境一致性。

  动态资源伸缩:使用Kubernetes等容器编排工具,可以实现集群的自动伸缩功能,根据业务需求动态申请和释放资源,提高资源使用的弹性。

  简化运维:大数据容器化可以简化运维工作,容器化的实践证明了其在降低运维复杂度、提高运维效率方面的可行性。

  混合云环境适应性:在混合云环境中,容器化应用可以实现跨云平台的无缝迁移和部署,使得企业能够根据实际需求灵活选择公有云或私有云资源,以获取更高效的资源利用和成本效益。

  快速部署和扩展:容器化使得应用部署更加迅速,新节点的加入和旧节点的退出都可以在短时间内完成,这对于需要快速响应市场变化的大数据应用来说是一个重要的优势。

  微服务友好:容器化天然支持微服务架构,有助于将大数据平台拆分为多个独立的服务单元,每个单元可以独立扩展和维护,从而提高了整体系统的灵活性和可靠性。

  版本控制和回滚机制:容器化部署支持版本控制,可以方便地回滚到之前的版本,这对于大数据应用的稳定性和可靠性至关重要。

  综上所述,大数据平台的容器化混合部署在提高资源利用率、增强系统管理能力、动态资源伸缩、简化运维、混合云环境适应性、快速部署和扩展、微服务友好以及版本控制和回滚机制等方面具有明显的优势。这些优势使得大数据平台能够更加灵活、高效地应对业务需求的变化,提升了整体的性能和可靠性。

  2. 改造后的运维体系将如何调整,大数据监控与容器监控是否可以做到统一、精确,实现有效的反馈机制,保证业务稳定运行,如何运维容器环境场景下的大数据业务?

  @dean25 民生银行 软件架构设计师:

  大数据框架组件的监控,可以复用容器平台原有对于在线容器的基础监控能力,并增加一些组件应用特性的状态类监控指标。在作业层面,复用原有大数据作业的监控逻辑,监控队列里的作业状态,以及某一时间段内(比如30分钟)的作业失败率,超出预期则发出告警。

  @技术专家 SodasV5:

  首先,需要深入了解容器技术的原理和特点。容器技术如Docker通过沙盒机制将应用“装”起来,为应用提供独立的运行环境,确保应用之间的隔离性和稳定性。这种特性在大数据业务中尤为重要,因为大数据应用通常涉及大量的数据处理和分析,需要保证环境的稳定性和性能。

  其次,针对大数据业务的特点,需要关注数据的存储、处理和分析等方面。选择合适的容器化大数据解决方案,如Hadoop、Spark等大数据框架的容器化版本,可以简化部署和管理过程,提高资源的利用率。同时,还需要考虑数据的持久化存储问题,确保数据的可靠性和安全性。

  在运维过程中,自动化和监控是关键。使用自动化运维工具可以简化容器的部署、升级和扩缩容等操作,降低人工干预的成本和风险。同时,通过监控工具实时收集和分析容器的运行状态、性能指标等信息,可以帮助及时发现和解决问题,确保大数据业务的稳定运行。

  此外,还需要关注容器的安全性问题。容器环境的安全性直接影响到大数据业务的安全性和稳定性。因此,需要采取一系列安全措施,如限制容器的权限、使用安全加固的镜像、定期更新和修补漏洞等,来确保容器环境的安全性。

  综上所述,运维容器环境场景下的大数据业务需要综合考虑技术、自动化、监控和安全等多个方面。通过合理的规划和实施,可以确保大数据业务的稳定运行和高效处理。

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  在大数据作业容器化部署后,运维体系,比如日志收集、监控告警和异常诊断是保障系统稳定性和运行效率的关键环节 。要做到统一,精确,建议从如下几方面着手。

  (1) 确保大数据作业容器中的日志输出符合统一的格式和标准 ,使用日志聚合工具(比如Fluentd、Filebeat)收集大数据作业容器的日志,并发送到公司的统一日志平台进行存储和分析。

  (2) 使用监控工具(比如主流的Prometheus、Grafana)监控大数据作业容器的关键性能指标,如CPU利用率、内存使用量、网络流量等。

  (3) 利用统一日志平台系统进行日志分析,快速定位和排查异常情况等。还可以通过事件追溯工具(如Jaeger、Zipkin)追踪作业的调用链路,查找异常发生的根源和影响范围。

  3. 容器间的隔离提高了系统的安全性,但容器本身也存在一定的安全风险,如容器逃逸、容器漏洞等问题。在大数据平台中,数据的安全性尤为重要,因此如何加强容器的安全防护措施,确保数据的安全性和隐私性?

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  在大数据平台中,数据的安全性和隐私性至关重要,必须采取多层次的安全防护措施来确保数据的安全性,可以从容器镜像安全、容器安全、网络安全、存储安全等维度进行加强。

  (1) 在容器镜像安全方面,可以使用镜像签名技术来验证镜像的来源和完整性,确保镜像未被篡改。也可以定期使用容器镜像扫描工具(如Aqua Security、Clair、Anchore)扫描镜像中的漏洞,及时修复已知安全问题。

  (2) 容器安全方面,可以使用轻量级、最小化的基础镜像,选择官方和受信任的基础镜像,避免使用包含不必要软件和服务的镜像。还需定期更新镜像,确保使用最新的安全补丁。另外,容器也需限制容器权限,比如:运行容器时使用非root用户,避免给予容器过高的权限,使用securityContext来限制容器的权限,如设置只读文件系统、禁止特权模式等。

  (3) 网络安全方面,使用k8s的networkpolicy来限制不同Pod间的网络通信,只允许必要的通信路径。使用TLS/SSL加密容器间的通信,确保数据在传输过程中不被窃听和篡改等。

  (4) 存储安全,比对持久化存储的数据进行加密,使用K8S的Secrets管理敏感信息。使用RBAC严格控制对存储和数据资源的访问权限等。

  当然,还有一些安全监控工具,容器防火墙,应用安全,认证等渠道加强安全。比如可以使用Seccomp和AppArmor等配置来限制容器能执行的系统调用,防止容器逃逸攻击行为等。

  @dean25 民生银行 软件架构设计师:

  容器之间的隔离虽然提高了系统的安全性,但是容器本身也存在一定的安全风险,容器逃逸主要出现在恶意容器上,企业内部通过安全流程和发布规范控制,是可以避免恶意容器发布到企业内部网络。此外,计算节点上也部署有容器安全防护程序,出现逃逸会及时检测并告警。容器漏洞通过镜像安全扫描、应用容器上线扫描和定期扫描发现。大数据作业的容器一般都是运行后即被回收删除,并且是大数据调度器创建的,并不会存在恶意容器的问题。

  @jillme 某大型银行 技术专家:

  除去正常数据安全和隐私性的保护措施:减少容器配置不当,例如:开启特权模式(privileged)、挂载Docker Socket逃逸、挂载宿主机procfs逃逸、Docker Remote API未授权访问逃逸。避免将宿主机上的敏感文件或目录挂载到容器内部,或者使用只读模式挂载;避免将Docker Socket文件挂载到容器内部,或者使用TLS加密通信。

  @xuyy 某银行 数据架构师:

  (1) 加强访问控制措施:采用最小权限原则限制每个用户仅能访问其所需执行任务的资源; 对关键操作实施双因素认证以提高帐户安全性等。在容器层面可以通过配置镜像来自定义权限管理以确保只有授权的用户可以启动特定的容器实例。

  (2) 安全审计跟踪日志记录:及时收集和分析系统日志以便迅速发现和修复潜在问题并进行长期监控以防止恶意行为发生。使用容器编排工具提供的日志管理系统可以对各个容器级别的活动进行全面审查。

  (3) 容器间隔离和安全加固:通过将不同的业务逻辑划分到独立的微型服务中并将它们打包成轻量级、高效的容器镜像可以提高整个系统的稳定性与安全级别。针对容器间的通信采取加密和防火墙等手段进一步减小潜在的攻击可能性。

  (4) 定期更新软件和补丁维护:及时安装官方发布的安全补丁和改进程序有助于减轻因已知漏洞被攻击造成的影响和提高整体安全性水平,从而防止黑客利用这些漏洞进行攻击。

  (5) 持续加强员工培训教育:强化员工的密码管理和安全意识也是防范安全风险的重要手段之一 , 提高他们对常见的网络钓鱼或其他类型欺诈行为的识别能力。

  总结来说,在大数据时代下要保证数据安全, 需要从多方面综合考虑并采取相应措施才能达到保护效果。

  4. 生产环境上在离线业务混合部署实现需要用到k8s的弹性扩缩容,而弹性扩缩容的上限又涉及到命名空间的quota限制。那么当一个新系统上线k8s的时候,是否应该限制命名空间的CPU\内存的quota,如果要限制的话,应该如何配置才合理?

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  容器弹性有HPA/VPA及集群的cluster autoscaler,对应Quota如何配置合理,建议如下:

  (1) 根据应用类型设置Quota:对于不同类型的应用(如离线批处理和在线服务),设置不同的Quota。离线批处理任务可以设置较低的优先级和资源请求,而在线服务则需要更高的资源保障。

  (2) 逐步调整:新系统上线时,可以设置较低的 Quota,观察实际使用情况后逐步调整,以找到合适的资源配置。

  (3) 预留缓冲:为每个命名空间预留一定的缓冲资源,以应对突发流量和资源需求。

  @dean25 民生银行 软件架构设计师:

  生产环境上在离线业务混合部署实现需要用到k8s的弹性扩缩容,而弹性扩缩容的上限又涉及到命名空间的quota限制。针对这块的看法:在线应用的NameSpace目前使用的是弹性配额,会在当前实际使用的request,limit基础上,增加30%-60%(取决于系统应用系统的重要级别),配额每12小时刷新一次。离线应用不会设置NameSpace的配额,而是采用Yarn的方式,通过作业队列的配额来控制。这个配额根据时间段也可以做成弹性的,比如白天少一些,晚上多一些。

  @jinhaibo 昆仑银行 技术管理:

  在新系统上线到Kubernetes(k8s)时,确实应该考虑对命名空间的CPU和内存的quota进行限制,以确保资源的合理使用和避免资源浪费。以下是一些关于如何配置合理的命名空间quota的建议:

  (1) 评估业务需求:在设置quota之前,首先要了解新系统的业务需求,包括预期的负载、性能要求以及CPU和内存的使用模式。评估系统在不同负载下的资源使用情况,以便为quota设置合理的上限。

  (2) 设定初始quota:根据业务需求,为命名空间设定一个初始的CPU和内存quota。这个quota应该能够满足系统在正常负载下的资源需求。考虑到系统可能的扩展和增长,quota应该具有一定的弹性,以应对未来可能的需求增长。

  (3) 使用ResourceQuota对象:在Kubernetes中,ResourceQuota对象用于限制命名空间中资源的使用量。可以为命名空间创建一个或多个ResourceQuota对象,以限制不同类型的资源使用量。

  (4) 监控与调整:一旦设置了quota,就需要监控命名空间中资源的实际使用情况。这可以通过Kubernetes的监控工具(如Prometheus)来完成。如果发现某个命名空间的资源使用量接近或达到quota上限,就需要根据实际情况进行调整。可能需要增加quota上限,或者优化应用程序以减少资源消耗。

  (5) 配置Horizontal Pod Autoscaler (HPA):HPA可以根据CPU或内存的使用情况自动扩展或缩减Pod的数量。这有助于在资源紧张时自动释放资源,并在需要时增加资源以满足需求。可以为应用程序配置HPA,以确保在资源紧张时能够自动扩展Pod的数量,并在资源充足时缩减Pod的数量。

  (6) 考虑垂直伸缩:除了水平伸缩(增减Pod数量)外,还可以考虑垂直伸缩(增减Pod的资源限制)。Vertical Pod Autoscaler (VPA) 可以根据Pod的资源使用情况自动调整其资源限制。

  5. 大数据平台物理部署和容器化部署在系统运行稳定性方面有什么区别?

  @强哥之神 上汽集团云计算中心 架构师&技术经理:

  不管是否是大数据平台,只要使用容器化部署,一般在资源利用率、自动故障恢复、环境一致性、统一监控和日志管理、自动化部署、安全性等方面都显著优于传统的物理部署。但数据存储可能例外(其实只要能解决网络存储的带宽及网络延迟问题,也是比物理部署采用的本地存储要好的)。

  另外,容器化部署能够通过动态资源管理、高可用性机制、持续集成和持续部署等手段,大幅提升系统的运行稳定性和效率,所以目前很多公司也都使用容器来实现大数据平台的部署。

  @dean25 民生银行 软件架构设计师:

  关于大数据平台物理部署和容器化部署,在系统运行稳定性方面,很多人自然会理解物理部署系统稳定性肯定会好于容器化部署,其实只要容器化大数据作业管理组件设计好HA机制,在稳定性层面和传统部署并没有什么区别。只有容器化提供同样的稳定性,业务才愿意迁移作业到容器化集群里。这是最基本的要求。当然,混部场景下,为了确保在线服务不受影响,一些情况下会对离线大数据作业做一些资源方面的压制,让作业变慢,这是混合部署需要承担的代价。

  @xuyy 某银行 数据架构师:

  容器化技术作为一种轻量级虚拟化技术,已经成为应用部署的主要方式。容器化技术通过共享操作系统,将应用程序及其依赖项打包成一个独立的、可移植的容器,从而实现应用的快速部署和环境一致性。相比于物理部署方式,容器化技术具有以下优势:

  (1) 轻量级,容器化技术不需要独立的操作系统,因此占用的资源更少,启动速度更快。

  (2) 快速部署,容器可以轻松地在不同的环境中复制和部署,大大缩短了应用上线时间。

  (3) 环境一致性,由于容器包含了应用程序及其依赖项,因此可以在不同的环境中保持一致性。

  (4) 弹性伸缩,容器可以快速地创建和销毁,从而实现应用的弹性伸缩。

0
相关文章