Kubernetes详解(二十二)——Deployment控制器

今天继续给大家介绍Linux运维相关知识,本文主要内容是Deployment控制器。

一、Deployment控制器概述

在前文Kubernetes详解(二十)——ReplicaSet控制器Kubernetes详解(二十一)——ReplicaSet控制器实战应用中,我们介绍了Kubernetes的ReplicaSet控制器,今天,我们来介绍Kubernetes的另一种控制器——Deployment。Deployment控制器构建于ReplicaSet控制器之上(意思是Deployment控制器在创建时,一定会先创建一个ReplicaSet控制器),可以为Pod和ReplicaSet资源提供声明式更新。
Deployment控制器的主要职责是保证Pod资源的健康运行,该控制器的大部分功能是通过调用ReplicaSet控制器实现,同时Deploymen控制器还增添了一些特性,这些特性大多是体现在Pod更新上,使得我们队Pod的更新控制更加细致。Deployment控制器增添的特性如下:
1、事件和状态查看。
我们可以借助Deployment控制器查看Pod更新的状态。
2、回滚
当Pod升级完毕后,如果发现更新升级后存在问题,就可以通过Deployment控制实现Pod的回滚,即将Pod重新恢复为之前的版本。
3、版本记录
可以对Pod升级的每个版本进行保留,这样可以方便回滚操作。
4、暂停和启动
在Pod升级过程中,可以随时暂停、启动。这样可以实现只对部分Pod进行升级,从而实现金丝雀发布(灰度发布)。
5、多种方案更新
Deployment支持两种更新方案,一种是Recreate,即重建更新机制,先全面停止、删除原有的Pod对象,然后再用新的版本替代;另一种是RollingUpdate,即滚动升级机制,逐步替换、升级Pod,保证业务不中断。

二、Deployment控制器资源清单创建

下面,我们就通过资源配置清单,实现Deployment控制器的创建,并查看效果。创建Deployment.yaml文件,并写入内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      controller: deployment
      pod: myapp
  template:
    metadata:
      labels:
        controller: deployment
        pod: myapp
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        ports:
        - name: http
          containerPort: 80

配置完成后的资源配置清单如下所示:
在这里插入图片描述
从上述配置可以看出,Deployment控制器和ReplicaSet控制器的参数基本相同,对上述配置存在困惑的可以参考文章前面提到的两篇文章,在这里就不过多赘述了。
完成资源配置清单文件的创建和编写后,我们接下来执行该资源清单配置文件,创建Deployment控制器。
执行命令:

kubectl apply -f Deployment.yaml

接下来,我们先后执行命令:

kubectl get deployment
kubectl get replicaset
kubectl get pods

分别用于查看Deployment控制器、ReplicaSet控制器和Pod的情况,结果如下:
在这里插入图片描述
从上图中可以看出,我们的Deployment控制器创建成功。并且Deployment控制器、ReplicaSet控制器和Pod之间有以下关系:在创建了Deployment控制器后,Kubernetes会自动创建ReplicaSet控制器,该控制器的名称以Deployment控制器的名称为主,后面跟着随机的字符串,而Pod的名称又以Deployment控制器的名称为主,后面跟着随机的而字符串。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124349268