• 什么是PaaS平台


    PaaS平台概述

    PaaS平台通常是基于IaaS平台构建的,PaaS平台和IaaS平台最大的差别是需求即服务。所有的管理都是以服务为粒度的,在IaaS以资源管理为中心的平台上提供了更高层次的抽象。

    PaaS的本质

    (1)运维自动化,故障的自动恢复,在不需要人为干涉的情况下能够自愈;

    (2)面向服务化的管理,围绕服务的发布、升级、调用、监控、日志及服务域名等;

    (3)软件开发流程化,代码自动编译打包及更新,持续发布,持续集成和更新。

    PaaS平台分层

    首先是资源调度层,这一层是直接在构建在物理资源之上的,完成资源调度、集群管理、存储管理等基础服务;

    中间层是一些服务的依赖中间件服务和监控日志服务

    CI/CD自动构建

    最上面的层是开放给平台用户的能力,提供应用服务管理、权限管理及日志检索等功能。

    在这里插入图片描述

    PaaS平台化如何实现?

    平台的实现有多种方式,并不一定需要Kubernetes或者Docker,只不过当前大多数PaaS平台都是基于“Kubernetes+容器”的方案的,这里还需要区分清楚。

    个人拙见: 目前k8s已经成为PaaS平台建设最重要的组成,甚至是标准,自己实现维护那一套,大概率不如k8s稳定,且k8s提供了很强的扩展性。

    服务和应用管理

    PaaS平台和IaaS平台最大的区别是面向服务管理的,所有的资源也都是以服务为最小管理单元。用户不用担心基础资源配置(部署在哪台机器、IP地址多少、配置的内存多大等),所有的操作都是针对服务的。服务管理包括服务列表查询、服务创建和删除、服务的副本数修改、服务自动伸缩、服务的滚动升级和灰度发布等。

    应用是将多个服务组合到一起维护的。一个应用包含了多个服务,譬如,一个网站是一个应用,这个应用是由MySQL、Spring Boot等多个服务组成。可以针对一个应用启动和关闭,以及编排。应用和服务逻辑关系图如图

    在这里插入图片描述

    监控告警

    日志管理

    针对一个Kubernetes集群的日志,则需要借助一套针对日志的采集、检索、分析及预警系统。
    ●Fluentd主要负责日志采集,通常和应用服务安装在一起,读取日志文件或者从网络流中接收文本日志并发送到Kafka中。除了Fluentd以外,还有很多采集插件,如Fluent Bit、Filebeat、Flume Agent等。

    ●Kafka主要负责汇聚数据,并提供数据整流,避免突发日志流量直接冲击后端系统。在实际生产环境中,Kafka是集群部署,通过将数据分区到不同节点实现数据的负载均衡。

    ●Logstash负责日志整理,可以过滤、修改日志内容,比如过滤日志中的敏感信息。

    ●Elasticsearch负责日志的存储和检索。自带分布式存储,可以将采集的日志分片存储。为保证数据的高可用性,Elasticsearch引入多副本概念,并通过Lucene实现日志的索引和查询。

    ●Kibana是一个日志查询组件,负责日志展现。

    日志具备的功能

    (1)多租户隔离,每个用户只能读取自己的业务容器;

    (2)实时日志查看,读取当前最新实时日志,而非从Elasticsearch中检索;

    (3)基于日志的告警,当多次出现某个写关键字后触发告警;

    (4)基于服务的日志查询,不仅可以查询单个容器的日志,还可以针对这一组容器进行检索。

    镜像管理

    Harbor

    CICD

    CICD全称为Continuous Integration Continuous Delivery(持续集成持续交付),CICD整体流程图如图,如同一个流水线一样持续运行,循环反馈,不断迭代更新。

    持续集成

    所谓持续集成是不断进行代码提交、构建和测试。传统的软件开发是每个人或者团队单独负责一个模块,在产品即将发布时,才将各个模块组合到一起。但这种开发模式只适用于产品迭代周期比较长的情况,无法满足当前互联网快速产品迭代的需求。

    持续集成允许开发工程师将代码不断提交,然后自动触发构建流程,确保代码可以顺利构建(编译),并执行自动单元测试确保功能完善。

    持续集成需要做好版本控制和自动化构建,每个用户在功能分支(feature分支)上面开发后,可以随时合并到主干分支中。构建并发布到测试环境,期间以自动化单元测试、功能测试、性能测试工具进行测试,发现问题后及时回滚版本,并进行反馈。构建的过程不单单是代码的编译,还包括依赖、配置及环境。

    持续部署

    持续交付也叫做持续部署,是指在构建和测试完成通过后,将部署包发布到生产环境中运行。部署的方式可以通过Ansible、Puppet等部署工具,也可以通过容器的方式发布。让最新的功能能够尽快地更新到生产环境中,并通过运营反馈需求,促进产品进一步迭代。持续部署需要保障整个过程的平滑和安全,通常借助蓝绿发布或者金丝雀发布确保过程的平滑和安全。
    在这里插入图片描述

    CICD本身和PaaS平台的关系

    CICD本身和PaaS平台没有必然关系,它是在容器兴起之前就已经存在,只不过在缺乏容器的时代,CICD很难落地。通过容器可以很好地完成应用从测试环境到生产环境的快速迁移,所以,CICD也成为容器平台的标配。

    Jenkins目前已经成为CICD中最流行的构建工具,通过CICD系统构建任务,并将镜像推送到Harbor镜像仓库,最后触发Kubernetes滚动升级。
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    java基于Springboot+vue的校园二手闲置商品交易平台系统 element
    C++ gstreamer函数使用总结
    工业制造行业如何做好主数据管理?
    《股票大作手回忆录》读书
    requests 在 Python 3.2 中使用 OAuth 导入失败的问题与解决方案
    外包干了2个月,技术退步明显.......
    xxl-job项目集成实战,全自动项目集成,可以直接使用到项目中
    爱奇艺视频怎么转换成mp4格式,爱奇艺qsv转换mp4最简单方法
    广告大师——奥格威的广告准则
    C语言实现顺序表(图解增删查改+代码)
  • 原文地址:https://blog.csdn.net/MyySophia/article/details/127919099