[读书笔记] 管理宠物到管理牛群,DevOps 场景下效率难题如何解决
https://www.infoq.cn/article/jTJGTtu2AgX74GkGif8Y
整个 CI/CD 过程就是一个不断将可变变为不可变的过程。
每一步都是要锁定一部分内容,做到不可变。有了不可变,才能随时得到不同资源组合的稳定版本,然后才能重复部署,或者安全及准确的回退到之前的版本。
组织团队之间的通讯和交流的模式,最终会映射成软件系统或者产品的形态。
独立部署是微服务的精髓,服务部署时还要依赖其他团队,本质上就不是微服务了 (不过是一个很昂贵的解决方案)
两个 container 可以共享一个存储,叫做 volume;通过 Init container 把数据准备到这个共享存储空间的路径上,Main container 就可以在这个存储上加载数据。这样一来,Main container 就会与数据加载以及初始化的方式彻底解耦。
如果在 pod 中包含多个 container,当我们需要某个 container 先完成启动就绪,就绪完成后才继续下一个 container 的创建,那么就可以在前一个 container 中加一个 postStart。这个 postStart 过程只是检查自己是否就绪,如果一直没有就绪,退出后返回不正常时整个 Pod 会失败,无法创建成功。如果创建成功,意味着已经就绪,就可以继续启动下一个 container。
当一个 Node 上有很多 Pod 在运行,可能会出现 Node 硬件不够用的情况,那么哪些 Pod 会被杀死?哪些 Pod 会被保留下来?这个叫 QoS。
Affinity 亲和性和 Taint 这两个概念有很多人都搞不清楚。所谓亲和性是从 Pod 的视角去看,什么样的 Node 适合我来运行。Taint 是从 Node 的角度来看自己可以运行什么样的 Pod,兼容了 node 上的 taint 的 pod 才可以被调度到 node 上。
引入了容器之后,带来的改变绝对不仅仅是构建、部署和维护的方式这么简单。其实每一次软件设计的变更都涉及到新增的构建块,带来新的设计思考。
Comments
Post a Comment