Pod控制器之Deployment

Pod控制器之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。
Deployment 的定义与 Replica Set 的定义很类似,除了 API 声明与 Kind 类型等有所区别:

ReplicaSet:

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-repset

Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment

创建一个Deployment

vim deploy-daem.yaml
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: deploy-myapp
  namespace: default
spec:
  replicas:2
  selector:
    matchLabels:
      app: myapp
      release: cancay
  template:
    metadata:
      labels:
        app:myapp
        release: cancay
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80

deploy实现更新应用时可以直接通过编辑配置文件来实现,直接修改配置文件中的replicas的数量然后使用apply创建,apply可以执行多次,create只能创建一次,apply可以把每一次的变化同步到etcd当中或者同步到apiserver当中,apiserver发现它与etcd中不同从而改变etcd从而实现他的期望状态

image.png

--record参数可以记录当前版本的Deployment都执行过哪些命令。
使用patch命令打补定的方式扩容

[root@k8s-master daem]# kubectl patch deployments.apps deploy-myapp -p '{"spec":{"replicas": 5}}'
deployment.apps/deploy-myapp patched
[root@k8s-master daem]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
deploy-myapp-74c58c54f5-4bh62   1/1     Running   0          5m55s
deploy-myapp-74c58c54f5-dnsx5   1/1     Running   0          5m52s
deploy-myapp-74c58c54f5-vn6b9   1/1     Running   0          7s
deploy-myapp-74c58c54f5-wjpwn   1/1     Running   0          5m54s
deploy-myapp-74c58c54f5-zfk74   1/1     Running   0          7s
liveness-httpget                1/1     Running   3          2d5h
poststart-pod                   1/1     Running   7          6h2m
readiness-httpget-pods          1/1     Running   2          2d4h

使用set image方式更新版本

使用打补丁的方式修改更新策略
[root@k8s-master daem]# kubectl patch deployments.apps deploy-myapp -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge": 1,"maxUnavailable":0}}}}'
deployment.apps/deploy-myapp patched
[root@k8s-master daem]# kubectl set image deploy deploy-myapp myapp=ikubernetes/myapp:v3 && kubectl rollout pause deployment deploy-myapp 
deployment.apps/deploy-myapp image updated
deployment.apps/deploy-myapp paused

因为使用了pause参数暂停了更新只更新一个,会一直暂停下去,成为金丝雀发布,
监控观察:


image.png

也可以通过kubectl rollout status deployment deploy-myapp监测


image.png

等确认好没有问题就继续更新,使用kubectl rollout resume 继续更新

kubectl rollout resume deployment deploy-myapp
image.png

使用rollout undo版本回滚:

undo默认是回滚到上一个版本 如果需要回滚到更早的版本可以使用--to-revision参数在指定回滚的版本号

[root@k8s-master ~]# kubectl rollout undo deployment deploy-myapp --to-revision=1
deployment.apps/deploy-myapp rolled back

回滚到第一版
查看rs已经回滚到第一版了


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 228,606评论 6 533
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 98,582评论 3 418
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 176,540评论 0 376
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,028评论 1 314
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,801评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,223评论 1 324
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,294评论 3 442
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,442评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,976评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,800评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,996评论 1 369
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,543评论 5 360
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,233评论 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,662评论 0 26
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,926评论 1 286
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,702评论 3 392
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,991评论 2 374

推荐阅读更多精彩内容