Deployment yaml文件包含四個部分:
apiVersion: 表示版本
kind: 表示資源
metadata: 表示元信息
spec: 資源規(guī)范字段
apiVersion: apps/v1 # 指定api版本
kind: Deployment? # 指定創(chuàng)建資源的角色/類型?
metadata:? # 資源的元數(shù)據(jù)/屬性
? name: demo? # 資源的名字,在同一個namespace中必須唯一
? namespace: default # 部署在哪個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: # 滾動更新
? ? ? maxSurge: 30% # 最大額外可以存在的副本數(shù),可以為百分比,也可以為整數(shù)
? ? ? maxUnavailable: 30% # 示在更新過程中能夠進(jìn)入不可用狀態(tài)的 Pod 的最大值,可以為百分比,也可以為整數(shù)
? ? type: RollingUpdate # 滾動更新策略
? 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啟動拉取鏡像策略,三個選擇 Always、Never、IfNotPresent
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # Always,每次都檢查;Never,每次都不檢查(不管本地是否有);IfNotPresent,如果本地有就不檢查,如果沒有就拉取
? ? ? ? resources: # 資源管理
? ? ? ? ? limits: # 最大使用
? ? ? ? ? ? cpu: 300m # CPU,1核心 = 1000m
? ? ? ? ? ? memory: 500Mi # 內(nèi)存,1G = 1024Mi
? ? ? ? ? requests:? # 容器運行時,最低資源需求,也就是說最少需要多少資源容器才能正常運行
? ? ? ? ? ? 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 # 主機地址
? ? ? ? ? initialDelaySeconds: 30 # 表明第一次檢測在容器啟動后多長時間后開始
? ? ? ? ? timeoutSeconds: 5 # 檢測的超時時間
? ? ? ? ? periodSeconds: 30 # 檢查間隔時間
? ? ? ? ? successThreshold: 1 # 成功門檻
? ? ? ? ? failureThreshold: 5 # 失敗門檻,連接失敗5次,pod殺掉,重啟一個新的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é)點親和力
? ? ? ? ? requiredDuringSchedulingIgnoredDuringExecution: # pod 必須部署到滿足條件的節(jié)點上
? ? ? ? ? ? nodeSelectorTerms: # 節(jié)點滿足任何一個條件就可以
? ? ? ? ? ? - matchExpressions: # 有多個選項,則只有同時滿足這些邏輯選項的節(jié)點才能運行 pod
? ? ? ? ? ? ? - key: beta.kubernetes.io/arch
? ? ? ? ? ? ? ? operator: In
? ? ? ? ? ? ? ? values:
? ? ? ? ? ? ? ? - amd64