欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

易懂指南:YAML文件的格式和撰写教程

最编程 2024-02-14 12:01:01
...

建议使用3A服务器来搭建好玩的实验,比较方便

 

1、ymal介绍

k8s是容器编排引擎,使用yaml来编排部署应用

特点:1、缩进表示层级关系

           2、不支持制表符“tab”缩进,需要使用空格缩进

           3、通常开头缩进两个空格

           4、关键词字符后缩进一个空格,比如冒号与逗号后面需要缩进一个字符

           5、“---”表示YAML格式,一个文件的开始

            6、“#”表示注释

以下yaml为例

image.png

等同于

 kubectl create deployment web --image=lizhenliang/java-demo --replicas=3 -n default

2、编写示例yaml

在使用中我们可能存在API版本不一致导致报错,可以通过命令查看版本

kubectl api-resources |grep Deployment

image.png

1、其中,标签一般定义两个,由项目与应用组成,#键:值 可任意定义。例如

project:ec

app: portal

2、matchLabels必须与下面的labels保持一致,否则apply会报错

例如下面这个创建deployment的yaml

`kind: Deployment

metadata:

  name: web666

  namespace: team-a

spec:

  replicas: 3

  selector:

    matchLabels:

      project: ec

      app: portal

  template:

    metadata:

      labels:

        project: ec

        app: portal

    spec:

      containers:

      - name: web

        image: lizhenliang/java-demo:latest`

其中,标签可以为两个,他是以键值对的方式存储,但matchLabels的值必须与labels相等,不相等会创建报错,而service是以标签来控制pod

           replicas为副本数,image为拉取镜像名

2、创建service

apiVersion: v1

kind: Service

metadata:

  name: web666

  namespace: team-a

spec:

  ports:

  - port: 80

    protocol: TCP

    targetPort: 8080

  selector:

    project: ec

    app: portal

  type: NodePort

标签与命名空间要确保与deployment一致

执行两个yaml文件


kubectl apply -f deployment.yaml

 

kubectl apply -f service.yam

查看服务

image.png

成功

3、快速生成yaml文件

直接手写yaml比较麻烦,而且容易出错,所以有提供以下方式获取标准yaml文件并修改

3.1生成新yaml

1、通过命令获取yaml,可以通过创建服务的命令后面加 --dry-run=client -o yaml 来提取yaml,再根据获取到的yaml进行修改即可

例如

kubectl create deployment java-demo --image=nginx:1.20 -n team-a --dry-run=client -o yaml

他会输出yaml,加重定向导出即可,其中,creationTimestamp与status: {}可以删除

apiVersion: apps/v1

kind: Deployment

metadata:

  creationTimestamp: null

  labels:

    app: java-demo

  name: java-demo

  namespace: team-a

spec:

  replicas: 1

  selector:

    matchLabels:

      app: java-demo

  strategy: {}

  template:

    metadata:

      creationTimestamp: null

      labels:

        app: java-demo

    spec:

      containers:

      - image: nginx:1.20

        name: java-demo

        resources: {}

status: {}

3.2 将已有的服务yaml导出

k8s支持将正在运行的服务的yaml文件导出,使用get命令加-o yaml即可(xxx为服务名)

kubectl get deployment xxx -o yaml

上一篇: 深入解析Yaml文件

下一篇: YAML-基础

推荐阅读