Kubernetes的课堂笔记(一)
1.分布式系统
解决方法(技术)如下:
服务治理(依赖关系、调用链)、
架构管理(版本管理、生命周期管理、编排、聚合、调度)、
DevOps、
自动化运维、
资源调度管理、
整体架构监控、
流量治理(负载均衡、路由、熔断、…)
2.ESB分布式应用中间件
ESB是啥?
ESB(企业服务总线)是一种模式,可让集中式软件组件执行后端系统集成(以及数据模型转换、深度连接、路由和请求),并将这些集成和转换作为服务接口提供,以供新应用程序复用。 通常使用专用的集成运行时和工具集来实施 ESB 模式,以确保最佳的生产力。
ESB分布式应用中间件的限制
(1)ESB满足分布式系统需求时的局限性
●生命周期:通常只支持的一个语言运行时,( 比如Java),这就限定了软件该如何打包、哪些库可用、它们打补丁的频率等
●网络:集中于一种主要的编程语言及其相关的技术,而且,网络问题和语义也深深地嵌入到了业务服务中
例如,对于Java语言,它就是指JMS、JDBC和JTA等
●状态:与状态交互的库和接口没有完全抽象出来,也没有与服务运行时完全解耦
●绑定:必须根据消息交换模式构造代码和设计流程
连接器必须与应用程序共存的事实意味着,依赖项必须与业务逻辑一起更新和打补丁
(2)云计算时代的解决方案:基于容器化、容器编排、DevOps、微服务及典型的治理系统服务网格等技术的云原生解决方案
3.云原生的定义
( 2017年) Pivotal认为, 云原生具有如下四大特性:
●DevOps
●持续交付(CD)
●微服务
●容器化
2018年新增两个特性是:服务网格和声明式API
(2018年)CNCF:云原生技术有利于各组织在公有云,私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术:容器,服务网格,微服务,不可变基础设施和声明式API
避免云计算厂商的锁定
4.Kubernetes的关键特性
●容器编排系统
●声明式API
●“以应用为中心”的现代应用基础设施
纳管各类基础支撑类服务,并经由声明式API向上层应用暴露这些基础设施
●Platform for Platform类型的系统
根本目标在于方便基础设施工程师构建其它的平台系统
例如Service Mesh或Serverless等
5.微服务(MicroServices)
(1)微服务是一种流行的架构风格,用于构建弹性化、高度可扩展、可独立部署且能够快速迭代的应用程序
●微服务架构由一系列小型自治服务组成
●每个服务都是自包含的,应该在有界上下文中实现单个业务功能
6.微服务治理
(1)动态化是云原生应用的天然属性,微服务架构是支撑该目标的关键所在
(2)服务治理工具,又是支撑微服务运行的根本所在
●Dubbo
●Spring Cloud Alibaba
●ServiceMesh
7.服务网格(ServiceMesh)
服务网格的定义
●专用于处理服务通讯的基础设施层
●负责可靠地完成请求传送,这些请求由复杂拓扑结构下的云原生应用组成服务生成
●是一组同应用服务协同部署的轻量级网络代理,并且对应用服务透明
8.Sidecar模式
Service Mesh以Sidecar形式,将服务治理从业务逻辑中剥离,并拆解为独立进程,实现异构系统的统治理和网络安全。
9. 不可变基础设施( immutable infrastructure)与一次性组件
不可变基础设施是早在2013年由Chad Fowler在其一篇博客中提出的一个很有的预见性的构想
●其核心思想在于,任何基础设施的实例一-旦创建之后即变为只读状态,若需要修改和升级,只能通过替换为新的实例来实现
●传统的服务器(裸金属或虚拟机)支持配置的多次变更,因而通常会导致如下问题
◆灾难发生时,重新构建较为困难(因手动的变更操作所致)
◆存在导致状态不一 致的风险
(2)实现
●容器和容器镜像
●云端虚拟化组件
10.云原生架构模型
11.云原生系统的功能特征
(1)动态化是云原生应用的天然属性,微服务架构是支撑该目标的关键所在
●各微服务提供的API应该集成为复合的API,通过“API网关”对外提供统一的访问接口
◆API网关对于安全、监控、计费等也是必不可少的组件
●微服务治理
◆Istio、 OpenPaaS、Linkerd等
●Serverless
◆Knative等
●各微服务以窗口镜像进行交付
●云原生编排平台
◆调度、运行、健康状态检测、监控
◆弹性扩缩容
●灵活部署:重建、灰度、蓝绿、金丝雀、A/B测试、影子( Shadow)部署
12.云原生的技术范畴
(1)云应用定义与开发流程
●应用定义与镜像制作
●CI/CD
●消息和Streaming
●数据库
(2)云应用编排与管理
●应用编排与调度
●服务发现与治理
●远程调用
●API网关
●Service Mesh
(3)监控与可观测性
●监控
●日志
●链接追踪
●混沌工程
(4)云原生底层技术
●容器运行时(CRI)
●云原生存储技术(CNI)
●云原生网络技术(CSI)
(5)云原生工具集
●流程自动化与配置管理
●容器镜像技术
●云原生安全技术
●云端敏感信息管理
(6)Serverless
●FaaS
●BaaS
●Serverless计费
13.如何设计和使用云原生架构
(1)使用微服务架构解决单体架构导致的复杂性问题;
(2)通过服务治理框架和立体化监控方案解决服务间协同及调用异常等相关的问题;
(3)借助于容器技术解决应用构建、分发和部署等相关的问题;
(4)使用Kubernetes解决服务编排、调度和弹性化等需求;
(5)使用Service Mesh解决微服务框架的侵入式、流量治理等问题;
(6)将Service Mesh运行于Kubernetes之上,以提供更好的底层支持;
(7)借助于laaS云与容器技术,解决不可变基础设施相关的问题;
14.云原生平台DIY
15.Maturity levels
(1)CNCF将项目按成熟度分为sandbox(起步阶段)、incubating(早期大众采用阶段)和graduated(晚期大众采用阶段)三个级别
16.云原生的未来架构趋势
1.通过把所有传统中间件(例如ESB )的功能移到其他运行时组件,未来的云原生模型实现了如下图中的整个功能环,不久之后,人们在服务中唯一要做的就是编写业务逻辑
2.我们可以把不同领域进行创新的各种云原生项目进行叠加
●Kubernetes:基于现代应用容器技术在多语言应用程序的生命周期管理
●服务网格:在Kubernetes之上实现了高级网络功能
●Knative:专注于Serverless型的工作负载,同时满足了服务编排和事件驱动的绑定需求
●Dapr:建立在Kubernetes、Knative和服 务风格的思想之上,深入应用程序运行时以解决有状态工作负载、绑定和集成的需求,从而充当现代化分布式中间件;
感谢大家,点赞,收藏,关注,评论!