K8s Deployment YAML 名詞解釋

Deployment 簡述

DeploymentPodReplicaSet 提供了一個(gè)聲明式定義 (declarative) 方法深滚,用來替代以前的 ReplicationController 更方便的管理應(yīng)用。

作為最常用的 Kubernetes 對象伴榔,Deployment 經(jīng)常會(huì)用來創(chuàng)建 ReplicaSetPod斯稳,我們往往不會(huì)直接在集群中使用 ReplicaSet 部署一個(gè)新的微服務(wù)海铆,一方面是因?yàn)?ReplicaSet 的功能其實(shí)不夠強(qiáng)大,一些常見的更新挣惰、擴(kuò)容和縮容運(yùn)維操作都不支持卧斟,Deployment 的引入就是為了支持這些復(fù)雜的操作殴边。

Deployment API 版本對照表

Kubernetes 版本 Deployment 版本
v1.5-v1.15 extensions/v1beta1
v1.7-v1.15 apps/v1beta1
v1.8-v1.15 apps/v1beta2
v1.9+ apps/v1

Deployment 一個(gè)典型的用例

一個(gè)典型的用例如下:

  • 使用 Deployment 來創(chuàng)建 ReplicaSet。ReplicaSet 在后臺(tái)創(chuàng)建 pod珍语。檢查啟動(dòng)狀態(tài)锤岸,看它是成功還是失敗。
  • 然后板乙,通過更新 Deployment 的 PodTemplateSpec 字段來聲明 Pod 的新狀態(tài)是偷。這會(huì)創(chuàng)建一個(gè)新的 ReplicaSet,Deployment 會(huì)按照控制的速率將 pod 從舊的 ReplicaSet 移動(dòng)到新的 ReplicaSet 中募逞。
  • 如果當(dāng)前狀態(tài)不穩(wěn)定蛋铆,回滾到之前的 Deployment revision。每次回滾都會(huì)更新 Deployment 的 revision放接。
  • 擴(kuò)容 Deployment 以滿足更高的負(fù)載刺啦。
  • 暫停 Deployment 來應(yīng)用 PodTemplateSpec 的多個(gè)修復(fù),然后恢復(fù)上線纠脾。
  • 根據(jù) Deployment 的狀態(tài)判斷上線是否 hang 住了玛瘸。
  • 清除舊的不必要的 ReplicaSet。

創(chuàng)建 Deployment

Deployment yaml文件包含四個(gè)部分:

  • apiVersion: 表示版本
  • kind: 表示資源
  • metadata: 表示元信息
  • spec: 資源規(guī)范字段

Deployment yaml 名詞解釋:

apiVersion: apps/v1  # 指定api版本苟蹈,此值必須在kubectl api-versions中  
kind: Deployment  # 指定創(chuàng)建資源的角色/類型   
metadata:  # 資源的元數(shù)據(jù)/屬性 
  name: demo  # 資源的名字糊渊,在同一個(gè)namespace中必須唯一
  namespace: default # 部署在哪個(gè)namespace中
  labels:  # 設(shè)定資源的標(biāo)簽
    app: demo
    version: stable
