云原生概念科普
# 云原生概念科普
# 什么是云原生:
首先需要明确云原生不是新旧技术的更迭,而是一步步的技术整合,是技术的长久积累下产生的必然结果。云原生技术有利于各组织在公有云、私有云、混合云等新型动态环境中,构建和运行可弹性扩展的应用。代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。这些技术能够构建容错性好,易于管理和便于观察的松耦合系统。结合可靠的自动化运维技术,云原生技术使开发工程师能够轻松地对系统作出频繁和可预测的重大变更。
# 进一步了解了云原生概念和场景
# 首先是云原生发展史:
为了避免理解困难,应该从云原生发展的历史去学习云原生。从物理机到虚拟机再到云厂商,容器,Kubernetes。
虚拟机技术:
在一台主机操作系统上运行多台虚拟机。实现硬件虚拟化,每个应用有独立的资源,运行环境。可以根据需求分配资源,提高资源利用率。在系统内运行一个分隔开的环境,不影响主机。我的理解就是通过虚拟机监控程序,在物理机上模拟出计算机系统,包括 CPU、内存、网络接口、和存储器整套硬件,允许多个虚拟环境共享一个系统,分配计算资源。主机:配备了虚拟机监控程序的物理机,虚拟机:使用虚拟资源模拟出的计算机。
云厂商:
提供按需获取的云端服务器,使用代码去申请及配置机器---IaaS,从而实现按量计费,高可用,弹性扩展,然后是云主机的各种选择--多地域,多可用区,多规格-标准,内存型,Gpu 型等等,提供可选的操作系统,硬盘,网络,以及预配置的一些中间件服务,云 Redis,MQ,ElasticSearch 等等。
重要的容器技术(Docker):
封装应用和依赖的轻量级应用代码包。提供操作系统虚拟化的能力,提供一致的运行环境和独立的环境依赖,启动快,体积小->不可变性:创造后它的状态就不可以改变,通过新的覆盖来改变,单元:容器(Container)。容器对于应用开发与 IT 运维团队责任分离至关重要,工作负载的可移植性:一次构建,多次交付,实现了应用隔离:提供逻辑上的与其他应用隔离的操作系统接口。
Kubernetes:
大规模运行分布式应用的容器编排平台。1.灵活管理资源,自动将容器调度到空闲的结点上,2.维护结点和容器的状态,自动修复、重启,3.标准的声明式 API,对资源的统一抽象,4.支持服务发现,负载均衡、弹性伸缩。单元:微服务。将容器分成多个独立的组件,各组件可自由选择最合适的 OS 和编程语言,将每个组件封装入容器当中,可多副本部署。用 K8s 去调度容器。
云原生生态爆发式增长的起因:
一是容器提供的轻量化应用,可移植性,并将应用与 IT 责任分离。二微服务提供的模块性,松散耦合,通过 API 进行通信,三是 Kubernetes 提供了标准的抽象,API,弹性伸缩,负载均衡的能力,云原生架构下对技术能力的通用需求。
了解
CNCF
:云原生计算基金会,致力于维护和培养一个厂商中立的开源生态系统,来推广云原生技术,我们通过将最前沿的模式民主化,让这些创新为大众所用。
# DaoCloud DPS
实现了运维自动化,CI/CD,devOps。
# 边缘计算
从私有云到中心云到边缘云的变化其实就是云计算向边缘计算的延伸。
从传统的数据中心 DC,到 2006 年出现的云计算概念衍生出 IaaS,PaaS,SaaS,再到 2013 年出现的云原生 CloudNative。再到现在较为火热的各大云厂商推出的混合云以按需扩展资源为特点,再到边缘云–强调云边协同。5G 手机到 5G 基站之间的通信速度已经非常快,但是 5G 基站到真正的服务器之间的网络通信成为瓶颈,对于时延敏感的应用场景会影响一定的用户体验。数据中心进一步下沉到二三线城市,将应用部署从中心云转移到边缘云服务器,就此提出了分布式云概念。
边缘计算的一些核心功能:
- 支持 K8s 原生,完全兼容 K8s,无缝对接云原生生态
- 边缘自治,针对云边通信网络场景提供了可靠的边缘自治能力,并且具有分布式集群的健康检查能力,更准确地判断业务应用迁移时机
- 服务访问控制:按地域部署和管理应用服务,使得服务间的请求内部即可完成,避免服务跨地域访问
- 云边隧道:通过成熟的隧道技术,支持管理员从云端管理和运维位于边缘内网侧的业务。
边缘计算解决的问题:
云边网络:
1.比如在 IoT 场景下中心云与边缘云网络不可靠,
2.边缘云设备无暴露公网,
3.海量终端接入、管理。异构适配:边缘数据中心架构异构,边缘终端硬件异构,应用服务异构。
云边协同:边缘资源多地域分布,面临新挑战,业务应用调度,容灾,边缘资源管理,区域流量治理。
生态融合:云技术向边缘延伸,应用到边缘计算场景:容器调度,动态扩缩容,AI,大数据,服务治理
# 服务网格
应用被写成了一堆微服务,这些服务之间要形成网格,他们需要无感知地实现服务发现,服务注册,服务通信
代表应用:
Istio
- Istio 往往是通过在所属的 Kubernetes 中,通过资源创建和配置实现的。
- Istio 需要创建数十个 Kubernetes 自定义的资源定义,然后映射到其功能的各个方面,从而实现 Istio 的运行部署。