K8S Yaml 文件

K8S 里所有的資源或者配置文件都可以用 yaml 或 Json 定義。YAML 是一個(gè) JSON/ 的超集,任何有效 JSON 文件也都是一個(gè)有效的YAML文件。

Yaml 語(yǔ)法規(guī)范

  1. 用縮進(jìn)表示層級(jí)關(guān)系,一般用 2 個(gè)或者 4個(gè)空格(類(lèi)似 python 語(yǔ)法)
  2. 不允許使用 Tab 鍵拍霜,只允許使用空格

K8S Yaml 示例

---
apiVersion: v1
kind: Pod
metadata:
  name: kube100-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: flaskapp-demo
      image: jcdemo/flaskapp
      ports:
        - containerPort: 5000

K8S Yaml 詳細(xì)說(shuō)明


K8S Yaml 配置文件主要分為基本標(biāo)簽、元數(shù)據(jù)標(biāo)簽薪介、資源內(nèi)容 3 個(gè)部分

基本標(biāo)簽

apiVersion: v1 #必選祠饺,版本號(hào),例如v1
kind: Pod #必選汁政,Pod

元數(shù)據(jù)標(biāo)簽
metadata:       #必選道偷,元數(shù)據(jù)
  name: string       #必選,Pod名稱(chēng)
  namespace: string    #必選记劈,Pod所屬的命名空間
  labels:      #自定義標(biāo)簽
    - name: string     #自定義標(biāo)簽名字
  annotations:       #自定義注釋列表
    - name: string
