kubernetes YAML文件的使用

01 YAML文件介紹

      K8S在啟動Pod的時候,會使用yaml文件的方式來啟動,今天我們來看看YAML文件最常用的格式。

      YAML的語法和JSON語法很像,都是通過key-value形式來組織的,它可以表示list、dict等常用數據類型,它的後綴一般使用”.yml”,它有如下幾個特點:

1、大小寫敏感

2、使用縮進表示遞進關系

3、縮進不允許使用tab,隻允許使用空格

4、縮進的空格數不重要,隻要相同層級的元素左側對齊即可,這一點類似Python語法

5、使用”#”來表示註釋

6、key-value結構用{}包圍,list結構用[]包圍

YAML—key-value類型

a、使用key:value的方式來表示,key和value中間需要一個空格,否則會報錯;

b、如果有層級關系,可以通過下面兩種方法來表示:

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類型

以-開頭表示一個數組,如下:

- A
- B
- C

表示成數組是:[A,B,C]

下面是一個稍微復雜點兒的例子

students:
    -
        id: 1
        name: zhangsan
        age: 12
    -
        id: 2
        name: lisi
        age: 15

表示成數組是:
students:[{id: 1,name: zhangsan,age: 12},{id: 2,name: lisi,age: 15}]

數組中的元素又是一個key-value結構的dict

一段Json和一段Yaml的對比:

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的關系

     Master的架構圖:

其中:

API Server提供瞭HTTP Rest接口,它是k8s中的所有資源增刪改查的唯一入口,也是集群控制的入口;

Scheduler是負責資源調度的進程;

Controller Manager是所有資源對象的自動化控制中心;

Etcd提供資源對象的數據保存服務

    K8S使用Master節點和Node節點部署的方式來管理整個集群,Master節點、Node節點和Pod的關系使用官方的結構圖來說明比較貼切:

可以看到,Master和Node之間有直接的通信交互過程,而Pod是部署在Node上的,簡單理解,就是:

Master是一臺服務器,有固定的IP地址

Node是一臺服務器,有固定的IP地址

Pod是Node上的一個進程,有一個虛擬的IP地址,有可能和Node IP地址相同,也有可能不同。

而我們知道,一個Pod中可以有多個容器,如果再加上容器,就會變成下面的樣子:

他們之間的調用關系簡單來說就是:

當Pod被創建的時候,它的信息就會被放入Master的Etcd存儲,隨後這些創建Pod的信息會被K8S調度到某個Node上,並進行綁定,然後該Pod它所在的Node上的kubelet進程實例化成一組相關的Docker容器並啟動起來。

以上就是kubernetes YAML文件的使用的詳細內容,更多關於kubernetes YAML文件的資料請關註WalkonNet其它相關文章!