iT邦幫忙

2022 iThome 鐵人賽

DAY 6
1
DevOps

30天準備CKA考試系列 第 6

Day 06:Deployments

  • 分享至 

  • xImage
  •  

Day 06:Deployments

照慣例先來看看官網怎麼寫YAML吧~

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

咦?看起來和ReplicaSet差不多耶!?這樣為什麼需要這兩種物件呢?我們來看看兩者有什麼關係和差異吧~

Deployments與ReplicaSets

  • ReplicaSet主要是負責控管Pod的數量,而Deployment是基於ReplicaSet再加上更靈活的更新Pod方式。

  • 如果我們要建立一個Deployment,那會發生:

    Deployment ⇒ ReplicaSet ⇒ Pod

    建立Deployment後,Deployment會去建立ReplicaSet,而ReplicaSet會根據Replicas的數量來建立相對應的Pods。

更新Deployment

之前提到要更新各種物件,有兩種方式,Imperative和Declarative。後者就是先告知我們的目標,無論系統會怎麼幫我們完成,只在乎結果。主要的方法就是直接更改YAML,無論是要用edit指令,還是要編輯YAML檔後再apply,兩者都可以。

我們現在來介紹Imperative way~

# 更新image
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1

# 查看更新狀況
kubectl rollout status deployment/nginx-deployment

# 查看更新歷史
kubectl rollout history deployment/nginx-deployment

# 暫停更新
kubectl rollout pause deployment/nginx-deployment

# 恢復更新
kubectl rollout resume deployment/nginx-deployment

# 回到前一個版本
kubectl rollout undo deployment/nginx-deployment

# 更改replicas的數量
kubectl scale deployment/nginx-deployment --replicas=10

更新策略

Deployment的更新策略,可以加在.spec.strategy.type的欄位,有兩種:

  • Recreate:一次性將所有Pod同時更新成新版本。
  • RollingUpdate:一次更新一個Pod,更新好一個再更新下一個,直到全部成功,或是中間有更新失敗,這個策略為預設值。

參考資料

Deployments


上一篇
Day 05:ReplicationController vs. ReplicaSet
下一篇
Day 07:Service
系列文
30天準備CKA考試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言