內(nèi)容標(biāo)簽
spec:         #必選勺鸦,Pod中容器的詳細(xì)定義
  containers:      #必選,Pod中容器列表
  - name: string     #必選目木,容器名稱(chēng)
    image: string    #必選换途,容器的鏡像名稱(chēng)
    imagePullPolicy: [Always | Never | IfNotPresent] #獲取鏡像的策略 Alawys表示下載鏡像 IfnotPresent表示優(yōu)先使用本地鏡像,否則下載鏡像刽射,Nerver表示僅使用本地鏡像
    command: [string]    #容器的啟動(dòng)命令列表军拟,如不指定,使用打包時(shí)使用的啟動(dòng)命令
    args: [string]     #容器的啟動(dòng)命令參數(shù)列表
    workingDir: string     #容器的工作目錄
    volumeMounts:    #掛載到容器內(nèi)部的存儲(chǔ)卷配置
    - name: string     #引用pod定義的共享存儲(chǔ)卷的名稱(chēng)誓禁,需用volumes[]部分定義的的卷名
      mountPath: string    #存儲(chǔ)卷在容器內(nèi)mount的絕對(duì)路徑懈息,應(yīng)少于512字符
      readOnly: boolean    #是否為只讀模式
    ports:       #需要暴露的端口庫(kù)號(hào)列表
    - name: string     #端口號(hào)名稱(chēng)
      containerPort: int   #容器需要監(jiān)聽(tīng)的端口號(hào)
      hostPort: int    #容器所在主機(jī)需要監(jiān)聽(tīng)的端口號(hào),默認(rèn)與Container相同
      protocol: string     #端口協(xié)議现横,支持TCP和UDP漓拾,默認(rèn)TCP
    env:       #容器運(yùn)行前需設(shè)置的環(huán)境變量列表
    - name: string     #環(huán)境變量名稱(chēng)
      value: string    #環(huán)境變量的值
    resources:       #資源限制和請(qǐng)求的設(shè)置
      limits:      #資源限制的設(shè)置
        cpu: string    #Cpu的限制阁最,單位為core數(shù)戒祠,將用于docker run --cpu-shares參數(shù)
        memory: string     #內(nèi)存限制沸伏,單位可以為Mib/Gib造虏,將用于docker run --memory參數(shù)
      requests:      #資源請(qǐng)求的設(shè)置
        cpu: string    #Cpu請(qǐng)求拙已,容器啟動(dòng)的初始可用數(shù)量
        memory: string     #內(nèi)存清楚漱牵,容器啟動(dòng)的初始可用數(shù)量
    livenessProbe:     #對(duì)Pod內(nèi)個(gè)容器健康檢查的設(shè)置拼卵,當(dāng)探測(cè)無(wú)響應(yīng)幾次后將自動(dòng)重啟該容器硕并,檢查方法有exec纳猪、httpGet和tcpSocket陋葡,對(duì)一個(gè)容器只需設(shè)置其中一種方法即可
      exec:      #對(duì)Pod容器內(nèi)檢查方式設(shè)置為exec方式
        command: [string]  #exec方式需要制定的命令或腳本
      httpGet:       #對(duì)Pod內(nèi)個(gè)容器健康檢查方法設(shè)置為HttpGet,需要制定Path救拉、port
        path: string
        port: number
        host: string
        scheme: string
        HttpHeaders:
        - name: string
          value: string
      tcpSocket:     #對(duì)Pod內(nèi)個(gè)容器健康檢查方式設(shè)置為tcpSocket方式
         port: number
       initialDelaySeconds: 0  #容器啟動(dòng)完成后首次探測(cè)的時(shí)間难审,單位為秒
       timeoutSeconds: 0   #對(duì)容器健康檢查探測(cè)等待響應(yīng)的超時(shí)時(shí)間,單位秒亿絮,默認(rèn)1秒
       periodSeconds: 0    #對(duì)容器監(jiān)控檢查的定期探測(cè)時(shí)間設(shè)置告喊,單位秒,默認(rèn)10秒一次
       successThreshold: 0
       failureThreshold: 0
       securityContext:
         privileged:false
    restartPolicy: [Always | Never | OnFailure]#Pod的重啟策略派昧,Always表示一旦不管以何種方式終止運(yùn)行黔姜,kubelet都將重啟,OnFailure表示只有Pod以非0退出碼退出才重啟蒂萎,Nerver表示不再重啟該P(yáng)od
    nodeSelector: obeject  #設(shè)置NodeSelector表示將該P(yáng)od調(diào)度到包含這個(gè)label的node上秆吵,以key:value的格式指定
    imagePullSecrets:    #Pull鏡像時(shí)使用的secret名稱(chēng),以key:secretkey格式指定
    - name: string
    hostNetwork:false      #是否使用主機(jī)網(wǎng)絡(luò)模式五慈,默認(rèn)為false纳寂,如果設(shè)置為true,表示使用宿主機(jī)網(wǎng)絡(luò)
    volumes:       #在該pod上定義共享存儲(chǔ)卷列表
    - name: string     #共享存儲(chǔ)卷名稱(chēng) (volumes類(lèi)型有很多種)
      emptyDir: {}     #類(lèi)型為emtyDir的存儲(chǔ)卷泻拦,與Pod同生命周期的一個(gè)臨時(shí)目錄烈疚。為空值
      hostPath: string     #類(lèi)型為hostPath的存儲(chǔ)卷,表示掛載Pod所在宿主機(jī)的目錄
        path: string     #Pod所在宿主機(jī)的目錄聪轿,將被用于同期中mount的目錄
      secret:      #類(lèi)型為secret的存儲(chǔ)卷爷肝,掛載集群與定義的secre對(duì)象到容器內(nèi)部
        scretname: string  
        items:     
        - key: string
          path: string
      configMap:     #類(lèi)型為configMap的存儲(chǔ)卷,掛載預(yù)定義的configMap對(duì)象到容器內(nèi)部
        name: string
        items:
        - key: string
          path: string

附A:Pod 三種重啟策略

Always:當(dāng)容器終止退出后陆错,總是重啟容器灯抛,默認(rèn)策略。
OnFailure:當(dāng)容器異常退出(退出狀態(tài)碼非0)時(shí)音瓷,才重啟容器对嚼。
Never:當(dāng)容器終止退出,從不重啟容器绳慎。
示例:test-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  labels:
     os: ubuntu
spec:
  containers:
  - name: hello
    image: ubuntu:14.04
    env:
    - name: Test
      value: "123456"
    command: ["bash","-c","while true;do date;sleep 1;done"]
  restartPolicy: OnFailure

附A:Deployment

Deployment 是 K8S 1.2的新功能

應(yīng)用場(chǎng)景
  • 1.部署一個(gè)新的應(yīng)用程序
  • 2.實(shí)現(xiàn)滾動(dòng)更新纵竖、灰度發(fā)布
  • 3.部署應(yīng)用時(shí)如果出現(xiàn)問(wèn)題,能夠回滾到之前的版本
    示例: nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.12.2
        ports:
        - containerPort: 80
