第五章 云原生与容器技术

第一节 独角兽成功秘诀

成功秘诀

·Speed of innovation-天下武功,唯快不破

·Always-available services-随时、随地可用

·Web scale-从0到1,快速扩展

·Mobile-centric user experiences-移动为王又快又好!

第二节 云原生和现代应用12范式

现代应用的十二范式(The Twelve-Factor App)

1.基准代码:一份基准代码,多份部署。基准代码和应用之间总是保持一一对应的关系。所有部署的基准代码相同,但每份部署可以使用其不同的版本。

2.依赖:显式声明依赖关系。应用程序一定通过依赖清单,确切地声明所有依赖项。

3.配置:在环境中存储配置。将应用的配置存储于环境变量中。环境变量可以非常方便地在不同的部署间做修改,却不动一行代码。

4.后端服务:把后端服务当作附加资源。应用不会区别对待本地或第三方服务。对应用程序而言,两种都是附加资源。

5.构建,发布,运行:严格区分构建,发布,运行这三个步骤。

6.进程:以一个或多个无状态进程运行应用。应用的进程必须无状态且无共享。

7.端口绑定:通过端口绑定提供服务。应用完全自我加载而不依赖任何网络服务器就可以创建一个面向网络的服务。

8.并发:通过进程模型进行扩展。开发人员可以运用这个模型去设计应用架构,将不同工作分配给不同的进程类型。

9.易处理:快速启动和优雅终止可最大化健壮性。应用的进程是可支配的,意思是说它们可以瞬间开启或停止。

10.开发环境与线上环境等价:尽可能保持开发、预发布、线上环境相同。应用想要做到持续部署就必须缩小本地与线上差异。

11.日志:把日志当作事件流。应用本身考虑存储自己的输出流。不应该试图去写或者管理日志文件。

12.管理进程:后台管理任务当作一次性进程运行。一次性管理进程应该和正常的常驻进程使用同样的环境。

30848718

云原生

·Cloud Native Application

Cloud Native describes the patterns of high performing organizations delivering

software faster,consistently and reliably at scale.

Continuous delivery,DevOps,and Microservices label the why,how and what of

the cloud natives.

·云原生应用

云原生描述了高效组织的模式:可快速的,一致的和可靠的规模化交付软件。

·为什么:持续交付

·做什么:微服务

·如何做:DevOps

30889312

c9ff8f12-14f3-4345-8f5e-14e06e4bf717

持续集成

ecd5b2a4-2278-4dcc-83b0-3691fba2ec97


微服务

31758506-5ba8-46ab-b601-9aaec02d77f7

容器

ab6be2af-d70a-41c5-9c70-17c5783104ce

第三节 docker成才史

30951234

30979375

31002312

第四节 容器技术基础

容器技术基础

Docker包含两方面的技术

·容器技术

·有效分配与管理理物理理资源

·实现资源隔离

·镜像技术

·打破“代码即应用”的观念

·从系统环境开始,自下而上打包应用

31058328

31087640

Docker 组件架构-Docker Engine分析

·Docker Engine是一个Client-Server模型的应用

·Docker Engine 包括以下几个组件

·服务端(dockerd)

·RESTAPI

·命令行行行工工具(docker cli)

·用户可以使用用命令行工具来调用API从而实现与服务端的交互,也可以通过接调用API来完成与服务端的交互

5907c0ed-4f53-42e9-b0bf-1b0dae890e45

Docker 组件架构-组件清单

a642b7fc-8052-4875-91e4-522490f834bd

Docker 文件系统和Dockerfile

ccd7a133-a51c-4461-8d93-02ae436cfc34

FROM ubuntu:15.04

COPY./app

RUN make /app

CMD python /app/app.py

Dockerfile

Docker 网络模式

31240125

Docker 存储驱动对比

fd98f434-cfb1-4a2d-bc3b-557181cd98d4

31271609

Docker 常用命令说明

#查看docker版本

docker version

#显示docker系统的信息

docker info

#日志信息docker logs

#故障检查

service docker status

#启动关闭

docker sudo service docker start | stop

#查看当前运行的容器

docker ps

#查看全部容器

docker ps -a

#查看全部容器的id和信息

docker ps -a -q

#查看全部容器占用的空间

docker ps -as

#查看一个正在运行容器进程,支持ps命令参数

docker top

#查看容器的示例id

sudo docker inspect -f {{.ld}}' [id]

#检查镜像或者容器的参数,默认返回JSON格式

docker inspect

第五节 容器编排与调度

容器编排与调度

·基于容器的应用一般会采用微服务架构。在这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过API对外提供服务。为了保证应用的高可用,每个组件都可能会运行多个相同的容器。这些容器会组成集群,集群中的容器会根据业务需要被动态地创建、迁移和销毁。

·大家可以看到,这样一个基于微服务架构的应用系统实际上是一个动态的可伸缩的系统。这对我们的部署环境提出了新的要求,我们需要有一种高效的方法来管理容器集群。而这,就是容器编排引擎要干的工作。

·所谓编排(orchestration),通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机的组合成微服务应用,实现业务需求。

31436046

Docker 编排-Compose & Swarm

420d01b8-1b79-48a9-9b35-db05a650940d

Kubernetes

Borg-Google的大规模集群管理系统,是k8s理论基础

5aa12e36-20f0-490a-bdd9-ca8ef44e5f4d

a1e4da4e-0ee8-4daf-849e-24e072fdbd0a

Pod

Container(容器)

Label(标签)

Replication Controller(复制控制器)

Service(服务)

Node(节点)

Kubernetes Master(K8s 主节点)

CNCF 云原生计算基金会

  CNCF,全称Cloud Native Computing Foundation(云原生计算基金会),口号是坚持和整合开源技术来编排容器作为微服务架构的一部分,其作为致力于云原生应用推广和普及的一支重要力量,不论您是云原生应用的开发者、管理者还是研究人员都有必要了解。

  CNCF作为一个厂商中立的基金会,致力于GitHub上的快速成长的开源技术的推广,如Kubernetes、Prometheus、Envoy等,帮助开发人员更快更好的构建出色的产品。

eee93786-b217-4f82-a3f9-7e67b0da4635

Docker与DevOps

692a5ba9-f332-4179-9bc0-85f17e054680

将应用交付的标准统一到容器上,以标准交付件的形式,实现跨阶段的标准化发布流程。

以容器为核心的交付和运维,确保一致的交付件,贯穿开发、测试、运维场景。

posted @ 2020-01-19 15:40  前海渔文乐  阅读(280)  评论(0编辑  收藏  举报