Kubernetes 部署


部署是副本控制器的升级版,他们管理复制集的部署,这也是副本控制器的升级版本,他们有能力更新复制集,也能够回滚到以前的版本。

他们提供了许多更新的matchLabels选择器的功能,在Kubernetes master中有一个新的控制器,叫做部署控制器,它使之成为现实,它有能力在中途改变部署。

更改部署


Updating: 用户可以在正在进行的部署完成之前对其进行更新,在这种情况下,将解决现有部署并创建新部署;

Deleting: 用户可以通过在部署完成前将其删除来暂停/取消部署,重新创建相同的部署将恢复它;

Rollback: 可以回滚部署或正在进行的部署,用户可以通过使用DeploymentSpec.PodTemplateSpec = oldRC.PodTemplateSpec创建或更新部署。

部署策略


部署策略有助于定义新 RC 应如何替换现有 RC。

重启(Recreate): 此功能会杀死所有现有的 RC,然后调出新的。这会导致快速部署,但是当旧 Pod 关闭而新 Pod 没有出现时,它会导致停机。

滚动更新(Rolling Update): 这个功能逐渐拉低了旧的RC并带来了新的RC。这会导致部署缓慢,但没有部署。在任何时候,在此过程中都很少有旧 Pod 和新 Pod 可用。

Deployment 的配置文件是这样的:

apiVersion: extensions/v1beta1 --------------------->1
kind: Deployment --------------------------> 2
metadata:
    name: Tomcat-ReplicaSet
spec:
    replicas: 3
    template:
        metadata:
            lables:
                app: Tomcat-ReplicaSet
                tier: Backend
    spec:
        containers:
            - name: Tomcatimage:
                tomcat: 8.0
                ports:
                    - containerPort: 7474

在上面的代码中,唯一与副本集不同的是将kind定义为Deployment。

创建部署


$ kubectl create –f Deployment.yaml -–record
deployment "Deployment" created Successfully.

获取部署


$ kubectl get deployments
NAME           DESIRED     CURRENT     UP-TO-DATE     AVILABLE    AGE
Deployment        3           3           3              3        20s

检查部署状态


$ kubectl rollout status deployment/Deployment

更新部署


$ kubectl set image deployment/Deployment tomcat=tomcat:6.0

回滚到之前的部署


$ kubectl rollout undo deployment/Deployment –to-revision=2