最后更新2022/02/06
kubernetes engine,GCP提供了k8s管理docker容器,这是介于:
- IaaS Infrastructure as a Service,提供了服务器(cpu,内存),文件系统,网络的计算引擎
- PaaS Preset runtime as a Service,提供应用应用引擎
之间的东西,而且可能同时包含了两者的特点或者优势。
一个完整的计算引擎需要考虑大量的操作系统相关的东西,而对于一个简单应用来说,好多都是无需提供,用不到的东西。额外的冗余并不总是好的,浪费资源,需要额外的管理,启动时间慢,管理复杂。
一个普世的应用引擎并不简单,尽管看起来你只需要操心自己的业务逻辑,其它一切都由应用引擎负责。这里的关键是普世。让一个应用引擎去满足各种稀奇古怪的业务需求,就要求这个引擎(至少是模板)要即大又全,所有一切都包含在内,而这样操作的结果是应用引擎完全失去了其存在的基础:针对性、精简、高效。。。
如何能做到德才兼备呢?把其中各方面需求汇总一下,取其精华,是个什么东西?这就是容器container。
容器首先基于IaaS,是对OS和硬件的抽象。所谓抽象是只提供标准的,统一的服务接口,例如文件系统,网络协议栈,进程线程管理调度等等,而且这一切都是经过虚拟的,抽象的,硬件不再被用户可见。换句话说,这是OS的PaaS,是提供操作系统(把OS看作是一种应用)的服务引擎。
kubernetes是管理这些容器的工具,而容器可以由docker生成,或者也可以用google自己的google container builder(后者似乎没人用。。。)
具体如何实现呢?假设我有一个python应用app.py,需要使用python flask库,提供web访问,那么首先要有依赖文件,记录生成这个容器都要包含哪些最基本的东西:
cat <<EOF