部署
部署包含两个概念:流程和架构。
部署流程包括一些由开发人员和运维人员执行的步骤,以便将软件投入到生产环境
部署架构定义了该软件运行的环境结构
有四种主要的部署选项:
1.使用编程语言特定的发布包格式部署服务,例如Java WAR或JAR文件
2.将服务部署为虚拟机,把服务打包为虚拟机镜像,这个镜像封装了服务的技术栈,这样可以简单化部署
3.将服务部署为容器,这些容器比虚拟机更轻量级。我将展示如何使用流行的Docker编排框架Kubernets部署FTGO应用程序的Restaurant Service
4.使用Serverless部署模式部署服务,这比容器更加现代化。我们将研究如何使用AWS Lambda(一种流行的Serverless平台)部署为Restaurant Service
部署模式:编程语言特定的发布包格式
好处
1.快速部署
2.高效的资源利用,尤其是在同一台机器上或同一进程中运行多个实例时
弊端
1.缺乏对技术栈的封装
2.无法约束服务实例消耗的资源
3.在同一台计算机上运行多个服务实例时缺少隔离
4.很难自动判定放置服务实例的位置
部署模式:将服务部署为虚拟机
好处
1.虚拟机镜像封装了技术栈
2.隔离的服务实例
3.使用成熟的云计算基础设施
弊端
1.资源利用效率较低
2.部署速度相对缓慢
3.系统管理的额外开销
部署模式:将服务部署为容器
构建Docker镜像
好处
1.封装技术栈,可以用容器的API实现对服务的管理
2.服务实例是隔离的
3.服务实例的资源受到限制
弊端
使用Kubernetes部署程序
Kubernetes是一个Docker编排框架,是Docker之上的一个软件层,它将一组计算机硬件资源转变为用于运行服务的单一资源池
Docker编排器的功能
1.资源管理
2.调度
3.服务管理
Kubernetes架构
Kubernetes的计算机集群分为主节点和普通节点(工作节点)
工作节点会运行一个或多个Pod。Pod是Kubernetes的部署单元,由一组容器组成。