• [技术干货] 华为云发布《云原生2.0架构白皮书》,GaussDB技术再升级
    近期,在华为伙伴暨开发者大会2022,华为云CTO张宇昕发布了《云原生2.0架构白皮书》,包括云原生数据库在内,介绍了云原生2.0的关键特征、架构模式,以及优秀实践,为企业数字化升级注入了云原生2.0新动力。华为云数据库首席架构师冯柯也在会上分享了云原生数据库HTAP重大特性商用,通过极致混合负载能力和及时精准的数据分析,助力企业商业决策。云原生数据库技术再创新早在去年,华为云便发布了《云原生2.0白皮书》,阐述了云原生2.0定义、价值及参考架构,解读了“资源高效、应用敏捷、业务智能、安全可信”四大价值以及预测未来发展趋势。而今年的《云原生2.0架构白皮书》,围绕架构升级,重点诠释了云原生2.0技术特征与架构设计模式,以云原生技术力量推动企业数字化转型升级。 云原生数据库作为白皮书的重要内容之一,在架构创新和技术特性方面均有重大突破。华为云云原生数据库GaussDB基于存算分离,并利用云原生数据库云存储 DFV 基于存储算子语义下推能力,支撑事务处理算子的并行下推;同时存储层支持日志回放能力,数据库写节点只需要把日志写到存储层,存储层就可以将日志回放为数据页面,并在多副本上提供一致性版本,大大节省了计算层和存储层的高速网络带宽。优化后的云原生GaussDB架构可以很好地解决热点数据问题,以及数据丢失、故障恢复等难题,面对客户高负载和各种复杂场景,表现更从容。 Serverless也是云原生数据库的关键特征之一。华为云云原生数据库GaussDB结合Serverless,只需创建数据库节点,指定所需的数据库容量范围,然后数据库处于工作状态期间按照每秒使用的数据库容量进行付费,同时利用华为云数据库的应用无损透明倒换技术 (ALT),规格变更可以实现应用基本无感知,让开发者专注于应用开发,无需关注资源。 此外,华为云数据库首席架构师冯柯还在会上介绍了云原生数据库GaussDB的另一重大特性——HTAP。云原生HTAP深度融合OLTP和OLAP两者优势,统一入口,自动分流,并且在行存和列存引擎上建立全局一致性事务视图,达到数据实时一致,支撑更多混合负载的场景。这种方式可以支持大量并发的更新,而且数据同步时延达到秒级或毫秒级,有效避免了传统解决方案中数据抽取、转换和装载等繁琐步骤,极大提升了数据处理的时效性,为企业提供实时精准的决策支持。目前该特性已正式商用。 云原生数据库优秀实践 云原生数据库GaussDB不仅在技术上硕果累累,还广泛应用于电商、制造业、交通、泛互联网等领域,历经关键行业的锤炼,并取得重大实践成果。 在电商行业,为了满足梦饷集团的发展需求,华为云云原生数据库GaussDB(for MySQL)助力梦饷集团打造高性能的云原生电商平台,通过平滑扩容和快速弹性升降能力,可从容应对突发业务流量,大促过后也可以及时回落,快速降低成本。而且运维效率提升约 30%,每秒成交的订单数再创历史新高,成为了利用数字基础设施助力业务快速增长的标杆。 在汽车行业,华为云云原生数据库GaussDB(for MySQL)成功助力中国一汽红旗ERP系统微服务改造升级,ERP 系统整体性能大幅提升,流量洪峰下业务运行又快又稳;提供了开放的 MySQL 生态,各业务协同更灵活。使用成本方面,每台数据库由原来最低600+万/年降低至100+万/年;生产效率方面,由原来几天才能出货 bom 单到最快 20 分钟内即可计算出一个生产计划的 bom 单;微服务的拆分提升了系统稳定性,提高了业务交付速度,系统扩展性更强。 云原生数据库未来趋势 云原生技术浪潮汹涌澎湃,一日千里,云原生2.0之后,我们如何踏浪前行、乘风破浪? 未来的技术世界我们无法掌控,但从现状出发,我们或许可以窥见端倪。随着跨Region技术的增强,高资源利用率的驱动,以及Serverless的普遍诉求,去 Region 化、智能弹性、Serverless数据库将是未来发展方向。 但在此之前,云原生数据库还有一段路要走,比如Serverless数据库未来需要具备智能弹性的能力,能够根据用户的历史负载计算出用户画像,依赖秒级监控能力,快速判断用户未来的负载趋势,提前为用户弹性伸缩好资源,避免用户负载冲击到资源规格上限,减少系统资源浪费。 虽有一定挑战,但也极具动力,华为云云原生数据库GaussDB将凝聚技术力量,锐意创新,助力更多企业业务智能化升级,深化数据服务能力,推进千行百业数字化转型。
  • [技术干货] 云原生时代:数字原生企业全景视图
    云原生,究其根本意义,是规范“用云”的架构模式、技术标准,提供相应的工具,是把云计算真正变成日常生活中的“水电煤”。当前,全社会正在加速迈入数字经济时代。数字技术正在通过与实体经济的深度融合,加速重构生产体系、创新生活方式、再造治理流程,数字产业化、产业数字化和数字治理正在深刻影响经济社会和居民生活的方方面面。计算是数字世界的动力,云计算是数字时代的“水电煤”。但相比“水电煤”的“即插即用”,云计算所具备的易用性还有很长的路要走。未来的一切应用应该是按照云原生规范构建的,通过云原生工具,可以即插即用地对接到任何一朵云上而获得澎湃动力。云原生的概念定义云原生是面向云应用设计的一种思想理念,充分发挥云效能的最佳实践路径,帮助企业构建弹性可靠、松耦合、易管理可观测的应用系统,提升交付效率,降低运维复杂度。代表技术包括不可变基础设施、服务网格、声明式 API 及 Serverless 等。从产业效用方面来看,云原生极大的释放了云的红利,云原生充分继承云的设计思想,未来应用将更多基于云上进行本土应用开发,即云原生应用更加适合云的架构,而云计算也为云原生应用提供较好的基础支撑,如资源隔离机制、分布式部署、高可用架构等方面,通过新的架构、技术保障应用系统变得更加健壮,可以说云原生最大程度发挥了云的优势。云计算的拐点已至,云原生成为驱动业务增长的重要引擎。从技术特征方面来看,云原生架构具备以下典型特征:极致的弹性能力,不同于虚拟机分钟级的弹性响应,以容器技术为基础的云原生技术架构可实现秒级甚至毫秒级的弹性响应;服务自治故障自愈能力,基于云原生技术栈构建的平台具有高度自动化的分发调度调谐机制,可实现应用故障的自动摘除与重建,具有极强的自愈能力及随意处置性;大规模可复制能力,可实现跨区域、跨平台甚至跨服务商的规模化复制部署能力。从应用价值方面来看,异构资源标准化,容器技术有效解决了异构环境的部署一致性问题,促进了资源的标准化,为服务化、自动化提供了基础;加速数字基础设施升级解放生产力,降低用户数字化技术的使用门槛,提高资源的复合利用率,变革研发运营的生产方式,打破组织壁垒,实现研发与运维的跨域协同,提升交付效率,解放生产力;提升业务应用的迭代速度,赋能业务创新。云原生技术实现了应用的敏捷开发,大幅提升交付速度,降低业务试错成本,快速响应用户需求,增强用户体验加速业务创新。云原生技术行业应用制造业:打造产品生命周期数字化  通过云原生技术能够帮助工业企业快速构建平台,实现设备、机器、人力互联,用户、产品互联、企业、供应链互联,全面提升工业生产中数据的价值,服务于安全生产、质量监控、产品研发迭代,进而打造产品全生命周期数字化,实现工业企业数字化转型。金融业 :从架构敏捷到业务敏捷的质变  随着互联网的高速发展,作为率先步入了互联网时代的行业,金融业成为了数字化转型的领航者。互联网海量数据、高频线上交易等层出不穷的应用场景无一不牵引着金融业商业模式的变革。一方面,为应对各类大促场景与电子交易,金融行业面临业务系统流量弹性压力陡增。由于历史遗留原因,基础设施资源异构化严重,资源利用率普遍较低,弹性伸缩能力较弱,金融企业应用基础设施及软件架构均亟需升级。另一方面,互联网金融促使传统金融企业转型,驱动金融科技和金融产品的升级。金融企业唯有基于大量的用户数据,进行有效利用形成用户画像,实现精准营销,才能直击用户需求,精准推送金融产品,促进企业业务迈入数字化发展阶段。零售业 :营销与供应链数字化体验  基于云原生构建的数字营销与供应链平台,基于大量消费数据为“新零售”从数据量变带来了服务质变。一是商品推送更贴合,通过对消费者消费行为分析,使得客户画像更加清晰,商品推送更加贴合用户实际购买需求;二是商户选品更精准,通过对销售数据智能化分析,商户商品品类进货更精准,从而降低了商品库存成本;三是供应链更透明,基于智能营销库存分析,新零售供应链决策更加数据化,智能化,实现整个产业供应链共赢。物流行业 :转运作业数字化征程  依托于云原生平台,物流行业实现了物流转运数据打通、物流配送流程智能化以及物流服务品质提升。从物流转运数据上看,通过云原生平台实现不同应用系统间转运数据的流通与实时呈现,做到了快件转运数据全流程跟踪;从物流配送流程上看,通过云原生平台,实现配送路径的智能规划与调度,进一步加快物流时效,降低运输与仓储成本;从物流服务品质上,通过云原生平台实现业务应用按需弹性与高可用,满足了大促活动等对物流业务量的考验,提升用户的服务体验。中美云原生产业发展态势云原生将中美 ICT 技术代差从 30 年缩短至 2-3 年,为我国的技术破局提供了换道超车的可能,但当前也应清楚的认知中美云原生产业技术存在的客观差距,这在一定程度上反映了中美两国对云原生技术的价值认知和产业成果转化程度的差异。现阶段,中美云原生产业仍存在量级差异:认知:美国较中国更早的认识云计算的战略价值,政策推进云计算向纵深领域应用。市场:美国领跑全球中国主导亚太,中美云原生产业鸿沟持续收窄。资本:华尔街押注创新技术,中资偏重基础产品。  美国引领核心技术,中国技术影响力显著增强:云原生技术生态由美国企业开创,美国开源项目贡献度远超其他国家。中国云原生技术起步虽晚于美国,但在中国超大规模应用丰富的互联网环境孕育下发展非常迅速。  中美产业用户的云原生应用深度存在显著差异:云原生技术在美国国防部“云战略”中扮演重要角色。云原生技术尚未进入中国军政核心领域应用,商业领域的云原生化应用逐步加深。数字原生企业全景视图数字原生企业(Cloud-Native Digital Enterprise)是指业务流程、交易和交互很大程度上由技术支持的组织,即企业在内、外部运营中均依赖数字技术获取竞争优势。根据企业数字化基础和归属行业特征,可将数字原生企业分为三类,即互联网企业、传统行业新企业以及传统行业企业的创新部门。技术驱动、数据指引是数字原生企业的核心,这与传统企业形成了本质区别,具体表现总结为七个核心特征:以互联网平台为核心载体,全周期的生产活动、用户信息感知等供需两侧数据均由互联网平台作为统一入口,为数据流通提供基础载体;以获客数量和规模为核心战略,大体量的获客数量能够为产品优化提供更精准的数据样本,增强获客提升 - 产品优化的良性循环;以服务客户为核心竞争力,将客户的需求、体验和忠诚度作为企业最重要的竞争力,由追求短期利益向商业长期主义过渡;以快速迭代试错持续出新为核心手段,依靠数字技术降低探索和创新的试错成本,加速业务敏捷实现产品的小步快跑、高速迭代;以人才、数据和算法为核心资产,将高科技人才、信息基础设施、技术体系、数据资产和算法作为企业的战略资产,持续开发、优化上述资产;以商业生态的拓展维护为核心能力,将生态系统开发、平台整合能力和核心 IP 视为同等重要的能力,通过不断整合外部资源,提供新的产品和服务,确保客户的多元需求得到满足,增强客户的黏性和忠诚度;以多维数据整合作为核心知识,将网络空间海量数据的分析处理、异构数据的整合、分析与决策支持能力和人工智能技术的应用作为组织的关键知识。来源:中国数谷
  • [认证交流] 华为云云原生入门级开发者认证学习笔记
    【第一章:云原生架构总览学习笔记】https://bbs.huaweicloud.com/forum/thread-187300-1-1.html     【第二章:云原生基础设置之容器技术学习笔记】https://bbs.huaweicloud.com/forum/thread-187460-1-1.html 【第三章:云原生基础设施之Kubernetes学习笔记】 https://bbs.huaweicloud.com/forum/thread-187826-1-1.html 【第四章:华为云容器服务介绍 学习笔记】 https://bbs.huaweicloud.com/forum/thread-188376-1-1.html 【第五章:Isito技术介绍 】 https://bbs.huaweicloud.com/forum/thread-188556-1-1.html 【第六章:华为云应用服务网格ASM介绍】 https://bbs.huaweicloud.com/forum/thread-188774-1-1.html 【第七章:华为云微服务架构介绍】 https://bbs.huaweicloud.com/forum/thread-188777-1-1.html 【第八章:云原生DevSecOps介绍】 https://bbs.huaweicloud.com/forum/thread-188844-1-1.html  
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第八章
    第8章:云原生DevSecOps介绍• 敏捷开发及DevOps思想敏捷可以实现研发过程的持续高可视性、高可适应性、更早且持续产出业务价值、更早发现和解决风险。• Scrum特点1. 团队自组织,自管理2. 面对面沟通3. “可能性的”艺术,强调关注事情当下状态• Scrum团队• DevOps是什么一种重视“软件开发人员”和“IT运维技术人员”之间沟通合作的文化、运动或惯例。• SevOps生命周期过程DevOps知识体系如下图,包括敏捷管理、持续交付、IT服务管理(ITSM)、精益管理等构成部分• 一站式DevOps平台端到端工具链服务,涵盖软件生命周期环节• 应用部署流程:1. 设计与规划阶段:使用华为云DevCloud完成规划和敏捷项目管理敏捷项目开发的特点:透明、可控、可跟踪、可继承、固化到公司、流程顺畅2. 持续开发与测试:使用华为云DevCloud协助团队完成编码开发、代码质量检查和质量验证。代码托管:注重安全、高效协作、贡献可视化代码检查:持续看护代码质量、防护代码腐化云测:一站式云端测试平台、云端高效自动化测试、全生命周期追溯和可视化3. 持续安全审计:完成DevCloud静态代码检查4. 持续集成与部署软件交付的挑战:一个系统的修改带来的涟漪效应,受影响系统随着系统复杂度增加而呈级数增长。被影响的系统可能还会造成二次涟漪响应,给需求规划、架构设计、开发过程、测试过程等整个软件开发过程造成极大的困扰。、持续交付:目标在于让软件的建置、测试与释出变得更快以及更频繁、这种方式可以减少软件开发时间和成本,减少风险。持续交付以持续集成为基础。持续部署:持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续交付:是持续集成的延伸,将集成后的代码部署到类生产环境,确保可以以可持续的方式快速向客户发布新的更改。持续部署与持续交付:持续部署意味着所有的变更都会被自动部署到生产环境中,持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。持续交付并不意味着每一次变化都要尽快部署到生产环境中,而意味着每一次变化都是随时可以部署的。5. 使用华为云DevCloud内置的CI\CD能力,体现持续交付价值。6. DevCloud部署服务,提供自动化部署能力:多形态:可部署到物理机、虚机、容器、函数多技术栈:可支持多种技术栈应用的部署多集成:流水线、ServiceStage应用托管、AOM运维无缝集成专业的部署能力7. DevOps下的运维系统特点:高可用、高成功率、高效率、可回滚、自动化运维、应用管理8. DevOps运维目标:报账系统的稳定运行,达成服务的质量目标9. 通过自动化实现软件快速部署和发布优势:开源的自动化工具、“一切即代码”、统一的平台、流水线部署与发布、实现一定功能的子系统、解耦、拼接10. 应用运维管理AOM:云上应用的一站式立体化运维管理平台。实时监控应用及相关云资源,分析应用健康状态;提供灵活丰富的数据可视化功能,帮助用户及时发现故障;全面掌握应用、资源及业务的实时运行状况11. 什么是DevSecOps在DevOps实践基础上,在持续构建的各阶段引入针对产品的安全保障活动,强调开发、运维/运营、安全团队的融合运作,是DevOps的增强和完善。DevSecOps的价值和实践强调应用程序开发人员可以怎样把安全检查与他们的集成和部署流水线构建到一起。12. 贯穿研发过程的安全保障体系• CloudIDE按需获取的工作空间:全云化、更快速、实用性强、可扩展• 低代码/无代码开发与华为云APPCube低代码应用开发平台,提供了云上无码化、低码化、支持多码化的应用开发模式,屏蔽了技术的复杂性,提升了企业开发的效率。随时随地开发应用,所见即所得通过AppCube,降低业务创新门槛,快速应用开发交付。• 云上运维实践—华为云云上运维解决方案:实现资源、应用、应用用户体验全面运维、一站式获取所需,完成云上运维。• Serverless:一种新型的云计算代码开发及执行模式。函数开发者不需要考虑或者管理扩容。Serverless以计量方式收费,只收取函数运行时计算资源的使用费用。• Serverless分类1、 Backend-as-a-Service(BaaS)基于API的第三方服务,可替代应用程序中的核心功能子集。2、 Functions-as-a-Service(FaaS)通常提供事件驱使计算。• Serverless应用场景特征分析Serverless主要用户场景有以下几个特点:短时间任务为主大部分时间请求平缓、偶然有突发流量基于事件驱动无状态,无会话保持典型的Serverless应用场景:电商IoT数据分析处理多媒体数据存储时的实时处理移动后端• Serverless价值快:秒级快速上线,毫秒级弹性伸缩,天然高可用简:免运维,函数代码即服务省:按实际使用100毫秒计费• 华为云Serverless解决方案视图• 华为云Serverless方案-FunctionGraph
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第七章
    第7章:华为云微服务架构介绍• 应用架构的演进• 什么是微服务微服务架构是一种架构模式,将单体应用划分成一组小的服务,通过服务之间互相协作,共同实现系统功能。• 微服务的特征• 单体架构:一种软件设计规范,用一种将业务逻辑、数据、显示分离的方法组织代码• 单体架构的优缺点优点:1. 开发和测试简单2. 部署简单3. 运维简单缺点:1. 交付周期长2. 维护成本增加3. 可扩展性差4. 技术选型成本高5. 新成员培养周期长• 从单体架构演进到SOA服务化架构• 微服务架构• 微服务的优势和挑战优势:服务模块边界更清晰、支持独立的部署、允许技术多样性挑战:分布式编程难度大有风险、需处理分布式系统的一致性、增加运维复杂性• 常见的微服务框架1. Spring Cloud2. ServiceComb3. Apache Dubbo• 微服务架构模式1. 微服务之间的RPC通信2. 分布式微服务实例和服务发现3. 配置外置、动态、集中的配置管理4. 提供熔断、限流、隔离、负载均衡等微服务治理能力5. 分布式事务管理能力6. 调用链、集中日志采集和检索• Spring Cloud框架1. 服务注册:服务实例将自身的服务信息注册到注册中心。2. 服务发现:服务实例请求注册中心获取所依赖服务信息。3. 负载均衡:是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。4. API网关:微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服务网关。5. 配置中心:把项目中各种配置、各种参数、各种开关,全都放到一个集中的地方进行统一管理,并提供一套标准的接口。• 熔断:在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体可用性,可暂时切断对下游服务的调用。• 链路追踪:对一次请求涉及多个服务链路进行日志记录,性能监控即链路追踪。• Spring Cloud的技术实现• Spring Cloud实现—服务注册发现和集中配置• Spring Cloud微服务典型部署• 微服务引擎CSE用于微服务应用的云中间件,为用户提供注册发现、服务治理、配置管理等高性能和高韧性的企业级服务能力。可无缝兼容Spring Cloud、ServiceComb等开源生态。• CSE功能介绍1. 无需构建和维护Eureka,Consul等开源软件2. Spring Cloud应用无需修改代码,使用spring-cloud-huawei轻松接入3. 提供用户友好的配置管理,服务治理、安全认证等功能• CSE功能组件与Spring Cloud框架的关系• Spring Cloud Huawei的位置和作用构建存在Spring Cloud应用之上,基于Spring Cloud现有能力构建的,Spring Cloud huawei提供的一系列新的组件。• Spring Cloud Huawei功能介绍• 微服务代码框架• Spring Cloud Huawei接入流程1. 引入依赖包2. 接入服务注册发现中心3. 接入配置中心• Spring Cloud huawei开发引入Spring Cloud Huawei依赖配置微服务信息和CSE引擎信息,从而接入微服务引擎CSE微服务注册发现配置管理服务治理• 华为云应用管理与运维平台功能框架ServiceStage是一个应用托管和微服务管理平台。1. 应用开发:基于spring_cloud_huawei模板进行微服务部署2. 通过流水线功能实现应用的持续交付3. ServiceStage支持应用部署在多种基础设置上云容器引擎CCE部署弹性云服务ECS部署云容器实例CCI部署• ServiceStage支持对应用的全生命周期管理• 应用运维管理服务AOM以云上应用为中心,为企业应用提供一站式立体运维平台• AOM服务可监控的对象AOM日志管理• 如何进行日志采集—LTS日志组:是云日志服务进行日志管理的基本单位,可以创建日志流以及设置日志存储时间。日志流:日志读写的基本单位,日志组中可以创建日志流,方便对日志进一步分类管理。日志采集:采集器支持3种类型:在ECS或私有云节点上安装采集器,通过配置日志路径即可完成采集,用户通过SDK\API接口方式上报日志数据和通过云服务自动完成数据对接。• Service支持对微服务动态治理• 微服务完成部署后,根据微服务的运行情况,配置响应的策略,对服务进行治理。
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第六章
    第6章:华为云应用服务网格ASM介绍• 应用服务网格ASM概述基于开源Istio推出的服务网格平台,它深度、无缝对接了华为云的企业级K8s集群服务云容器引擎。提供非侵入式的微服务治理解决方案。• 华为云ASM产品架构• 华为云ASM代理模式对比• 华为云ASM服务功能商业增强1. 流量2. 可靠性、可维护性3. 协议扩展4. 混合部署5. 可观察性6. 灰度发布7. 跨集群治理8. 大规模9. 高密度10. 网格升级11. 网格运维12. 社区和开源13. 专家服务• 华为云ASM与其他云服务的关系• 华为云ASM的关键特性1. 灰度发布:金丝雀发布、AB Test、蓝绿发布、自定义2. 流量治理:限流、熔断、网络长连接管理、服务安全认证3. 基于请求内容\浏览器\OS分发4. 基于流量比例分发5. 可观察性6. 安全:透明双向认证、细粒度访问授权7. 多集群服务治理:扁平网络8. 网格数据面服务框架:Spring Cloud、Duddo9. 兼容性和扩展:社区版本兼容、社区插件支持• 华为云ASM主要运用场景1. 服务灰度发布场景2. 服务流量管理场景3. 端到端的透明安全4. 服务运行监控5. 传统微服务SDK结合
  • [技术干货] 云原生数据库成熟度模型分析
    如今,很多公司都在利用Kubernetes以及相关技术,将工作负载迁移到云端。只是,云迁移会面临几个重要挑战,比如:如何将数据和应用迁移上云,如何存储云上数据,涉及哪些核心技术等等。说白了,云上的各种问题,都与数据库息息相关。事实上,在云原生概念出现之前,企业一直采用传统数据库处理各种数据问题。云原生概念出现后,企业有了更灵活的选择,可以通过更现代化的应用程序,让数据库应用更具可扩展性,更具弹性,以及更能满足自动化和可视化需求。问题是,云原生数据库到底是怎样一种架构?为什么那么多企业选择云原生路线?本文将推荐几个云原生数据库成熟度模型,企业可以根据云架构实际情况来评估,看看更适合哪种技术堆栈或者应用模型!一、云应用模式演进在传统云服务模式下,用户主要API即服务的形式获得服务,也就是我们常说的基础架构即服务 (IaaS)、平台即服务 (PaaS) 和软件即服务 (SaaS)。云原生技术出现后,为用户带来了新的体验,通过类似于PaaS模式的“变体”,即容器即服务 (CaaS) 和功能即服务 (FaaS),企业可以获得更好的云上自服务能力,能以最佳方式编排云上服务,并且可以让权责分配更明晰。云原生全景图详解(金色部分由云厂商负责,蓝色部分由用户自己负责)上述图片有很多重要信息点,我们可以逐一拆解:IaaS:所谓IaaS,是指云提供商只需配置企业所需要的服务器,用户仍然需要配置帐户并安装应用程序所需的所有组件,包括中间件。PaaS:使用PaaS以后,用户的工作量少了很多,无须经过冗繁的配置,就可以将所有组件部署在现有的应用程序中,包括服务器也可以作为平台以云的形式提供服务,用户可以在上面开发、运行和管理自己的应用程序。SaaS:SaaS,也被称为是托管服务,用户可以通过 API 使用软件,这些 API 可以提供更强大、更高级别以及更抽象的业务功能。CaaS:CaaS 是提供一种上传、运行、扩展以及管理应用程序容器的方法,和PaaS一样,都能帮助开发人员部署并运行应用程序。只是,PaaS会隐藏一部分容器化任务,有点独断专行。CaaS能更轻松地运用多云托管功能,包括可以利用Kubernetes进行容器管理。FaaS:FaaS,有时也称为“无服务器”,是更抽象的 PaaS 版本,用户只需要关注业务代码逻辑,无需关注服务器资源。可以说,FaaS提供了一个更加细分和抽象的服务化能力。值得一提的是,上述这些服务模式都可以组合使用,比如:企业可以将自己的业务系统部署在基于IaaS的虚拟机 (VM) 上,也可以在基于CaaS 的容器中部署多个微服务,或者采用完全来自第三方服务的SaaS,再或者通过FaaS来协调各种服务之间的工作流以及数据流。二、云原生数据库成熟度模型不同云应用模式,为云原生架构的诞生奠定了坚实的技术基础。回到前文提到的云原生数据库以及数据服务成熟度模型问题,我们首先要弄清楚云原生的概念。根据Bill Wilder 在其 2012 年的著作《云架构模式》中提出的云原生定义:“是指任何可以充分利用云平台的应用程序。”根据这个定义来理解,IaaS 和 PaaS 可以被称为“云就绪”,因为企业可以按原样安装希望临时的任何应用程序,而无需进行调整。然而,这是以真正的云原生解决方案所提供的灵活性为代价的。只有 CaaS、SaaS 和 FaaS 才能真正被认为是为云架构而生。因此,云原生可以认为是,代表了云原生架构的不同成熟度级别:成熟度模型在此模型中,我们将 CaaS 表示为“Kubernetes 原生”,SaaS 表示为“托管服务”,FaaS 表示为“无服务器”。如果我们将“云就绪”成熟度级别表示为 IaaS/PaaS 作为基线,我们得到一个看起来像这样的成熟度模型:云原生成熟度级别让我们从最不成熟到最成熟,逐一分析这些成熟度级别。成熟度级别0:云数据就绪第一个成熟度级别很容易达到。这是经典的提升和转移范式。任何可以部署在 IaaS 上的系统都将被视为云就绪。我们经常观察到的一种模式是,部署在 VM 中的单体应用程序,其中包含嵌入式数据库。只要企业将应用程序打包在一个 VM(或多个VM)中并连接任何所需的网络,就可以在云中运行它。这是一个完全有效的部署选项,通常是组织采用云的重要过渡阶段,但不能完全被视为云原生。成熟度级别1:基于Kubernetes 构建的运行模式此级别通常代表企业已将单体应用程序分解为更小的微服务状态,这些微服务可以部署在容器中并独立扩展。这是非常重要的一步,但是像 Docker 这样的容器技术本身并不能提供管理应用程序生命周期和确保高可用性和可扩展性所需的一切。Docker 运行时和 Docker-compose 非常适合开发和测试环境;但对于生产使用来说,企业需要监控正在发生的事情并采取行动来维持服务水平,所以以Kubernetes等为代表的容器编排正是为此目的而创建。众所周知,Kubernetes发展迅猛,2020 年云原生计算基金会 (CNCF) 的一项调查发现,92% 的受访公司在生产中运行容器,其中83%的企业已经部署并使用了 Kubernetes。有意思的是, Kubernetes 在部署微服务和应用程序方面很受欢迎,但是我们却很少看到数据库部署在上面,这其中的原因是什么?虽然 ,Kubernetes 最初是为无状态工作负载而设计的,但通过最新的改进,也可以引入有状态应用,比如通过Cassandra,就可以有效地将数据库部署到容器中。但事实上,我们经常看到容器化应用程序将存储职责委托给在 Kubernetes 之外运行的组件架构,比如通过虚拟机或裸机上运行自我管理的数据库。这种方式导致网络和安全的复杂性增加,以及监控等功能的重复。这种转移存储能力的方式,将云原生数据库推向下一个成熟度模型。成熟度级别 2:托管数据服务仅在 Kubernetes 等容器化环境中部署数据库,本身并不足以提供云原生数据库所需要的特性,包括可扩展性、弹性、可视化和自动化等。要达到托管服务或“数据库即服务”(DBaaS) 的级别,企业需要额外的操作逻辑,例如:维护操作,包括扩展/缩减、备份/恢复、软件更新和故障排除,监控和可观察性,包括指标、日志记录和跟踪等。例如,cass-operator 是 Cassandra 的开源 Kubernetes 运算符,用于处理上述维护任务。K8ssandra 是另一个基于cass-operator 的开源项目,为在 Kubernetes 上部署和运行 Cassandra 提供完整的生态系统。这种方法使企业可以灵活地创建自己定制化的管理应用,该部署近似于第三方 DBaaS 的功能。只不过,企业需要的是“数据即服务”,而不仅仅是“数据库即服务”。所以,要想在数据平台中提供成熟的 SaaS 解决方案,企业不仅仅需要支持数据库查询语言(如 CQL 或 SQL)的端点,开发人员还渴望使用熟悉的语言和框架轻松访问的API。这就是另一个开源项目启动背后的最根本原因——一个名为 Stargate 的数据网关。 Stargate 提供了一个 RESTful API,支持开发人员习惯的熟悉的 HTTP 访问模式,同时也是一个新的 GraphQL API,对于Web 和移动应用程序以及无模式的面向文档的 API 特别有用。成熟度级别3 :数据的无服务器模式即使企业拥有自己的管理平台,或从第三方购买了托管服务,仍然需要考虑成本问题。这两种情况的典型问题是:如何根据工作负载的实际需求调整部署的资源量,以最大程度地减少浪费?即使在像 Cassandra 这样的高度可扩展的弹性系统中,也很难独立扩展计算和存储资源。如果企业能够仅扩展所需要的数据库部分怎么办?FaaS 或无服务器方式迎来用武之地。通过将 Cassandra 等云原生数据库分解为更小的功能,可以更有效地解耦和管理计算和存储利用率。不管是接口、路由器,还是读取和写入功能,都成为可扩展的独立功能。该模式的最大优势是,可以极大地提高资源的利用率,并支持多租户。无服务器的架构模式,改变了很多人的观点,不再考虑类似于“我的数据库可以在 Kubernetes 中运行吗?”这样的话题,而是转移到“我如何才能为我的特定数据库工作负载获得成本最低的解决方案?”三、小结随着云计算实践的不断成熟,我们将云原生架构理念和设计方法应用于我们堆栈的各个层面,是云原生数据库落地的最有效路径。笔者认为,基于容器化 (CaaS)、托管服务 (SaaS) 和无服务器 (FaaS) 等最佳实践的云原生数据库成熟度模型代表了云中数据有效利用的最佳方法论。而K8ssandra 和 Stargate 等开源项目的诞生,则为云原生数据库获得更高发展提供了绝佳机会,使得更多企业可以在数据架构成熟度方面取得长足猛进的发展。最后,我们期待更多企业加入到云原生数据库这个大的技术生态中来,对成熟度模型和相关问题发表更多观点。原文链接:https://containerjournal.com/topics/a-maturity-model-for-cloud-native-databases/
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第五章
    第5章:Isito技术介绍• 服务网络概念1. 结合K8s做容器化的微服务治理,致力于解决服务间通讯的基础设置层,负责在现代云原生应用程序的复杂服务拓扑来可靠地传递请求。2. 服务治理能力归一到服务网格优点:独立进程、语言无关、治理逻辑升级业务无感知、已有系统无需改造即可治理、可渐进的微服务化限制:代理性能和资源开销。3. 通过一组轻量级网络代理,与应用程序代码部署在一起来实现,但对应用程序透明。4. 服务网格的特点:应用程序间通讯的中间层、轻量级网络代理、应用程序无感知、解耦应用程序的重试/超时、监控、追踪和服务发现。5. 服务网格与微服务框架流量治理对比• Istio初识1. Istio:是云原生应用层技术,提供链接、保护、控制以及观测功能的开发平台。2. 对于云原生应用,采用K8s构建微服务部署和集群管理能力,采用Istio构建服务治理能力,将逐渐成为应用微服务转型的标准配置。3. Istio整体架构图4. Pilot基本架构:将各类平台的特异性服务发现机制抽象化并合成为符合Istio sidecar的标准格式,用来提供服务发现,流量管理。5. Citadel基本架构通过内置身份和凭证管理来实现服务间和最终用户的身份验证。支持的安全功能:流量加密、身份认证、授权鉴权交互拆分:是服务网格的安全组件与NodeAgent一起为工作负载提供证书的签发、轮换;对下处理来自NodeAgent的CSR请求;Citadel内部签发证书的两种主要形式:本身作为证书签发机构(CA)自己签发;作为RA代理证书签名请求(CSR)请求• Galley基本架构1. 负责配置管理相关的工作:Admission Webhook提供配置校验、MCP Sink提供配置的摄取• Istio应用场景1. 灰度发布2. 流量治理3. 访问可视化4. 业务场景蓝绿发布:提供了一种零宕机的部署方式,在部署应用过程中应用始终在线;金丝雀发布(灰度发布):在生产环境上引一部分实际流量对新版本进行测试,通过在线上运行的服务中,新加入少量的新版本服务,从中快速获得反馈。• Istio流量规划配置简介1. Istio流量管理资源配置初识2. Gateway:为HTTP/TCP流量配置了一个负载均衡,用于启用一个服务的入口流量。3. VirtualService:虚拟服务是Istio重要的资源对象之一。4. DestinationRule:常常与VS配合使用,DestinationRule允许用户针对目标服务配置一些负载均衡、异常检测、连接池以及证书。• Istio常用的流量治理策略1. 策略一:服务注册&发现2. 流量治理策略二:负载均衡支持的负载均衡算法:甲醛轮询、最少请求、环形Hash、随机、优先级负载均衡、Locality加权3. 策略三:路由(流量切分、灰度发布)4. 策略四:熔断机制5. 策略五:故障注入故障注入可以用来识别系统最薄弱的环境,支持HTTP请求响应延时注入和HTTP、gRPC错误码注入两种。6. 策略六:限流Istio支持两种限流方式:中心集中式限流、本地限流7. 策略七:失败重试Istio支持失败重试HTTPRetry,提高系统的Resilience重试次数*重试超时时间不能超过HTTP时间• 服务网格监控-Observability1. Istio以非侵入的方式提供了遥测类型:2. Metrics:应用流量粒度的监控统计:Distributed Traces分布式调用链和Access Logs访问日志3. 服务网格监控:Metics、Istio分布式调用链、Istio分布式调用链拓扑、(Metrics界面图例)(Istio分布式调用链图例)(Istio分布式调用链拓扑图例)
  • [技术干货] 华为云云原生入门级开发者认证宣传片
    华为云云原生入门级开发者认证(HCCDA - Cloud Native ),面向高校学生、个人开发者、企业开发及运维人员,培训与认证云原生开源技术及华为云云原生的理论知识和实操能力。从开源组件到华为云上服务的介绍,使您掌握云原生的核心理念和架构,具备基本开发实践能力。点击,了解更多详情>> 
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第四章
    第四章:华为云容器服务介绍 学习笔记• 华为云容器全栈服务介绍华为云容器全栈服务一览特点:易使用、易运维、高性能• 云容器引擎CCE1. 基于开源Kubernetes、Docker技术的企业级容器服务。2. 借助云容器引擎,用户可以在华为云上轻松部署、管理和扩展容器化应用程序。3. CCE与Kubernetes关系CCE集群:丰富异构、高性能、安全、统一调度的容器基础设施产品。4. CCE产品架构图A、 丰富的异构算力支持:全面支持华为云各类计算实例、支持存量实例纳管;B、 高性能云原生网络:Overlay模式下网络性能较开源Flannel方案提升30%、Underlay模式下网络性能较直连损耗在55之内;C、 全面安全的云原生能力:安全加固的容器运行时,有效屏蔽各类开源漏洞、容器镜像多种策略扫描、有效识别镜像中风险D、 统一的大规模云原生调度:单集群最大支持1万节点,自研Volcano调度效率较开源调度方案提升30%• CCE使用方式可通过CCE控制台(推荐)、Kubelctl命令行、Kubernetes API使用云容器引擎服务• CCE使用流程CCE集群:标准集群,提供商用级集群服务Turbo集群:面向云原生2.0、大规模、高性能的场景做了计算、网络和调度的全面加速的集群鲲鹏集群:计算架构基于鲲鹏架构• CCE关键特性总览• 集群管理:可一键创建集群,支持多种异构基础设置• 节点\节点池管理节点:节点是容器集群组成的基本元素,取决于业务、既可以是虚拟机、也可以是物理机。节点池管理:节点池中有多个节点,节点参数配置相同,可通过设置节点模板创建节点,通过节点池功能方便实现节点动态扩缩容。• 工作负载:Deployment、Statefulset、Daemonset、Job、CronJob等类型。云容器引擎CCE提供基于Kubernetes原生类型的容器部署和管理能力,支持容器工作负载部署、配置、监控、扩容、升级、卸载、服务发现以及负载均衡等生命周期管理。根据不同工作负载的特点,CCE可提供不同的能力以保证其正常运转。• 亲和/反亲和调度A、 工作负载和可用区的亲和性:基于可用区可设置多条调度策略,只需满足其中一条就会进行调度B、 工作负载和节点的亲和性:基于节点可以设置多条调度策略,只需满足其中一条就会进行调度C、 工作负载间的亲和性:基于工作负载可以设置多条调度策略,但多条策略中设置的标签必须同时出现在一个工作负载中• 容器网络• 持久化卷存储CCE除支持本地磁盘存储外,还支持将工作负载数据存储在华为云的云存储上,当前支持云存储包括四点:本地磁盘存储云硬盘存储文件存储卷对象存储卷• 弹性伸缩根据业务需求和策略自动调整资源使用策略工作负载伸缩:HPA策略,实现Pod水平自动伸缩功能CustomedHPA:华为云自研的弹性伸缩增强能力,能基于CPU利用率、内存利用率等指标对无状态负载进行弹性扩缩容。节点伸缩:通过节点自动伸缩组件autoscaler实现,根据pod调度状态及资源使用情况对集群的节点进行自动扩缩容。• CCE使用场景• 云容器实例CCI1. 云容器实例:只需要管理运行在Kubernetes上的容器化业务,无需管理集群和服务器即可在CCI上快速创建和运行容器负载。2. CCI和CCE的差别计费模式不同、使用场景不同、资源创建不同3. CCI的使用流程4. CCI关键特性:智能调度:CCI天然支持Volcano异构容器:充分利用华为云底层异构资源,满足业务场景安全容器:每个容器/pod都运行在单独的ECS中,安全性高秒级计费:根据实际使用资源量,按需秒级计费。5. CCI应用场景:AI计算、高性能容器批量处理(Job类任务)、长稳及扩容流量处理• SWR:容器镜像服务1. SWR基本概念—仓库:集中存放镜像的空间。仓库分为公共仓库和私有仓库2. SWR基本概念—容器镜像:镜像,是多个二进制只读层的集合。3. SWR基本概念—组织:组织用于隔离镜像仓库,便于仓库和镜像的管理4. SWR的使用流程:创建组织→镜像获取→应用部署→更新镜像5. SWR镜像管理—上传镜像:客户端上传镜像(客户端版本必须为1.1/1.2以上,镜像每个layer不能超过10G)/页面上传镜像(每次最多上传10个文件,单文件大小不超过2G)6. SWR镜像管理—编辑镜像属性:包括镜像的类型、分类和描述信息7. SWR镜像管理—共享私有镜像:只有账号所有者或具备该私有镜像管理权限的IAM用户才能进行分享8. SWR镜像管理—添加触发器:实现镜像版本更新时,自动更新使用该镜像的应用。可全部触发、指定版本号触发或正则触发9. SWR镜像管理—镜像老化规则:可从存活时间和版本数目两个规则进行设置10. SWR镜像管理—自动同步镜像11. SWR镜像管理—镜像安全扫描:一键对镜像进行安全扫描,确保所用镜像安全12. SWR镜像管理—设置镜像加速器:解决公有镜像因为网络原因导致下载速度慢或下载失败的问题
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第三章_细化刷新
    第三章:云原生基础设施之Kubernetes学习笔记容器集群管理概述• 容器编排指自动化容器的部署、管理、扩展和联网,其价值:    灵活的资源管理及调度;    自动化部署及服务发现;    高效的监控及运维;    弹性扩展及高可用。• 从Borg到Kubernetes:起源于google内部Borg项目,于2015年7月22日迭代到v1.0并正式对外公布。• 2017年10月17日Docker宣布支持Kubernetes。Kubernetes核心架构与理念• 下图展现K8S的架构和工作流程• 基础的K8s集群通常包含一个Master节点和多个Node节点,每个节点可以是物理机也可以是虚拟机。• Master节点:提供的集群控制,对集群做出全局性决策Kube-apiserver:对外暴露K8s API,接收外部请求,写入etcd,可水平扩展;etcd:分布式数据存储组件,存储集群配置数据,提供数据备份Kube-controller-manager:控制器,执行集群级功能,例如复制组件,跟踪Node节点,处理节点故障等Kube-scheduler:负责任务调度,根据各种条件(如可用的资源、节点的亲和性等)将容器调度到Node上运行• Node节点:运行容器应用,根据Master的要求管理容器的生命周期Kubelet:接受Master指令,负责管理容器(Pod)Kube-proxy:应用组件间的访问代理,解决节点上应用的访问问题    Add-ons:插件,用于扩展K8s的功能Container runtime:容器运行时,如Docker,最主要的功能是下载镜像和运行容器。• 开放接口CRI、CNI、CSICRI:容器运行时的接口,提供计算能力CNI:容器网络接口,提供网络能力CSI:容器存储接口,提供存储能力• K8s工作流程• K8s核心概念:Pod:最小工作单元,每一个Pod包含一个或多个相关容器,K8s将其视为一个整体进行调度。引入Pod目的:扩展和实现生命周期管理。相同POD内的容器:使用相同的namespace空间,即有相同的IP地址和port,使用同一个localhost,volume可挂载到所有pod内的容器实现共享。但pod中每个容器的cpu和memory等资源通过其自身cgroup来做限制。Label:为资源打上标签,方便分类管理Namespace:在集群中对资源进行组织上的隔离。四个默认namespace:default、kube-public(公共访问区)、kube-system(系统资源区,如kubelet、kubeproxy等)、kube-node-lease。每个资源仅属于一个namespace,不同namespace中的资源命名可以相同;通过ResouceQuota做资源限制;全局资源不属于某一个namespaceConroller:控制器,K8S通过控制器管理PodService:定义Pod逻辑集合及访问策略,为Pod提供了负载均衡,通过label来选择Pod。Volume:管理Kubernetes存储,声明Pod中容器可以访问的文件目录,需挂载。Kubernetes应用编排与管理• Kubectl:K8s的命令行工具;指令式:kubectl [command] [TYPE] [NAME] [flags]声明式:kubectl apply –f [yaml文件名] .yaml文件的必选配置字段:apiVersion,kind,metadata,spec• YAML的语法规则Label的形式为key-value形式大小写敏感使用缩进表示层级关系,缩进使用空格而非tab,相同层级的元素左侧对齐在同一个yaml配置文件内可以同时定义多个资源• Kubernetes管理的对象类型总览:• 状态工作负载:Deployment、ReplicaSet• Deployment控制器下的每个Pod除了名称和IP地址不同,其余完全相同。Deployment可以根据需要同故宫Pod模板创建Pod或者删除任意一个Pod。• ReplicaSet,确定Deployment中Pod的副本数量• 从大到小的管理逻辑为:Deployment>ReplicaSet>Pod>容器• 创建Deployment指令式:kubectl create deployment deployment_name --image=image_name –replicas=number声明式:vi filename.yaml [注意,此处 kind: Deployment]                       Kubectl apply –f filename.yaml• 查看deployment创建情况:kubectl get deployment• 滚动更新:使用新的实例逐步更新Pod实例,零停机进行工作负载的更新。更新Deployement:kubectl edit deploy nginxkubectl set image deploy nginx nginx=nginx:1.9.1 kubectl apply -f nginx.yaml    • 查看Deployment滚动更新情况/历史:kubectl rollout status deploy nginxkubectl rollout history deploy nginx• 回滚:kubectl rollout pause deploy nginxkubectl rollout resume deploy nginx• 有状态工作负载:StatefulSet:StatefulSet给每个Pod提供固定名称,Pod名称增加从0-N的固定后缀,Pod重新调度后Pod名称和HostName不变。StatefulSet通过Headless Service给每个Pod提供固定的访问域名。每个Pod有单独存储,StatefulSet通过创建固定标识的PVC保证Pod重新调度后还是能访问到相同的持久化数据。创建StatefulSet,yaml文件指定kind为StatefulSet,并指定volumeMounts• 守护进程工作负载:DaemonSetDaemonSet(守护进程集)在集群的每个节点上运行一个Pod,且保证只有一个Pod,适合系统层面的应用,例如日志收集、资源监控等Yaml文件创建DaemonSet时,kind选择DaemonSet,不需要规定replicas项。• Jobs:主要处理短暂的一次性任务,Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除),Jobs特点:保证指定数量Pod成功运行结束。支持并发执行。支持错误自动重试。支持暂停/恢复Jobs。• 创建JobsKind选择Job。Completions当前的任务需要执行的Pod数量。Parallelism表示最多有多少个并发执行的任务。RestartPolicy只能选择Never或OnFailure。BackoffLimit参数指定job失败后进行重试的次数。• CronJob:处理周期性或者重复性的任务,可使用Cron格式快速指定任务的调度时间,在yaml文件中kind选择CronJob,spec中的schedule: "* * * * *" 用来进行配置┌───────────── minute (0 - 59)│ ┌───────────── hour (0 - 23)│ │ ┌───────────── day of the month (1 - 31)│ │ │ ┌───────────── month (1 - 12)│ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;│ │ │ │ │ 7 is also Sunday on some systems)│ │ │ │ ││ │ │ │ │* * * * *    如果您想要每个月的第一天里面每半个小时执行一次,那就可以设置为" 0,30 * 1 * * " 如果您想每个星期天的3am执行一次任务,那就可以设置为 "0 3 * * 0"。Kubernetes服务发布• Pod特征:有独立IP、扩缩容时数量会变更、故障时ReplicaSet会创建新的Pod• Service定义了访问逻辑上一组Pod的策略,有如下如所示3种类型• ClusterIP:提供一个集群内部的虚拟IP地址以供Pod访问(默认模式)• NodePort:在Node上打开一个端口以供外部访问• LoadBalance:通过外部的负载均衡器来访问。如果创建一个LoadBalancer,系统则会创建一个NodePort,NodePort则会创建ClusterIP。• Ingress:七层负载均衡,基于七层的HTTP和HTTPS协议进行转发Ingress资源:一组基于域名或URL把请求转发到指定Service实例的访问规则,是Kubernetes的一种资源对象,通过接口服务实现增、删、改、查的操作。Ingress Controller:请求转发的执行器,用以实时监控资源对象Ingress、Service、End-point、Secret(主要是TLS证书和Key)、Node、ConfigMap的变化,解析Ingress定义的规则并负责将请求转发到相应的后端Service。Ingress Controller在不同厂商之间的实现方式不同,根据负载均衡器种类的不同,可以将其分成ELB型和Nginx型。Kubernetes存储管理• Volume的核心是一个目录,用于Pod中的容器共享文件,与挂在它的Pod的生命周期相同。Pod不存在时,临时卷类型(emptyDir、ConfigMap、Secret等)中的数据会被销毁,持久化存储的卷(hostPath、PVC等)中的数据会保存。Volume不能独立创建,只能在Pod中定义。• emptyDir:一种简单的空目录,主要用于临时存储,适用于缓存空间,日志采集等场景。• ConfigMap:用于存储应用所需配置信息(key-value 形式)的资源类型,在被Pod引用前需单独定义。在Volume中引用ConfigMap:就是通过文件的方式直接将ConfigMap的每条数据填入Volume,每条数据是一个文件,键就是文件名,键值就是文件内容。• Secret:与ConfigMap类似,都是key-value键值对形式,使用方式也相同;Secret会加密存储,所以适用于存储敏感信息。只有Pod请求的Secret在其容器中才是可见的,一个Pod不能访问另一个Pod的Secret。• hostPath:能将主机节点文件系统上的文件或目录挂载到Pod中。适用于读取主机上的数据。永远不要使用HostPath存储跨Pod的数据。• PersistentVolume:PV描述的是持久化存储卷,主要定义的是一个持久化存储在宿主机上的目录,比如一个NFS的挂载目录。• PersistentVolumeClaim:PVC描述的是Pod所希望使用的持久化存储的属性,比如,Volume存储的大小、可读写权限等等。• StorageClass:存储类,简称SC,为管理员提供了描述存储 “类” 的方法,通过相应的存储插件(CSI)实现,可根据用户提出的PVC动态提供不同性质的PV。
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第三章
    第三章:云原生基础设施之Kubernetes学习笔记容器集群管理的概述容器编排指自动化容器的部署、管理、扩展和联网,其价值:灵活的资源管理及调度;自动化部署及服务发现;高效的监控及运维;弹性扩展及高可用。从Borg到Kubernetes:起源于google内部Borg项目,于2015年7月22日迭代到v1.0并正式对外公布。2017年10月17日Docker宣布支持Kubernetes。Kubernetes架构基础的K8s集群通常包含一个Master节点和多个Node节点,每个节点可以是物理机也可以是虚拟机。Master节点:Kube-apiserver:对外暴露K8s APIetcd:用于后端存储,提供数据备份Kube-controller-manager:控制器,策略控制Kube-scheduler:负责任务调度Node节点:Kubelet:接受Master指令,负责管理容器(Pod)Kube-proxy:负责助理集群内外部的网路通信Add-ons:插件,用于扩展K8s的功能Container runtime:使用Docker运行容器开放接口CRI、CNI、CSICRI:容器运行时的接口,提供计算能力CNI:容器网络接口,提供网络能力CSI: 容器存储接口,提供存储能力K8s工作流程K8s核心概念:Pod:最小工作单元,每一个Pod包含一个或多个相关容器,K8s将其视为一个整体进行调度。(引入Pod目的:扩展和实现生命周期管理)Label:为资源打上标签Namespace:命名空间Conroller:控制器Service:Pod逻辑集合Volume:管理Kubernetes存储Kubernetes应用编排与管理• Kubectl:K8s的命令行工具,支持指令式和声明式;Kubernetes应用编排• 无状态工作负载:Deployment、ReplicaSet• 有状态工作负载:StatefulSet• 守护进程工作负载:DaemonSet• 批处理工作负载:Job、CronJob• Deploymengt:不具有唯一标识的多个Pod集合使用命令行创建Deployment使用yaml创建Deployment• StatefulSet创建:• DaemonSet(守护进程集)• Jobs:主要处理短暂的一次性任务• CronJob:处理周期性或者重复性的任务Kubernetes服务发布• Pod特征:有独立IP、扩缩容时数量会变更、故障时ReplicaSet会创建新的Pod• Service:ClusterIP、NodePort、LoadBalance使用方式:• NodePort模型:通过每个节点上的静态端口对外暴露以访问内部ClusterIP• LoadBalancer模型:负载均衡(LoadBalancer)可以通过弹性负载均衡从公网访问到工作负载,与NodePort加公网IP的方式相比提供了高可靠的保障。Kubernetes存储管理• Volume的核心是一个目录,其中可能存有数据,Pod中的容器可以访问该目录中的数据。• Kubernetes常用类型:emptyDir(一种简单的空目录,主要用于临时存储)hostPath(将主机(节点)某个目录挂载到容器中,适用于读取主机上的数据)ConfigMap(特殊类型,将Kubernetes特定的对象类型挂载到容器)Secret(特殊类型,将Kubernetes特定的对象类型挂载到容器)PVC(PersistentVolumeClaim,用来挂载PersistentVolume(持久化卷),提供可靠的存储来保存应用的持久化数据)PersistentVolume(持久化存储)StorageClass(存储类)
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第二章
    第二章:云原生基础设置之容器技术学习笔记容器发展背景企业IT业务云化路径传统业务云化:物理机部署云管平台统一管理 VS P2V/V2V虚拟化部署;业务云化创新:容器部署 VS 云原生容器:一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。容器和虚拟机的区别:虚拟化层的位置和操作系统的使用方式。虚拟机通过hypervisor层提供硬件虚拟化的能力,允许多个操作系统和应用共享硬件,虚拟机上安装完成的OS,有完整的OS内核;所有容器共享一个hostOS。Docker:最常使用的容器引擎,2013年由dotCloud公司开源,GO语言编写,当前有Docker CE和Docker EE两个版本  容器关键技术介绍Open Container Initiative(OCI),制定开发的容器规范:runtime spec定义可移植性image format spec定义互操作性容器runtime:runtime与操作系统kernel紧密协作,为容器提供运行环境。不同公司有不同的runtime工具,但都符合OCI规范,如runC、rkt、Kata、gVisor等Docker Engine(Client/Server结构)Server又叫Daemon进程,长期运行的程序,创建和管理Docker对象( 镜像,容器,网络,卷)Rest API:Client与Daemon进程的通信接口Client(Docker CLI)使用REST API通过脚本或直接的CLI命令与Docker daemon交互  Container容器是从镜像创建的运行实例,它可以被启动、开始、停止、 删除。每个容器都是相互隔离的、保证安全的平台Docker容器通过namespace技术实现进程隔离,通过cgroup技术实现容器进程可用资源的限制。Namespace:命名空间,用于资源隔离,不同类型的namespace隔离不同的资源Cgroups:限制一个进程组对系统资源的使用上限,包括CPU、内存、Block I/O等,Cgroups还可以设置进程优先级,对进程进行挂起和恢复等操作。容器镜像Image是容器的模板,容器是镜像的运行实例,runtime根据容器镜像创建容器。容器镜像打包了整个操作系统的文件和目录(rootfs),也包括应用本身。所有容器共享宿主机Kernel,并且不能修改宿主机KernelUnionFS:Docker镜像分层结构的实现,借助于UnionFS联合文件系统的能力,UnionFS主要的功能是将多个不同位置的目录联合挂载(union mount)到同一个目录下。容器copy–on-write特性,对容器的增删改查操作容器数据卷:卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统;卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。挂在数据卷的方法:启动容器的时使用-v命令进行数据卷的挂载。在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷。Registry是注册服务器,docker hub就是一个超大的公共registry;Repository是仓库,docker repository一般存放的是一类镜像,这一类镜像只不过是 tag 版本不同。如下图: 如何使用Dockerfile构建镜像Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建容器镜像。Docker提供了两种构建镜像的方法:docker commit命令与dockerfile构建文件。Build命令生成docker image;run命令运行docker containerDockerfile文件中的指令执行后,会创建一个个新的镜像层。Dockerfile文件中的注释以”#”开始。Dockerfile一般由4部分组成:基础镜像信息、维护者信息、镜像操作指令、容器启动指令build context:为镜像构建提供所需的文件或目录。Dockerfile在执行过程中,会启动临时容器,然后在临时容器中执行一条指令对容器内容进行修改,再将该容器保存为镜像生成一个新的镜像层,最后删除这个临时容器。若dockerfile中有多条指令,则会重复这个过程,直到执行结束。常见镜像管理命令docker push:上传镜像到registry。docker pull:从registry下载镜像。docker rmi:删除本地镜像。docker images:显示本地镜像。docker search:搜索docker hub上的镜像。docker tag:为镜像标记tag。docker history:显示镜像构建过程。docker commit:将容器保存为镜像。docker build:从dockerfile创建镜像。 容器生命周期管理systemctl status docker.service:查看Docker engine状态docker run -d -p 8080:80 httpd:运行一个容器 (“-d”参数可在后台运行容器;“-p”参数将宿主机8080端口映射到容器80端口)docker ps:查看容器运行状态docker stop:停止一个容器docker start:启动一个容器docker pause:暂停一个容器docker unpause:恢复启动一个容器docker rm:删除一个容器docker attach:进入一个容器docker exec:进入同一个容器docker inspect:获取容器/镜像元数据docker top:查看容器中运行的进程信息docker events:从服务器获取实时事件docker port:列出指定的容器的端口映射docker cp:与主机之间进行数据拷贝docker容器的状态有7种:created(已创建)restarting(重启中)running(运行中)removing(迁移中)paused(暂停)exited(停止)dead(死亡)
  • [技术干货] 华为云云容器引擎CCE使用入门【与云原生的故事】【转载】
    一、创建Kubernetes集群1、创建集群1.1、登录CCE控制台https://console.huaweicloud.com/cce/1.2、创建CCE集群登录CCE控制台后会看见一个引导页面,请在CCE集群下单击“创建”按钮。1.3、配置集群参数参数说明如下:参数参数说明集群名称新建集群的名称。集群名称长度范围为4-128个字符,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。集群版本集群版本。建议选择最新的版本,对应Kubernetes社区基线版本。集群规模当前集群可以管理的最大Node节点规模。若选择50节点,表示当前集群最多可管理50个Node节点。高可用默认选择“是”。网络模型默认即可。虚拟私有云新建集群所在的虚拟私有云。若没有可选虚拟私有云,单击“新建虚拟私有云”进行创建,完成创建后单击刷新按钮。容器网段按默认配置即可。服务网段按默认配置即可。1.4、提交在右侧界面中会显示集群的资源清单,选择计费模式后,单击“提交”按钮,等待集群创建成功。创建成功后在集群管理下会显示一个运行中的集群,且集群节点数量为0。2、创建节点集群创建成功后,您还需要在集群中创建运行工作负载的节点。2.1、参数配置登录CCE控制台,单击创建的集群,进入集群控制台,在左侧菜单栏选择节点管理,单击右上角“创建节点”,在弹出的页面中配置节点的参数。参数说明如下:参数参数说明计算配置可用区默认即可。节点类型选择“虚拟机节点”。节点规格根据业务需求选择相应的节点规格。操作系统请选择节点对应的操作系统。节点名称自定义节点名称。登录方式支持密码和密钥对两种方式“密码”方式:用户名默认为“root”,请输入登录节点的密码,并确认密码。“密钥对”方式:在选项框中选择用于登录本节点的密钥对,并单击勾选确认信息。密钥对用于远程登录节点时的身份认证。若没有密钥对,可单击选项框右侧的“创建密钥对”来新建。存储配置系统盘按您的业务需求选择,缺省值为50GB。数据盘按您的业务需求选择,缺省值为100GB。网络配置虚拟私有云使用默认,即创建集群时选择的子网。节点子网选择节点所在的子网。2.2、规格确认在页面最下方选择节点的数量和计费模式,单击“下一步: 规格确认”。2.3、提交查看节点规格无误后,阅读页面上的使用说明,勾选“我已阅读并知晓上述使用说明”,单击“提交”按钮,等待节点创建成功,创建成功后在节点管理下会显示一个运行中的节点。二、镜像创建无状态工作负载(Nginx)1、前提条件您需要创建一个至少包含一个节点的集群,且该节点已绑定弹性公网IP,集群是运行工作负载的逻辑分组,包含一组云服务器资源,每台云服务器即集群中的一个节点。2、Nginx应用概述Nginx是一款轻量级的Web服务器,您可通过CCE快速搭建nginx web服务器。博主这里以选择“开源镜像中心”的方式创建应用为例,来创建一个Nginx工作负载。3、操作步骤3.1、镜像创建登录CCE控制台,单击集群进入集群控制台,在左侧菜单栏选择“工作负载”,单击右上角“镜像创建”。3.2、参数配置填写以下参数,其它保持默认。(1)基本参数配置参数参数说明负载类型选择无状态负载。负载名称nginx。实例数量设置为1。容器配置在基本信息中单击“选择镜像”,在弹出的窗口中选择“镜像中心”,并搜索“nginx”,选择nginx镜像。(2)服务配置单击服务配置下的加号,创建服务(Service),用于从外部访问负载,配置参数如下:参数参数说明Service名称输入应用发布的可被外部访问的名称,设置为:nginx。访问类型选择“负载均衡 ( LoadBalancer )”。服务亲和保持默认。负载均衡器如果已有负载均衡(ELB)实例,可以选择已有ELB,如果没有可单击“创建负载均衡器”,在ELB控制台创建一个公网类型负载均衡器。端口配置对外协议:TCP。服务端口:设置为8080,该端口号将映射到容器端口。容器端口:容器中应用启动监听的端口,nginx镜像请设置为80,其他应用容器端口和应用本身的端口一致。3.3、创建工作负载单击右下角“创建工作负载”,等待工作负载创建成功。创建成功后在无状态负载下会显示一个运行中的工作负载。4、访问Nginx(1)获取Nginx的外部访问地址单击Nginx工作负载名称,进入工作负载详情页。在访问方式页签下可以看到nginx的IP地址,其中负载均衡IP就是外部访问地址,如图所示:(2)在浏览器中输入“外部访问地址”,即可成功访问应用,如下图所示:【与云原生的故事】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/345260链接:https://bbs.huaweicloud.com/blogs/351622
  • [认证交流] 华为云云原生入门级开发者认证学习笔记——第一章
    第一章:云原生架构总览学习笔记云计算技术发展云计算从虚拟化演进到云原生,Google联合Linux基金会成立了CNCF组织,kubernetes 成为 CNCF 管理的首个开源项目,也成为容器的事实标准。云原生定义CNCF关于云原生的定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。容器:将应用本身及其依赖打包,是的应用可以实现“一次封装,到处运行”。其主流技术比如Docker,通过内核虚拟化技术(namespace及cgroup)来提供容器的资源隔离与安全保证。服务网格(Service Mesh):通过非入侵式的方式接管应用的服务通信。提供细粒度的流量治理,包括灰度发布,故障注入,可观测性支持等能力。微服务:一种构建应用的架构方案,是松散耦合的分布式架构,可将应用拆分成多个核心功能,每个功能都被称为一项服务,可以单独构建和部署,各项服务在工作(和出现故障时不会相互影响)。不可变基础设施:服务器部署后不会被修改,如果需要以任何方式更新、修复或修改某些内容,则会根据具有相应更改的公共映像构建新服务器以替换旧服务器。声明式API:通过提交一个定义好的API对象来“声明”(常见方式是编写对应API对象的YAML文件交给Kubernetes),表示所期望的最终状态是什么样子,即针对期望状态给出声明,而不是过程(不是使用一个个命令来一步一步指导怎么达到期望状态来操作API——命令式)。 云原生应用云原生应用:一般采用容器的打包、分发、部署的形式,应用内(间)采用微服务的架构,充分利用云提供的组件服务,采用DevOps的组织架构和方法,通过CI/CD工具链,实现产品和服务的持续交付。         云原生应用与传统应用的区别云原生应用12要素理论 云原生架构云原生架构演进原则:弹性、分布式、高可用、自动化、自服务,理解每种原则的含义。单体架构的局限性:大规模团队,上线周期长,重复造轮子,粗粒度扩展;其问题不在于不可拆分,在于无法隔离和自治。应用规模越大,局限性越明显。微服务架构:全功能小团队,快速交付,促进重用,细粒度扩容;独立性和敏捷性更好,架构持续演进更容易,更适合云原生应用。Serverless架构:服务端逻辑运行在无状态的计算容器中,由事件触发,完全被第三方管理,适合短时运行处理、事件驱动处理、显著波峰波谷等业务场景 华为云云原生解决方案华为云长期投入云原生技术与产业,是全球云原生领域领导者。了解华为云云原生解决方案全景图,及华为云云原生解决方案(基础设施、混合云MCP、高性能计算volcano、边缘、DevOps、微服务管理平台、立体运维)适用场景和方案特点。 云原生未来发展趋势Kubernetes 编排统一化,编排对象不断扩展延伸服务治理Mesh化,加速传统应用转型应用服务Serverless化,更加聚焦业务的核⼼价值云原生服务部署形态多元化,多云将成为主流
总条数:765 到第
上滑加载中