Kubernetes(K8s) Deployment

Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。本文主要介绍Kubernetes(K8s) Deployment 。

1、Kubernetes(K8s) Deployment

Deployment为Pod和Replica Set提供声明式更新。

只需要在 Deployment 中描述想要的目标状态,Deployment controller 会将 Pod 和ReplicaSet 的实际状态改变到目标状态。可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。

注意:不应该手动管理由 Deployment 创建的 Replica Set,这不是Deployment controller 的职责。

2、Deployment常用操作

Deployment是一个定义及管理多副本应用(即多个副本 Pod)的新一代对象,与Replication Controller相比,它提供了更加完善的功能,使用起来更加简单方便。

1)配置文件

apiVersion: extensions/v1beta1
kind: Deployment
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

2)更改Deployment

Updating:用户可以在Deployment完成之前更新正在进行的Deployment。在此过程中,Deployment,并创建新的Deployment。

Deleting:用户可以通过在Deployment完成之前删除它来暂停/取消Deployment。重新创建相同的Deployment将恢复它。

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

3)Deployment策略

Recreate:将杀死所有现有的RC,然后打开新的。这将导致快速Deployment,但它将导致停机时,旧的Pod下来,新的Pod没有出现。

Rolling Update:将逐渐淘汰旧的RC并带来新的RC。将导致缓慢的Deployment,但实际上并没有Deployment。在这个过程中,始终有很少旧的Pod和新Pod可用。

4)创建Deployment

$ kubectl create –f Deployment.yaml -–record

5)获取Deployment

$ kubectl get deployments

6)判断Deployment的状态

$ kubectl rollout status deployment/Deployment

7)更新Deployment

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

8)回滚到之前的Deployment

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

相关文档:

Kubernetes(K8s) kubectl get 常用命令

Kubernetes(K8s) kubectl describe常用命令

Kubernetes(K8s) kubectl create常用命令

Kubernetes(K8s) kubectl replace常用命令

Kubernetes(K8s) kubectl patch常用命令

Kubernetes(K8s) kubectl edit 常用命令

Kubernetes(K8s) kubectl delete 常用命令

Kubernetes(K8s) kubectl apply 常用命令

Kubernetes(K8s) kubectl logs 常用命令

推荐阅读
cjavapy编程之路首页