一、概念

  Kubernetes提供了一种更加简单的更新RC和Pod的机制,叫做Deployment。通过在Deployment中描述你所期望的集群状态,Deployment Controller会将在现在的集群状态在一个可控的速度下逐步更新成你所期望的集群状态,Deployment 主要职责同样是为了保证pod的数量和健康,90%的功能与Replication Controller完全一样,可以看做新一代的Replication Controller。但是,它又具备了Replication Controller之外的新特性。

  Replication Controller全部功能:Deployment继承了上面描述的Replication Controller全部功能。

  事件和状态查看:可以查看Deployment的升级详细进度和状态。

  回滚:档升级pod镜像或者相关参数的时候发现问题,可以使用回滚操作回滚带上一个稳定的版本或者指定的版本。

  版本记录:每一次对Deployment的操作,都能保存下来,给予后续可能的回滚使用。

  暂停和启动:对于每一次升级,都能够随时暂停和启动。

  多种升级方案:Recreate-----删除所有已存在的pod,重新创建新的。RollingUpdate----滚动升级,逐步替换的策略,同事滚动升级时,支持更多的附加参数,例如设置最大不可用pod数量,最小升级间隔时间等等。

   

 二、配置实例

  1、修改配置命令

复制代码

[root@k8s-master ~]# vim nginx-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: 192.168.125.130:5000/nginx:1.19
        ports:
        - containerPort: 80

复制代码

  2、基于配置文件创建容器

复制代码

[root@k8s-master ~]# kubectl create -f nginx-deployment.yaml
[root@k8s-master ~]# kubectl get all
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx-deployment 3 3 3 2 17s

NAME DESIRED CURRENT READY AGE
rc/nginx2 3 3 3 18h

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes 10.254.0.1 <none> 443/TCP 3d

NAME DESIRED CURRENT READY AGE
rs/nginx-deployment-3637952344 3 3 2 16s

NAME READY STATUS RESTARTS AGE
po/nginx 1/1 Running 1 21h
po/nginx-deployment-3637952344-50pgk 0/1 ContainerCreating 0 16s
po/nginx-deployment-3637952344-js979 1/1 Running 0 16s
po/nginx-deployment-3637952344-ltwfm 1/1 Running 0 16s
po/nginx2-516gh 1/1 Running 1 18h
po/nginx2-p56cf 1/1 Running 1 18h
po/nginx2-v6t11 1/1 Running 1 18h

复制代码

  3、升级版本

[root@k8s-master ~]# kubectl edit nginx-deployment                     修改配置文件,所有的配置文件都存放在etcd里面

 随即就会创建基于1.13版本的容器

 

   4、记录版本

[root@k8s-master ~]# kubectl delete deployment nginx-deployment
[root@k8s-master ~]# kubectl create -f nginx-deployment.yaml  --record                  创建容器,加上描述参数
[root@k8s-master ~]# kubectl get rs -o wide                                             查看容器名称,标签

  5、降级版本

复制代码

[root@k8s-master ~]# kubectl set image deploy nginx-deployment web=192.168.125.130:5000/nginx:1.13
[root@k8s-master ~]# kubectl get all
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/nginx-deployment 3 3 3 3 6m

NAME DESIRED CURRENT READY AGE
rc/nginx2 3 3 3 18h

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes 10.254.0.1 <none> 443/TCP 3d

NAME DESIRED CURRENT READY AGE
rs/nginx-deployment-3150364498 3 3 3 31s
rs/nginx-deployment-3637952344 0 0 0 6m

NAME READY STATUS RESTARTS AGE
po/nginx 1/1 Running 1 22h
po/nginx-deployment-3150364498-79c79 1/1 Running 0 29s
po/nginx-deployment-3150364498-bfkmj 1/1 Running 0 31s
po/nginx-deployment-3150364498-k72dn 1/1 Running 0 31s
po/nginx2-516gh 1/1 Running 1 18h
po/nginx2-p56cf 1/1 Running 1 18h
po/nginx2-v6t11 1/1 Running 1 18h

复制代码

  6、回滚版本

复制代码

[root@k8s-master ~]# kubectl rollout history deployment nginx-deployment                  查看历史版本
deployments "nginx-deployment"
REVISION    CHANGE-CAUSE
1        kubectl create -f nginx-deployment.yaml --record
2        kubectl set image deploy nginx-deployment web=192.168.125.130:5000/nginx:1.13
[root@k8s-master ~]# kubectl rollout undo deployment nginx-deployment --to-revision=1     回滚到历史1的版本
deployment "nginx-deployment" rolled back
[root@k8s-master ~]#

复制代码

   7、简单快捷命令

[root@k8s-master ~]# kubectl delete -f nginx-deployment.yaml                        删除容器
[root@k8s-master ~]# kubectl run nginx --image=192.168.125.130:5000/nginx:1.19 --replicas=5 --record     命令创建容器
[root@k8s-master ~]# kubectl set image deploy nginx nginx=192.168.125.130:5000/nginx:1.13                修改容器版本

  8、几种升级、降级的操作

 三、pha组件安装

  pha可以管理Deployment,也可以管理RC,是副本之上的资源。

[root@k8s-master ~]# kubectl autoscale deployment nginx --max=8 --min=2 --cpu-percent=80

注意:本文有不理解之处,加QQ:1300536862,探讨

推荐:需要租用云服务器,域名等其他服务的可以扫描下方二维码,云服务器免费领取使用,华为云服务:

        

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