Kubernetes Deployment

网友投稿 236 2022-10-07

Kubernetes Deployment

​​Kubernetes Deployment​​

Kubernetes Deployment

Deployment 是 Kubernetes v1.2 引入的新概念,引入的目的是为了更好的解决 Pod 的编排问题。为此,Deployment 在内部使用了 Replica Set 来实现目的,无论从 Deployment 的作用与目的、它的 YAML 定义,还是从它的具体命令操作来看,都可以把它看做 RC 的一次升级两者的相似度超过 90%。

Deplyment 相对于 RC 的嘴个最大升级时可以随时知道当前 Pod “部署” 的进度。实际上由于一个 Pod 的创建、调度、绑定节点以及在目标 Node 上启动对应的容器这一完整过程需要一定的时间,所以期待系统启动 N 个 Pod 副本的目标状态,实际上是一个连续变化的 “部署过程” 导致的最终状态。

Deployment 的典型使用场景有以下几个。

创建一个 Deployment 对象来生成对应的 Replica Set 并完成 Pod 副本的创建过程。检查 Deployment 的状态来部署动作是否完成(Pod 副本的数量是否达到预期的值)。更新 Deployment 以创建新的 Pod(比如镜像升级)。如果当前 Deployment 不稳定,则回滚到一个早先的 Deployment 版本。暂停 Deployment 以便于下一次性修改多个 PotTemplateSpec 的配置项,之后再回复 Deployment,进行新的发布。扩展 Deployment 以应对高负载。查看 Deployment 的状态,以此作为发布是否完成的指标。清理不在需要的旧版本 ReplicaSets。

1234

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: nginx-deployment

1234

apiVersion: v1kind: ReplicaSetmetadata:  name: nginx-repset

下面通过运行一些例子来一起直观的感受这个新概念。首先创建一个 tomcat 的 Deployment 描述文件,内容如下:3A网络怎么样?3A网络好不好,好久没有分享3A网络了,本月他家发布了2022年年初促销特惠价格,5Mbps、10Mbps、15Mbps 、30Mbps、 50Mbps、100Mbps香港优质或BGPN2、阿里云线路、华为云线路,满足多种项目需求!支持测试。全部线路月付99元起。如果你想购买香港服务器,可以看看他家的产品,性价比还是非常高的,目前商家有优质BGP、CN2、线路,国内用户用来做站非常不错。支持市面上99%的付款方式。需要更多支持请访问官网获取。官网:iis3.com

tomcat-deployment.yaml

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: tomcat-deploymentspec:  replicas: 1  selector:    matchLabels:      tier: frontend    matchExpressions:     - {key: tier, operator: In, values: [frontend]}  template:    metadata:      labels:        app: app-demo        tier: frontend    spec:      containers:      - name: tomcat-dome        image: tomcat        imagePullPolicy: IfNotPresent        ports:        - containerPort: 8080

创建命令:

$ kubectl apply -f tomcat-deployment.yamldeployment "tomcat-deployment" created

查看 Deployment 信息:

$ kubectl get deploymentNAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGEtomcat-deployment   1         1         1            1           21s

对上述输出中涉及的数量解释如下:

DESIRED:Pod 副本数量的期望值,即 Deployment 里定义的 Replica。CURRENT:当前 Replica 的值,实际上是 Deployment 所创建的 Replica Set 里的 Replica 值,这个值不断增加,直到达到 DESIRED 为止,表名整个部署过程完成。UP-TO-DATE:最新版本的 Pod 的副本数量,用于只是在滚动升级的过程中,有多少个 Pod 副本已经成功升级。AVAILABLE:当集群中可用的 Pod 副本数量,即集群中当前存活的 Pod 数量。

运行下述命令查看对应的 Replica Set,看到它的命名与 Deployment 的名字有关系:

$ kubectl get rsNAME                           DESIRED   CURRENT   READY     AGEtomcat-deployment-7b54cd85d6   1         1         1         32s

运行下述命令查看创建的 Pod,发现 Pod 的命名与 Deployment 对应的 Replica Set 的名字为前缀,这种命名很清晰的表明了一个 Replica Set 创建了那些 Pod,对于 Pod 滚动升级这种复杂的过程来说,很容易排查错误:3A网络怎么样?3A网络好不好,好久没有分享3A网络了,本月他家发布了2022年年初促销特惠价格,5Mbps、10Mbps、15Mbps 、30Mbps、 50Mbps、100Mbps香港优质或BGPN2、阿里云线路、华为云线路,满足多种项目需求!支持测试。全部线路月付99元起。如果你想购买香港服务器,可以看看他家的产品,性价比还是非常高的,目前商家有优质BGP、CN2、线路,国内用户用来做站非常不错。支持市面上99%的付款方式。需要更多支持请访问官网获取。官网:iis3.com

$ kubectl get poNAME                                 READY     STATUS    RESTARTS   AGEtomcat-deployment-7b54cd85d6-4lpvx   1/1       Running   0          48s

运行 describe ,可以清楚的看到 Deployment 控制的 Pod 的水平扩展过程。

Pod 的管理对象,除了 RC 和 Deployment,还包括 ​​ReplicaSet​​​、​​Deployment​​​、​​StatefulSet​​、Job 等,分别用于不同的应用场景中。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring cloud eureka注册原理
下一篇:Azure 配置管理系列(PART 10)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~