本博客地址:https://security.blog.csdn.net/article/details/130540430
一、云原生的概念
云原生的整体概念思路是三统一,即统一基础平台、统一软件架构、统一开发流程。 基于统一的基础平台、软件架构以及开发流程,数字化转型和云化转型能够把重心放在业务应用上。从而使得数字化转型的目标重新回归到业务应用本身,最终通过云原生来提升业务应用的迭代速度,促进业务创新。因此,云原生的价值和意义在于通过建立标准化来提升业务的进化速度。
1.1、云原生之统一基础平台
容器是云原生的标准软件发布格式,它是在同一个操作系统中实现了轻量级的虚拟化,这里的轻量级虚拟化本质上是同一个操作系统中的进程隔离,所以它是轻量级的,容器比虚拟机更省资源,资源利用率更高。与此同时,容器还实现了同一个软件可在不同的平台上运行。
容器镜像运行起来是一个一个的程序,如何实现多个程序合成一个大的分布式应用呢?答案很简单,程序之间互相调用就行。但此时就存在两个问题:这个集群中的某个机器出故障了该怎么去排查故障?这个集群中某一部分业务由于访问量增加怎么去扩充支撑能力?
对于这两个问题的解决,就涉及到了容器编排系统,最常见的容器编排系统是Kubernetes。容器编排系统可以在服务器或容器应用出现问题的情况下,自动感知,自动将容器应用在集群内的其他机器里重新运行起来。同时,通过启动相同的容器应用,自动提升应用的负载支撑能力。从而解决以上两个问题。
总之,基于容器和Kubernetes技术构成了云原生架构下统一的基础平台。这个平台支撑了标准的软件包发布格式和标准的软件包运行环境。
1.2、云原生之统一软件架构
在云原生架构体系中,软件架构都是采用微服务架构。微服务架构的概念是:微服务是可以独立部署的、小的、自治的业务组件,业务组件彼此之间通过消息进行交互。微服务的组件可以按需独立伸缩,具备容错和故障恢复能力。
微服务架构的优势:
● 支持快速上线。由于业务组件的自治性和独立性,新的功能和应用能够迅速地发布上线,而不用担心对系统其他功能带来大范围的影响。可以通过服务组件重用重组,快速地形成和发布新的应用。
● 支持独立扩容和恢复。有针对性地对应用中的某些服务进行扩容,解决性能的瓶颈。可以独立替换或恢复微服务中的某个组件。
快速上线意味着速度和效率,独立扩容和恢复意味着系统的安全、稳定和可扩展。采用微服务架构体系的应用在开发效率、稳定性、可扩展性上具备了很强的优势,使其成为云化应用的标准应用架构。
微服务架构中的核心功能组件包括网关、微服务治理、服务注册、配置管理、限流和熔断、负载均衡、自动扩容、自动故障隔离、自动业务恢复、监控和日志组件等。
1.3、云原生之统一开发流程
基于容器和Kubernetes的平台提供了云原生应用的标准发布和运行环境;基于容器的微服务架构定义了云原生应用的标准架构。通过这些技术,对软件应用在架构、支撑服务和支持组件、基准平台上都进行了标准化;同时解决了升级,扩容,稳定性,私有云、公有云、混合云统一基础架构等问题。
云原生强调自动化以能够提升开发效率和运维效率。在这个基础上,利用DevOps的自动化、协作、敏捷特性,在软件的开发、测试、部署、运维流程上,提升了开发效率、降低了沟通成本、提升了部署和上线速度。DevOps是云原生应用在开发、测试和发布流程中的必要手段,并且成了云原生应用的标准开发流程。
二、云原生与混合云
2.1、常见的混合云应用架构
混合云是目前非常流行的一种云计算形态。常见的混合云的应用架构如下:
● 将内部核心业务放在私有云环境中,将面向公众的、互联网性质的业务部署在公有云上。
● 把基础的、需长时间稳定运行的业务放在私有云环境中;把创新的、短暂的、需动态扩展的业务放在公有云上。
● 针对数据类业务应用,将数据存储在本地环境即私有云上,而将数据访问类和面向公众的业务放在公有云上。
2.2、云原生与混合云的关系
对于以上混合云的应用架构,就涉及到了公有云和私有云的相互打通或迁移的问题,由于云原生统一了软件平台、软件架构以及软件开发流程,基本上针对应用的各个层面都做了标准化。这个标准化是超越了私有云和公有云的界限的。
基于云原生技术开发的应用,能够在业界各个平台畅行无阻。部署在私有云、公有云里的都是一样的技术体系和架构,也就意味着将私有云中开发的应用部署在公有云上是很容易的,同时也很容易把私有云中的应用扩展运行到公有云上。另外,从公有云迁移到私有云也是很方便的,对业务应用基本不用做什么改动。
三、搭建一个简单的云原生平台
如下如:
搭建上面的云原生平台在硬件资源上至少需要三台服务器,搭建步骤如下:
1、使用Kubernetes安全工具,按照Kubernetes集群推荐使用Kubeadm
2、在部署好的Kubernetes集群中安装Helm,通过Helm来安装后续的其他服务
3、通过Helm来安装部署分布式存储GlusterFS、Redis服务、MySQL服务、GitLab或Jenkins
4、创建代码库,配置Jenkins流水线
5、通过流水线将代码打包构建成容器镜像,并存放到镜像仓库中
6、通过容器镜像来启动微服务。微服务使用ETCD作为注册中心,同样也使用ETCD作为配置中心
7、Kubernetes集群中运行的微服务对外通过集群Ingress提供服务,外部请求通过Ingress访问运行在集群中的微服务