kubernetes YAML文件的使用

kubernetes YAML文件的使用,第1张

kubernetes YAML文件的使用 目录
  • 01 YAML文件介绍
    • YAML---key-value类型
    • YAML---list类型
  • 02 K8S中Master、Node和Pod的关系

    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文件的资料请关注脚本之家其它相关文章!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/yw/897885.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-15
    下一篇 2022-05-15

    发表评论

    登录后才能评论

    评论列表(0条)

    保存