Pod控制器之Deployment

Pod控制器之Deployment

簡介:
Deployment 是 Kubernetes v1.2 引入的新概念跟匆,引入的目的是為了更好的解決 Pod 的編排問題琼梆。為此妙真,Deployment 在內(nèi)部使用了 Replica Set 來實現(xiàn)目的领猾,無論從 Deployment 的作用與目的破停、它的 YAML 定義,還是從它的具體命令操作來看乎赴,都可以把它看做 RC 的一次升級兩者的相似度超過 90%忍法。
Deplyment 相對于 RC 的嘴個最大升級時可以隨時知道當前 Pod “部署” 的進度。實際上由于一個 Pod 的創(chuàng)建榕吼、調(diào)度饿序、綁定節(jié)點以及在目標 Node 上啟動對應的容器這一完整過程需要一定的時間,所以期待系統(tǒng)啟動 N 個 Pod 副本的目標狀態(tài)羹蚣,實際上是一個連續(xù)變化的 “部署過程” 導致的最終狀態(tài)原探。

Deployment 的典型使用場景有以下幾個。
創(chuàng)建一個 Deployment 對象來生成對應的 Replica Set 并完成 Pod 副本的創(chuàng)建過程顽素。
檢查 Deployment 的狀態(tài)來部署動作是否完成(Pod 副本的數(shù)量是否達到預期的值)咽弦。
更新 Deployment 以創(chuàng)建新的 Pod(比如鏡像升級)。
如果當前 Deployment 不穩(wěn)定胁出,則回滾到一個早先的 Deployment 版本离唬。
暫停 Deployment 以便于下一次性修改多個 PotTemplateSpec 的配置項,之后再回復 Deployment划鸽,進行新的發(fā)布。
擴展 Deployment 以應對高負載。
查看 Deployment 的狀態(tài)裸诽,以此作為發(fā)布是否完成的指標嫂用。
清理不在需要的舊版本 ReplicaSets。
Deployment 的定義與 Replica Set 的定義很類似丈冬,除了 API 聲明與 Kind 類型等有所區(qū)別:

ReplicaSet:

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

Deployment:

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

創(chuàng)建一個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實現(xiàn)更新應用時可以直接通過編輯配置文件來實現(xiàn)嘱函,直接修改配置文件中的replicas的數(shù)量然后使用apply創(chuàng)建,apply可以執(zhí)行多次埂蕊,create只能創(chuàng)建一次往弓,apply可以把每一次的變化同步到etcd當中或者同步到apiserver當中,apiserver發(fā)現(xiàn)它與etcd中不同從而改變etcd從而實現(xiàn)他的期望狀態(tài)

image.png

--record參數(shù)可以記錄當前版本的Deployment都執(zhí)行過哪些命令蓄氧。
使用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參數(shù)暫停了更新只更新一個函似,會一直暫停下去,成為金絲雀發(fā)布喉童,
監(jiān)控觀察:


image.png

也可以通過kubectl rollout status deployment deploy-myapp監(jiān)測


image.png

等確認好沒有問題就繼續(xù)更新撇寞,使用kubectl rollout resume 繼續(xù)更新

kubectl rollout resume deployment deploy-myapp
image.png

使用rollout undo版本回滾:

undo默認是回滾到上一個版本 如果需要回滾到更早的版本可以使用--to-revision參數(shù)在指定回滾的版本號

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

回滾到第一版
查看rs已經(jīng)回滾到第一版了


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堂氯,隨后出現(xiàn)的幾起案子蔑担,更是在濱河造成了極大的恐慌,老刑警劉巖咽白,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啤握,死亡現(xiàn)場離奇詭異,居然都是意外死亡晶框,警方通過查閱死者的電腦和手機排抬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來三妈,“玉大人畜埋,你說我怎么就攤上這事〕肫眩” “怎么了悠鞍?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長模燥。 經(jīng)常有香客問我咖祭,道長,這世上最難降的妖魔是什么蔫骂? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任么翰,我火速辦了婚禮,結(jié)果婚禮上辽旋,老公的妹妹穿的比我還像新娘浩嫌。我一直安慰自己檐迟,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布码耐。 她就那樣靜靜地躺著追迟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骚腥。 梳的紋絲不亂的頭發(fā)上敦间,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音束铭,去河邊找鬼廓块。 笑死,一個胖子當著我的面吹牛契沫,可吹牛的內(nèi)容都是我干的带猴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼埠褪,長吁一口氣:“原來是場噩夢啊……” “哼浓利!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钞速,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤贷掖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渴语,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苹威,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年驾凶,在試婚紗的時候發(fā)現(xiàn)自己被綠了牙甫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡调违,死狀恐怖窟哺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情技肩,我是刑警寧澤且轨,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站虚婿,受9級特大地震影響旋奢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜然痊,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一至朗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剧浸,春花似錦锹引、人聲如沸矗钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽真仲。三九已至,卻和暖如春初澎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虑凛。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工碑宴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桑谍。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓延柠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锣披。 傳聞我的和親對象是個殘疾皇子贞间,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容