应用部署方式演变

三种部署方式

传统部署:直接将应用部署在物理机上。

  • 优点:简单。
  • 缺点:不能为应用程序定义资源边界,很难合理分配资源,程序之间容器产生影响,不好管理。

    虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的环境

  • 优点:程序环境不会相互影响,提供了一定程度的安全性。

  • 缺点:增加了操作系统,造成资源浪费。

    容器化部署:与虚拟化类似,但是共享了操作系统。

  • 优点:

    • 可以保证每个容器拥有自己的文件系统,cpu,内存,进程空间。
    • 运行应用程序所需要的资源都被容器包装,并与底层基础框架解耦。
    • 容器化应用程序可以跨云服务商,操作系统进行部署。

kubernetes介绍 - 图1
容器化部署方式带来很多遍历,但是也会出现一些问题,比如说。

  • 一个容器发生宕机,怎么让别的容器立刻启动去替补停机的机器。
  • 当访问量变大时如何进行横向扩容。

这些问题统称为容器编排问题,为了解决容器编排问题,产生了一些容器编排软件。

  • Swarm:Docker自己的容器编排工具。
  • Mesos:Apache的一个资源统一管理工具。
  • Kubenetes:谷歌开源的容器编排工具。

    k8s简介

    kubernetes的本质是一组服务器集群,它可以在集群的每一个节点上运行自己的程序,来对容器进行管理,实现管理自动化,主要提供以下功能。

  • 自我修复:一旦某一个容器崩溃,能够在1秒钟内迅速重启新容器。

  • 弹性伸缩:可以对正在运行的容器数量进行调整。
  • 服务发现:可以通过自动发现的形式找到它所依赖的服务。
  • 负载均衡:一个容器启动多个容器,能够自动实现请求负载均衡。
  • 版本回退:发现版本有问题,可以立即回退到原来的版本。
  • 存储编排:可以根据容器自身的需求自动创建存储卷。