前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「走进k8s」Kubernetes1.15.1配置软知识yaml(16)

「走进k8s」Kubernetes1.15.1配置软知识yaml(16)

作者头像
IT架构圈
发布2019-08-15 15:56:49
1.6K0
发布2019-08-15 15:56:49
举报
文章被收录于专栏:IT架构圈IT架构圈

上次说了在Kubernetes1.15.1上安全 Dashboard,也接触到了yaml文件,就是通过github下载dashboard.yaml安装dashboard。许多了解可能对yaml不是太熟悉,开发的接触最多的就是配置文件properties,但是在springboot官方也开始建议使用yml来进行配置。.

(一)YAML 基础

yml是什么鬼,今天我带你们来一探究竟。 YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) 一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。

  • ① 官网

https://yaml.org/

  • ②适应场景
  1. 脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用
  2. 序列化:YAML是由宿主语言数据类型直转,的比较适合做序列化。
  3. 配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
  • ③语言优点
  1. 易于人们阅读。
  2. 数据在编程语言之间是可移植的。
  3. 匹配敏捷语言的本机数据结构。
  4. 具有一致的模型来支持通用工具。
  5. 支持单程处理。
  6. 具有表现力和可扩展性。
  7. 易于实现和使用。
  • ④基本语法

1.大小写敏感。

2.使用缩进表示层级关系。

3.缩进时不允许使用Tab键,只允许使用空格。(可以通过编译器将tab键设置成2个空格或者4个空格)

4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。(使用一个空格缩进,都使用一个。使用二个空格缩进,都使用二个),建议还是2个空格,这样好看些。

5.# 表示注释,从这个字符一直到行尾,都会被解析器忽略。

6.破折号后面跟一个空格(a dash and space)表示列表

7.用冒号和空格表示键值对 key: value

  • ⑤解惑

有yaml 和yml 到底他们之前有什么区别?我来解答语法格式完全一样。就是文件名不一样,yaml是Kubernetes的配置文件。

  • ⑥值的写法

普通的值(数字1234567890,字符串"ssss"/null,布尔true/false )

1. k: v:字面直接来写;2. 字符串默认不用加上单引号或者双引号;

  1. "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 name: "idig8 \n com":输出;idig8换行com
  2. '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据 name: 'idig8\n com':输出;idig8\n com
(二)Kubernetes 中常用YAML格式(map,list)

http://www.bejson.com/validators/yaml/ 在线yml校验器

  • ①对象、Map(属性和值)(键值对)

第一行的---是分隔符,是可选的,在单一文件中,可用连续三个连字号---区分多个文件。这里我们可以看到,我们有两个键:friends,他们对应的值分别是:lastName: zhangsan 和 age: 20。

代码语言:javascript
复制
---
friends:
  lastName: zhangsan
  age: 20

针对这个json格式或许你对上面的 JSON 文件更熟悉,但是不得不说json是不是更麻烦些

代码语言:javascript
复制
{
  "friends":: {
    "lastName": "zhangsan",
    "age":20
  }
}
  • ②数组(List、Set)

说白了就是数组。用- 值表示数组中的一个元素。

代码语言:javascript
复制
pets:
 - pig
 - cat
 - dog

对应的json格式

代码语言:javascript
复制
{
    "pets": ["pig","cat", "dog"]
}
  • 数组List和Map的混合

来个混合的看看json和yml的对比

代码语言:javascript
复制
person:
    lastName: liming
    age: 34
    boss: false
    birth: 2019/08/03
    maps: {k1: v1,k2: 12}
    lists:
      - lisi
      - zhaoliu
    dog:
      name: 小狗
      age: 10

对应的json格式

代码语言:javascript
复制
{
    "person": {
        "lastName": "liming",
        "age": 34,
        "boss": false,
        "birth": "2019/08/03",
        "maps": {
            "k1": "v1",
            "k2": 12
        },
        "lists": [
            "lisi",
            "zhaoliu"
        ],
        "dog": {
            "name": "小狗",
            "age": 10
        }
    }
}

通过上边的对比很明显,yml要比json轻量很多。缩进就搞定了,不需要复杂的对照的大括号,中括号,双引号。

(三)Kubernetes 中 yaml的编写
  • ① kubernetes API文档

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.15

不要直接创建一个pod,要通过Deployment, Job, or StatefulSet.

  • ② 尝试编写一个pod的yaml
代码语言:javascript
复制
---
apiVersion: v1
kind: Pod
metadata:
  name: first-pod
  labels:
    app: bash
    tir: backend
spec:
  containers:
  - name: bash-container
    image: docker.io/busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
  • ③ 执行yaml查看
代码语言:javascript
复制
kubectl apply -f pod.yaml
kubectl describe first-pod

kubectl  get pods
  • ④ 登录dashboard

查看token

代码语言:javascript
复制
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/admin/{print $1}')

登录dashboard 输入token:https://192.168.86.101:32500/#!/login

查看到刚才通过命令的方式创建

查看容器详情:这个跟:kubectl describe first-pod 展示的内容是一致的

  • ④ 通过dashboard里面的yaml来生成pod

复制yaml文件格式进去

创建中

创建成功

PS:这次主要让大家了解yaml,也通过两种方式创建了pod。熟悉yaml的两种方式Map和List。下次一起pod,重点还是通过官方api来学习。看一手资料。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一)YAML 基础
  • (二)Kubernetes 中常用YAML格式(map,list)
  • (三)Kubernetes 中 yaml的编写
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档