kubernetes YAML文件的使用
01 YAML文件介紹
K8S在啟動Pod的時候,會使用yaml文件的方式來啟動,今天我們來看看YAML文件最常用的格式。
YAML的語法和JSON語法很像,都是通過key-value形式來組織的,它可以表示list、dict等常用數(shù)據(jù)類型,它的后綴一般使用".yml",它有如下幾個特點(diǎn):
1、大小寫敏感
2、使用縮進(jìn)表示遞進(jìn)關(guān)系
3、縮進(jìn)不允許使用tab,只允許使用空格
4、縮進(jìn)的空格數(shù)不重要,只要相同層級的元素左側(cè)對齊即可,這一點(diǎn)類似Python語法
5、使用"#"來表示注釋
6、key-value結(jié)構(gòu)用{}包圍,list結(jié)構(gòu)用[]包圍
YAML---key-value類型
a、使用key:value的方式來表示,key和value中間需要一個空格,否則會報錯;
b、如果有層級關(guān)系,可以通過下面兩種方法來表示:
key:{key1: value1,key2: value1} 或者 key: key1:value1 key2:value2
c、表示一個key-value格式,其中value是一個dict
websites: YAML:yaml.org Ruby:ruby-lang.org Python:python.org Perl:use.perl.org 表示成json格式就是: websites:{ YAML:'yaml.org', Ruby:'ruby-lang.org', Python:'python.org', Perl:'use.perl.org' }
YAML---list類型
以-開頭表示一個數(shù)組,如下:
-A -B -C 表示成數(shù)組是:[A,B,C]
下面是一個稍微復(fù)雜點(diǎn)兒的例子
students: - id:1 name:zhangsan age:12 - id:2 name:lisi age:15 表示成數(shù)組是: students:[{id:1,name:zhangsan,age:12},{id:2,name:lisi,age:15}] 數(shù)組中的元素又是一個key-value結(jié)構(gòu)的dict
一段Json和一段Yaml的對比:
yaml格式的文件 nodes: -name:jobE type:command config: command:echo"ThisisjobE" dependsOn: -jobD -name:jobD type:command config: command:echo"ThisisjobD" dependsOn: -jobA -jobB -jobC 表示成json格式就是: { "nodes":[ { "name":"jobE", "type":"command", "config":{ "command":"echo\"ThisisjobE\"" }, "dependsOn":[ "jobD" ] }, { "name":"jobD", "type":"command", "config":{ "command":"echo\"ThisisjobD\"" }, "dependsOn":[ "jobA", "jobB", "jobC" ] } ] }
02 K8S中Master、Node和Pod的關(guān)系
Master的架構(gòu)圖:
其中:
API Server提供了HTTP Rest接口,它是k8s中的所有資源增刪改查的唯一入口,也是集群控制的入口;
Scheduler是負(fù)責(zé)資源調(diào)度的進(jìn)程;
Controller Manager是所有資源對象的自動化控制中心;
Etcd提供資源對象的數(shù)據(jù)保存服務(wù)
K8S使用Master節(jié)點(diǎn)和Node節(jié)點(diǎn)部署的方式來管理整個集群,Master節(jié)點(diǎn)、Node節(jié)點(diǎn)和Pod的關(guān)系使用官方的結(jié)構(gòu)圖來說明比較貼切:
可以看到,Master和Node之間有直接的通信交互過程,而Pod是部署在Node上的,簡單理解,就是:
Master是一臺服務(wù)器,有固定的IP地址
Node是一臺服務(wù)器,有固定的IP地址
Pod是Node上的一個進(jìn)程,有一個虛擬的IP地址,有可能和Node IP地址相同,也有可能不同。
而我們知道,一個Pod中可以有多個容器,如果再加上容器,就會變成下面的樣子:
他們之間的調(diào)用關(guān)系簡單來說就是:
當(dāng)Pod被創(chuàng)建的時候,它的信息就會被放入Master的Etcd存儲,隨后這些創(chuàng)建Pod的信息會被K8S調(diào)度到某個Node上,并進(jìn)行綁定,然后該P(yáng)od它所在的Node上的kubelet進(jìn)程實(shí)例化成一組相關(guān)的Docker容器并啟動起來。
以上就是kubernetes YAML文件的使用的詳細(xì)內(nèi)容,更多關(guān)于kubernetes YAML文件的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。