目錄
- 01 YAML文件介紹
- YAML---key-value類(lèi)型
- YAML---list類(lèi)型
- 02 K8S中Master、Node和Pod的關(guān)系
01 YAML文件介紹
K8S在啟動(dòng)Pod的時(shí)候,會(huì)使用yaml文件的方式來(lái)啟動(dòng),今天我們來(lái)看看YAML文件最常用的格式。
YAML的語(yǔ)法和JSON語(yǔ)法很像,都是通過(guò)key-value形式來(lái)組織的,它可以表示list、dict等常用數(shù)據(jù)類(lèi)型,它的后綴一般使用".yml",它有如下幾個(gè)特點(diǎn):
1、大小寫(xiě)敏感
2、使用縮進(jìn)表示遞進(jìn)關(guān)系
3、縮進(jìn)不允許使用tab,只允許使用空格
4、縮進(jìn)的空格數(shù)不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可,這一點(diǎn)類(lèi)似Python語(yǔ)法
5、使用"#"來(lái)表示注釋
6、key-value結(jié)構(gòu)用{}包圍,list結(jié)構(gòu)用[]包圍
YAML---key-value類(lèi)型
a、使用key:value的方式來(lái)表示,key和value中間需要一個(gè)空格,否則會(huì)報(bào)錯(cuò);
b、如果有層級(jí)關(guān)系,可以通過(guò)下面兩種方法來(lái)表示:
key:{key1: value1,key2: value1}
或者
key:
key1:value1
key2:value2
c、表示一個(gè)key-value格式,其中value是一個(gè)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類(lèi)型
以-開(kāi)頭表示一個(gè)數(shù)組,如下:
- A
- B
- C
表示成數(shù)組是:[A,B,C]
下面是一個(gè)稍微復(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ù)組中的元素又是一個(gè)key-value結(jié)構(gòu)的dict
一段Json和一段Yaml的對(duì)比:
yaml格式的文件
nodes:
- name: jobE
type: command
config:
command: echo "This is job E"
dependsOn:
- jobD
- name: jobD
type: command
config:
command: echo "This is job D"
dependsOn:
- jobA
- jobB
- jobC
表示成json格式就是:
{
"nodes":[
{
"name":"jobE",
"type":"command",
"config":{
"command":"echo \"This is job E\""
},
"dependsOn":[
"jobD"
]
},
{
"name":"jobD",
"type":"command",
"config":{
"command":"echo \"This is job D\""
},
"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是所有資源對(duì)象的自動(dòng)化控制中心;
Etcd提供資源對(duì)象的數(shù)據(jù)保存服務(wù)
K8S使用Master節(jié)點(diǎn)和Node節(jié)點(diǎn)部署的方式來(lái)管理整個(gè)集群,Master節(jié)點(diǎn)、Node節(jié)點(diǎn)和Pod的關(guān)系使用官方的結(jié)構(gòu)圖來(lái)說(shuō)明比較貼切:
可以看到,Master和Node之間有直接的通信交互過(guò)程,而Pod是部署在Node上的,簡(jiǎn)單理解,就是:
Master是一臺(tái)服務(wù)器,有固定的IP地址
Node是一臺(tái)服務(wù)器,有固定的IP地址
Pod是Node上的一個(gè)進(jìn)程,有一個(gè)虛擬的IP地址,有可能和Node IP地址相同,也有可能不同。
而我們知道,一個(gè)Pod中可以有多個(gè)容器,如果再加上容器,就會(huì)變成下面的樣子:
他們之間的調(diào)用關(guān)系簡(jiǎn)單來(lái)說(shuō)就是:
當(dāng)Pod被創(chuàng)建的時(shí)候,它的信息就會(huì)被放入Master的Etcd存儲(chǔ),隨后這些創(chuàng)建Pod的信息會(huì)被K8S調(diào)度到某個(gè)Node上,并進(jìn)行綁定,然后該P(yáng)od它所在的Node上的kubelet進(jìn)程實(shí)例化成一組相關(guān)的Docker容器并啟動(dòng)起來(lái)。
以上就是kubernetes YAML文件的使用的詳細(xì)內(nèi)容,更多關(guān)于kubernetes YAML文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!