創(chuàng)建 depolyment

創(chuàng)建 deployment 說(shuō)明:

kubectl create -f deployment_nginx.yml
kubectl get deployment -o wide
kubectl get rs
kubectl get pods
升級(jí)應(yīng)用
#更新APP-執(zhí)行滾動(dòng)更新
#滾動(dòng)更新允許增量更新新的Pods實(shí)例杏愤,部署的更新以零宕機(jī)時(shí)間進(jìn)行靡砌。新的Pod將在具有可用資源的節(jié)點(diǎn)上進(jìn)行調(diào)度。
kubectl set image deployment nginx-deployment nginx=nginx:1.13
回滾應(yīng)用
#查看歷史版本
kubectl rollout history deployment nginx-deployment
#回滾到歷史版本
kubectl rollout undo deployment nginx-deployment
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末珊楼,一起剝皮案震驚了整個(gè)濱河市通殃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厕宗,老刑警劉巖画舌,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堕担,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡曲聂,警方通過(guò)查閱死者的電腦和手機(jī)霹购,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朋腋,“玉大人厕鹃,你說(shuō)我怎么就攤上這事≌д桑” “怎么了剂碴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)轻专。 經(jīng)常有香客問(wèn)我忆矛,道長(zhǎng),這世上最難降的妖魔是什么请垛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任催训,我火速辦了婚禮,結(jié)果婚禮上宗收,老公的妹妹穿的比我還像新娘漫拭。我一直安慰自己,他們只是感情好混稽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布采驻。 她就那樣靜靜地躺著,像睡著了一般匈勋。 火紅的嫁衣襯著肌膚如雪礼旅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天洽洁,我揣著相機(jī)與錄音痘系,去河邊找鬼。 笑死饿自,一個(gè)胖子當(dāng)著我的面吹牛汰翠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昭雌,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼复唤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了城豁?” 一聲冷哼從身側(cè)響起苟穆,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抄课,失蹤者是張志新(化名)和其女友劉穎唱星,沒(méi)想到半個(gè)月后雳旅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡间聊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年攒盈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哎榴。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡型豁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尚蝌,到底是詐尸還是另有隱情迎变,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布飘言,位于F島的核電站衣形,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姿鸿。R本人自食惡果不足惜谆吴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苛预。 院中可真熱鬧句狼,春花似錦、人聲如沸热某。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昔馋。三九已至芜繁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绒极,已是汗流浹背骏令。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留垄提,地道東北人榔袋。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铡俐,于是被迫代替她去往敵國(guó)和親凰兑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • 1审丘、基礎(chǔ)架構(gòu) 1.1 Master Master節(jié)點(diǎn)上面主要由四個(gè)模塊組成:APIServer吏够、scheduler...
    阿斯蒂芬2閱讀 10,863評(píng)論 0 44
  • 眾所周知,k8s 可以托管你的服務(wù) / 應(yīng)用,當(dāng)出現(xiàn)各種原因?qū)е履愕膽?yīng)用掛掉之后锅知,k8s 會(huì)自動(dòng)重啟你的服務(wù)播急,那么...
    HoPGoldy閱讀 5,968評(píng)論 3 16
  • 一、 K8s 是什么售睹? Kubernetes(k8s)是自動(dòng)化容器操作的開(kāi)源平臺(tái)桩警,這些操作包括部署,調(diào)度和節(jié)點(diǎn)集群...
    loveroot閱讀 6,640評(píng)論 1 21
  • 【利用K8S技術(shù)棧打造個(gè)人私有云系列文章目錄】 利用K8S技術(shù)棧打造個(gè)人私有云(連載之:初章) 利用K8S技術(shù)棧打...
    CodeSheep閱讀 13,159評(píng)論 6 41
  • 數(shù)不清是第幾天了昌妹,你開(kāi)始冷冷淡淡捶枢,我凄凄慘慘。其實(shí)也沒(méi)有這么悲情飞崖,可是突然有點(diǎn)失去了力量烂叔,不知道改如何表達(dá)我自己...
    super逗號(hào)閱讀 329評(píng)論 0 1