spec: # 資源規(guī)范字段
  replicas: 1 # 聲明副本數(shù)目
  revisionHistoryLimit: 3 # 保留歷史版本
  selector: # 選擇器
    matchLabels: # 匹配標(biāo)簽
      app: demo
      version: stable
  strategy: # 策略
    rollingUpdate: # 滾動(dòng)更新
      maxSurge: 30% # 最大額外可以存在的副本數(shù),可以為百分比再来,也可以為整數(shù)
      maxUnavailable: 30% # 示在更新過程中能夠進(jìn)入不可用狀態(tài)的 Pod 的最大值磷瘤,可以為百分比,也可以為整數(shù)
    type: RollingUpdate # 滾動(dòng)更新策略
  template: # 模版
    metadata: # 資源的元數(shù)據(jù)/屬性 
      annotations: # 自定義注解列表
        sidecar.istio.io/inject: "false" # 自定義注解名字
      labels: # 設(shè)定資源的標(biāo)簽
        app: demo
        version: stable
    spec: # 資源規(guī)范字段
      containers:
      - name: demo # 容器的名字   
        image: demo:v1 # 容器使用的鏡像地址   
        imagePullPolicy: IfNotPresent # 每次Pod啟動(dòng)拉取鏡像策略针炉,三個(gè)選擇 Always扳抽、Never、IfNotPresent
                                      # Always镰烧,每次都檢查楞陷;Never,每次都不檢查(不管本地是否有)结执;IfNotPresent,如果本地有就不檢查懂傀,如果沒有就拉取 
        resources: # 資源管理
          limits: # 最大使用
            cpu: 300m # CPU蜡感,1核心 = 1000m
            memory: 500Mi # 內(nèi)存,1G = 1000Mi
          requests:  # 容器運(yùn)行時(shí)铸敏,最低資源需求,也就是說最少需要多少資源容器才能正常運(yùn)行
            cpu: 100m
            memory: 100Mi
        livenessProbe: # pod 內(nèi)部健康檢查的設(shè)置
          httpGet: # 通過httpget檢查健康,返回200-399之間蒙具,則認(rèn)為容器正常
            path: /healthCheck # URI地址
            port: 8080 # 端口
            scheme: HTTP # 協(xié)議
            # host: 127.0.0.1 # 主機(jī)地址
          initialDelaySeconds: 30 # 表明第一次檢測在容器啟動(dòng)后多長時(shí)間后開始
          timeoutSeconds: 5 # 檢測的超時(shí)時(shí)間
          periodSeconds: 30 # 檢查間隔時(shí)間
          successThreshold: 1 # 成功門檻
          failureThreshold: 5 # 失敗門檻朽肥,連接失敗5次,pod殺掉篱昔,重啟一個(gè)新的pod
        readinessProbe: # Pod 準(zhǔn)備服務(wù)健康檢查設(shè)置
          httpGet:
            path: /healthCheck
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 5
        #也可以用這種方法   
        #exec: 執(zhí)行命令的方法進(jìn)行監(jiān)測州刽,如果其退出碼不為0浪箭,則認(rèn)為容器正常   
        #  command:   
        #    - cat   
        #    - /tmp/health   
        #也可以用這種方法   
        #tcpSocket: # 通過tcpSocket檢查健康  
        #  port: number 
        ports:
          - name: http # 名稱
            containerPort: 8080 # 容器開發(fā)對外的端口 
            protocol: TCP # 協(xié)議
      imagePullSecrets: # 鏡像倉庫拉取密鑰
        - name: harbor-certification
      affinity: # 親和性調(diào)試
        nodeAffinity: # 節(jié)點(diǎn)親和力
          requiredDuringSchedulingIgnoredDuringExecution: # pod 必須部署到滿足條件的節(jié)點(diǎn)上
            nodeSelectorTerms: # 節(jié)點(diǎn)滿足任何一個(gè)條件就可以
            - matchExpressions: # 有多個(gè)選項(xiàng),則只有同時(shí)滿足這些邏輯選項(xiàng)的節(jié)點(diǎn)才能運(yùn)行 pod
              - key: beta.kubernetes.io/arch
                operator: In
                values:
                - amd64

Service yaml 名詞解釋:

apiVersion: v1 # 指定api版本匹表,此值必須在kubectl api-versions中 
kind: Service # 指定創(chuàng)建資源的角色/類型 
metadata: # 資源的元數(shù)據(jù)/屬性
  name: demo # 資源的名字宣鄙,在同一個(gè)namespace中必須唯一
  namespace: default # 部署在哪個(gè)namespace中
  labels: # 設(shè)定資源的標(biāo)簽
    app: demo
spec: # 資源規(guī)范字段
  type: ClusterIP # ClusterIP 類型
  ports:
    - port: 8080 # service 端口
      targetPort: http # 容器暴露的端口
      protocol: TCP # 協(xié)議
      name: http # 端口名稱
  selector: # 選擇器
    app: demo

參考鏈接

本文由 YP小站 發(fā)布冻晤!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末明也,一起剝皮案震驚了整個(gè)濱河市惯裕,隨后出現(xiàn)的幾起案子绣硝,更是在濱河造成了極大的恐慌鹉胖,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠铲,死亡現(xiàn)場離奇詭異寂诱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瓢棒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門丘喻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泉粉,“玉大人,你說我怎么就攤上這事嗡靡∵辞” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵酣难,是天一觀的道長黑滴。 經(jīng)常有香客問我,道長菜谣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮冈敛,結(jié)果婚禮上抓谴,老公的妹妹穿的比我還像新娘。我一直安慰自己癌压,他們只是感情好滩届,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布丐吓。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汹碱。 梳的紋絲不亂的頭發(fā)上咳促,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天跪腹,我揣著相機(jī)與錄音,去河邊找鬼屯阀。 笑死轴术,一個(gè)胖子當(dāng)著我的面吹牛逗栽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼决记!你這毒婦竟也來了悠栓?” 一聲冷哼從身側(cè)響起惭适,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎往枷,沒想到半個(gè)月后凄杯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戒突,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膊存,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年隔崎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爵卒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖享幽,靈堂內(nèi)的尸體忽然破棺而出值桩,到底是詐尸還是另有隱情,我是刑警寧澤携栋,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布鸯隅,位于F島的核電站向挖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跟畅。R本人自食惡果不足惜徊件,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一虱痕、第九天 我趴在偏房一處隱蔽的房頂上張望部翘。 院中可真熱鬧略就,春花似錦晃酒、人聲如沸贝次。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掏父。三九已至爵政,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掺出。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汤锨,地道東北人双抽。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像泥畅,于是被迫代替她去往敵國和親荠诬。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351

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