Kubernetes学习之Deployment控制器

本文介绍了Kubernetes中的Deployment控制器,它提供声明式的更新方式来管理Pod和Replica Set。内容涵盖Deployment的工作原理、应用场景,如滚动更新、动态扩缩容、回滚等操作。还详细阐述了如何创建、查看、操作Deployment资源,以及如何进行Pod镜像的滚动更新和回滚,最后讨论了Deployment的清理策略。
摘要由CSDN通过智能技术生成

一、认识Deployment控制器
  Deployment控制器为Pod和Replica Set控制器提供声明式的更新;你只需要在Deployment中描述你想要的目标状态是什么,Deployment Controller就会帮你将Pod和Relica Set控制器的实际状态改变到你的目标状态。你也可以定义一个新的Deployment,也可以创建一个新的替换旧的Deployment控制器。
  当我们在使用Deployment控制器做滚动更新时,Deployment控制器首先会创建出一个新的ReplicaSet控制器,在新的ReplicaSet控制器上创建出新的Pod;并且通过一定的频率,将老的ReplicaSet控制器上的Pod发送退出信号;但是无论如何更新,老的ReplicaSet控制器上的Pod副本数和新的ReplicaSet副本数必须要满足Deployment控制器所规定的数量;当老的ReplicaSet控制器中的Pod被用户访问完毕时,便会退出;新的用户访问会被调度到新的ReplicaSet控制器下的Pod上。
在这里插入图片描述

二、Deployment典型的应用场景如下

  • 使用Deployment控制器来创建ReplicaSet,ReplicationSet在后台创建Pod;检查启动状态,看它是成功还是失败。
  • 通过更新Deployment控制器中的PodTemplateSpec字段来声明Pod的新状态。这会创建一个新的ReplicationSet,Deployment控制器会按照自己所控制的速率将Pod从旧的ReplicaSet中移动到新的ReplicaSet中。
  • 如果当前状态不稳定,回滚到之前的Deployment revision,每次回滚都会更新Deployment的revision。
  • 支持动态扩缩容,扩容Deployment控制器以满足更高的负载。
  • 暂停Deployment控制器来应用PodTemplateSpec的多个修复,然后恢复上线。
  • 根据Deployment控制器的状态来判断上线是否失败了。
  • 定时清理不必要的ReplicaSet
    在这里插入图片描述

三、Deployment使用操作

1)创建Deployment资源

]# cat deploy-demo.yaml 
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: myapp-deploy
  namespace: default
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      release: canary
  template:
    metadata:
      labels:
        app: myapp
        release: canary
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80

]# kubectl apply -f deploy-demo.yaml 
deployment.apps/myapp-deploy created

2)查看Deployment资源

]# kubectl get deploy -o wide 
NAME           READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES                 SELECTOR
myapp-deploy   3/3     3            3           2m35s   myapp        ikubernetes/myapp:v1   app=myapp,release=canary

]# kubectl get rs -o wide 
NAME                      DESIRED   CURRENT   READY   AGE     CONTAINERS   IMAGES                 SELECTOR
myapp-deploy-65fb6c8459   3         3         3       2m43s   myapp        ikubernetes/myapp:v1   app=myapp,pod-template-hash=65fb6c8459,release=canary

]# kubectl get pods -o wide 
NAME                            READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
myapp-deploy-65fb6c8459-bkcbj   1/1     Running   0          3m49s   10.244.1.28   node1   <none>           <none>
myapp-deploy-65fb6c8459-c44fs   1/1     Running   0          3m49s   10.244.1.27   node1   <none>           <none>
myapp-deploy-65fb6c8459-fbbl7   1/1     Running   0          3m49s   10.244.2.10   node2   <none>           <none>

3)访问pod资源

]# curl 10.244.1.28
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

]# curl 10.244.1.27
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

]# curl 10.244.2.10
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

4)查看Deoloyment和ReplicaSet的详细信息

]# kubectl describe deployment myapp-deploy
Name:             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值