不可变基础设施:服务器、虚拟机或者是容器
k8s中不可变基础设施就是pod
pod是k8s中的最原子化单位
可变基础设施的风险
- 持续的变更修改给服务运行态引入过多的中间态,增加了不可预知的风险;
- 故障发生时,难以及时快速构建出新的服务副本;
- 不易标准化,交付运维过程异常痛苦,虽然可以通过 Ansible、Puppet 等部署工具进行交付,但是也很难保证对底层各种异构的环境支持得很好,还有随时会出现的版本漂移问题
init 容器
通常用来做一些初始化工作,比如环境检测、OSS 文件下载、工具安装,等等。
应用容器专注于业务处理,其他一些无关的初始化任务就可以放到 init 容器中。这种解耦有利于各自升级,也降低相互依赖