复制控制器VS部署在Kubernetes中

我想知道Kubernetes(1.2)中的复制控制器和部署之间的区别。 阅读入门文档( http://kubernetes.io/docs/hellonode/ )我已经创build了一个部署,但是它并没有显示在Web UI上。

当我从Web用户界面创build应用程序时 – 他们被创build为复制控制器。 在function上,他们看起来非常相似(他们都pipe理豆荚和有服务)。

那么 – 有什么区别,我应该什么时候使用每个?

部署是比复制控制器更新,更高级的概念。 他们pipe理副本集的部署(也是一个更新的概念,但几乎等同于复制控制器),并允许轻松更新副本集以及回滚到以前部署的能力。

以前这将不得不与kubectl rolling-update ,这是不是说明性的,没有提供回滚function。

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

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

部署仍处于testing阶段(它们的API位于extensions/v1beta1 ),这可能是为什么它们不会显示在UI中。 他们只是让豆荚活着,让状态转换自动化。 从链接页面:

部署为Pod和Replica集(下一代复制控制器)提供声明性更新。 您只需要在部署对象中描述所需的状态,部署控制器将会以您控制的速率将实际状态更改为所需的状态。 您可以定义部署来创build新的资源,或者用新的资源replace现有的资源。

他们还提供推出历史和其他有用的function。

 $ 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 

它也跟踪变化。

 $ 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. 

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

一般来说,我build议(和谷歌和Kubernetes贡献者也这样做)使用部署超过RC,因为它们是一个更强大的原始(包括滚动更新,版本/审计,canaray /绿蓝部署,回滚等) 。

仪表板(Web UI)经过了重新devise,以支持pipe理更多资源(如DeploymentsDaemonSets等),而当前的仪表板不允许Deployments太多。

仪表盘中的部署pipe理将很快在kubernetes 1.3中得到支持(请参阅问题function请求:处理部署 )。

从我的经验来看,部署并不能提供所有我需要的function。 或者,也许我正在以一种错误的方式使用它们。

当需要重新启动节点服务器时 – 在该服务器上运行的所有Pod都是通过部署启动的 – 确实会失败。 而我无法find一种方法来避免这种情况。

但,

Think解决scheme是一个复制控制器。 至less在描述中写到它处理这种情况。

正如我所看到的,主要部署优势是您需要不断更改应用的版本。

所以两种方法都很好,但是原因不同。