学习目标:
- 了解云原生
- 容器介绍
前置说明:
本人是按照阿里云官方提供的云原生公开课进行讲解的。云原生的教程分为前置篇、上篇、中篇、下篇等,分别针对、详细的讲解透彻。大体的学习路线仍是阿里云–云原生公开课。
学习内容:
对‘云原生’的理解:
什么是云原生?
云原生可以拆分为:云 和 原生 。原生指的是用 java 、 golang、 python 等原生语言写的项目。云指的是远端服务器。
云原生,是一条最佳捷径。使用户能:
- 低负担
- 快速高效的
- 可扩展、可复制的
最大的利用“云端”资源,发挥“云”的便捷。
云原生的愿景:软件从设计起就部署在云端。一切都在云端开发。一种全新的软件开发模式、软件发布模式、软件运维模式。即一切在云端
云原生的技术范畴
- 云应用定义与开发流程。这包括应用定义与镜像制作、配置 CI/CD、消息和 Streaming 以及数据库等。
- 云应用的编排与管理流程。这也是 Kubernetes 比较关注的一部分,包括了应用编排与调度、服务发现治理、远程调用、API 网关以及 Service Mesh。
- 监控与可观测性。这部分所强调的是云上应用如何进行监控、日志收集、Tracing 以及在云上如何实现破坏性测试,也就是混沌工程的概念。
- 云原生的底层技术,比如容器运行时、云原生存储技术、云原生网络技术等。
- 云原生工具集,在前面的这些核心技术点之上,还有很多配套的生态或者周边的工具需要使用,比如流程自动化与配置管理、容器镜像仓库、云原生安全技术以及云端密码管理等。
- Serverless。Serverless 是一种 PaaS 的特殊形态,它定义了一种更为“极端抽象”的应用编写方式,包含了 FaaS 和 BaaS 这样的概念。而无论是 FaaS 还是 BaaS,其最为典型的特点就是按实际使用计费(Pay as you go),因此 Serverless 计费也是重要的知识和概念。
容器的概念
在说出容器的概念前,我们先说说 操作系统是如何管理进程的?
- 进程的调度:在多个等待使用处理器的进程中,按照一定策略选择合适的进程,使之拥有处理器的使用权而进入运行
- 进程的同步:对系统中的多个进程在对共享资源的使用出现竞争时进行控制和协调。
- 进程的控制:进程的创建和撤消以及进程状态的转换。
- 进程的安全:解决因多个进程争夺资源的使用权而进入 “死锁”的僵局,使系统安全顺利地运行。
从操作系统的整体来看,是没有问题的。但是,在操作系统的局部来看,就会导致出以下问题:
- 进程是可以互相探测,互相通信的。彼此都知道对方的存在。
- 所有进程使用的是同一个文件系统。均能对文件进行读写执行。
- 进程使用的是同一个CPU资源,可能会存在资源抢占问题。
单个操作系统的所有进程去服务一个项目,这是没有问题的。但是,在操作系统内部,假如有两个项目呢?这两个项目所服务的进程是不隔离的,资源也是同步的。这就会导致问题!
为了解决资源隔离的问题,提出了虚拟机
的概念
我在服务器上,部署两套操作系统,每一套操作系统对应服务一个项目。这样进程都有一份,且无法相互探测、通信。资源也是隔离的,文件系统也是两份。项目就不会相互争夺进程了。
但是,也面临一下问题:
- 资源消耗大。【
麻雀虽小,但五脏肺腑俱全
】
那就不能把没用的资源去除?能,这就引出了容器的概念
容器就是一个视图隔离、资源可限制、独立文件系统的进程集合
- 视图隔离就是能够看到部分进程以及具有独立的主机名等。
- 控制资源使用率则是可以对于内存大小以及 CPU 使用个数等进行限制。
- 容器就是一个进程集合,它将系统的其他资源隔离开来,具有自己独立的资源视图。
镜像的概念
将这些容器运行时所需要的所有的文件集合称之为容器镜像
我们一般使用Dockerfile
,将这些文件集合列成一个清单。
学习总结:
- 介绍了云原生的概念。