Kubernetes中的复制控制器VS部署

byt*_*yer 57 google-compute-engine kubernetes google-kubernetes-engine

我想知道复制控制器和Kubernetes(1.2)中的部署有什么区别.通过入门文档(http://kubernetes.io/docs/hellonode/)我创建了一个部署 - 但它没有显示在Web UI上.

当我从Web UI创建应用程序时 - 它们被创建为复制控制器.从功能上看,它们看起来非常相似(它们都管理pod并提供服务).

那么 - 有什么区别我应该何时使用?

Pix*_*ant 50

部署是比复制控制器更新,更高级别的概念.它们管理副本集的部署(也是一个较新的概念,但几乎与复制控制器等效),并允许轻松更新副本集以及回滚到先前部署的能力.

以前必须完成此操作,kubectl rolling-update而不是声明性的,并且不提供回滚功能.

Kubernetes Dashboard尚未更新以支持部署,目前仅支持复制控制器(请参阅Kubernetes仪表板中不可见的部署).

编辑:仪表板现在支持部署.


Swa*_*uru 12

这是2020 年对 4 年前 2016 年开始的问题的最新回答

2017 年给出了一个很好的答案 https://www.mirantis.com/blog/kubernetes-replication-controller-replica-set-and-deployments-understanding-replication-options/

现在我们在Kubernetes 版本 - 1.17 中,我们有 3 种类型

部署(推荐)

部署是一个更高级别的 API 对象,它以与 kubectl 滚动更新类似的方式更新其底层副本集及其 Pod。如果您想要此滚动更新功能,建议部署部署,因为与 kubectl rolling-update 不同,它们是声明性的、服务器端的,并且具有附加功能。

副本集

ReplicaSet 是下一代的 ReplicationController,它支持新的基于集合的标签选择器。它主要被 Deployment 用作编排 pod 创建、删除和更新的机制。请注意,我们建议使用部署而不是直接使用副本集,除非您需要自定义更新编排或根本不需要更新。

ReplicationController(不推荐)

确保指定数量的 Pod 副本在任何时候都在运行。换句话说,ReplicationController 确保一个 pod 或一组同构的 pod 始终可用。


kic*_*hik 8

部署仍处于测试阶段(他们的API处于测试阶段extensions/v1beta1),这可能是他们未在UI中显示的原因.它们在保持pod活着的基础上自动化状态转换.从链接页面:

部署为Pod和副本集(下一代复制控制器)提供声明性更新.您只需要在Deployment对象中描述所需的状态,Deployment控制器将以受控速率将实际状态更改为所需状态.您可以定义"部署"以创建新资源,或者用新资源替换现有资源.

它们还提供了推出历史记录和其他有用的功能.

$ kubectl rollout history deployment/nginx-deployment
deployments "nginx-deployment":
REVISION    CHANGE-CAUSE
1           kubectl create -f docs/user-guide/nginx-deployment.yaml --record
2           kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
3           kubectl apply -f docs/user-guide/bad-nginx-deployment.yaml
Run Code Online (Sandbox Code Playgroud)

它也跟踪变化.

$ kubectl rollout history deployment/nginx-deployment --revision=2
deployments "nginx-deployment" revision 2
Labels:     app=nginx,pod-template-hash=1564180365
Annotations:    kubernetes.io/change-cause=kubectl apply -f docs/user-guide/new-nginx-deployment.yaml
Image(s):   nginx:1.9.1
No volumes.
Run Code Online (Sandbox Code Playgroud)


小智 7

现在有了1.1版, Dashboard确实支持部署.您可以部署或更新仪表板,而无需等待k8的1.3版本.例如,您可以使用我们刚刚更改为使用部署的官方YAML.

一般来说,我建议(以及谷歌和Kubernetes贡献者也这样做)使用部署而不是RC,因为它们是一个更强大的原语(包括滚动更新,版本控制/审计,canaray /绿蓝部署,回滚等) .