Openshift的Deployment Configurations和Kubernetes 的Deployment的区别与联系

      我们在进行Openshift学习的过程中,经常会被一个问题混淆困扰,就是Openshift提供了一个叫Deployment Config的对象,那它与Kubernetes定义的对象 Deployment有什么区别,为什么有了Deployment了,我们还需要Deployment Config这个对象呢?

      Kubernetes 的Deployment 是一个重要的对象,是Kubernetes v1.2后引入的概念,我们可以简单理解为我们可以在Deployment 中定义应用部署,以及应用部署后正常应该处于的目标状态,如在Deployment 的配置yaml文件里定义要部署应用对应的容器镜像Image,在spec.replicas上定义对应的运行Pod数,等等。我们只需要在 Deployment 中描述想要的目标状态是什么,Deployment controller 就会帮我们把将 Pod 和ReplicaSet 的实际状态改变到我们想要的目标状态。

     而实际上,照上述所属,Deployment 是K8S在V1.2才引入的,而Deployment configurations其实早在Deployment 被引入K8S之前,已经在Openshift 中存在。所以一定程度上可以这么理解:由于实际部署管理需要,红帽的Openshift先实现了Deployment configurations,此后,K8S也意识到这方面的能力需要,所以也增加了Deployment 这个对象;由于红帽在K8S社区的影响力和领导力,K8S的Deployment 很大程度参照了Openshift的Deployment configurations,这也和K8S的许多版本规范定义类似,红帽Openshift的许多实践,最后慢慢成了Kubernetes 社区的标准,这也是一种典型的影响社区、反哺社区体现。

     从目前来看,Openshift的Deployment configurations和K8S的Deployment 功能类似,但也有部分区别,Deployment configurations在Automatic Rollbacks、Triggers、生命周期钩子(Lifecycle Hook)以及其它部分有一些特性功能,而Deployment 在Rollover、Proportional Scaling、 Pausing Mid-rollout等方面也有一些特性功能。

     从长远来看,我们希望未来只有一个部署对象,能在K8S 的Deployment里定义更丰富的能力,包括实现收纳更多的Openshift的Deployment configurations的能力定义;当然,当前Openshift平台对K8S的Deployment和Deployment configurations部署都能支持,而在使用策略上,除非我们需要Deployment configurations提供的特定功能或行为,否则建议使用Deployments。

参考文档:

https://docs.openshift.com/container-platform/3.9/dev_guide/deployments/kubernetes_deployments.html?extIdCarryOver=true&sc_cid=701f2000001OH7iAAG#kubernetes-deployments-vs-deployment-configurations

https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容