yaml文件格式说明及编写教程

1、ymal介绍
k8s是容器编排引擎,使用yaml来编排部署应用
特点:1、缩进表示层级关系
           2、不支持制表符“tab”缩进,需要使用空格缩进
           3、通常开头缩进两个空格
           4、关键词字符后缩进一个空格,比如冒号与逗号后面需要缩进一个字符
           5、“---”表示YAML格式,一个文件的开始
            6、“#”表示注释
以下yaml为例
等同于
 kubectl create deployment web --image=lizhenliang/java-demo --replicas=3 -n default

2、编写示例yaml
在使用中我们可能存在API版本不一致导致报错,可以通过命令查看版本
kubectl api-resources |grep Deployment
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
查看服务
成功
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内容不能直接在其他k8s环境中使用,在其他环境中使用的话要进行一些删除,要删除的内容如下:
剩余的内容则是一个标准yaml,可以直接使用也可以用作模板修改
3.3关键词提醒
kubectl explain pods.spec.containers
kubectl explain deployment
3.4官网查找
直接在官网搜索关键词,官方会给演示示例
官网地址:
  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C++中读写YAML文件,您可以使用第三方库来处理YAML格式。以下是使用`yaml-cpp`库读写YAML文件的简单示例: 首先,您需要安装`yaml-cpp`库。您可以从https://github.com/jbeder/yaml-cpp下载源代码,并根据其提供的说明进行安装。 接下来,您可以使用以下代码示例来读取YAML文件: ```cpp #include <iostream> #include <fstream> #include <yaml-cpp/yaml.h> int main() { // 打开YAML文件 std::ifstream file("example.yaml"); // 解析YAML文件 YAML::Node config = YAML::Load(file); // 读取YAML中的数据 std::string name = config["name"].as<std::string>(); int age = config["age"].as<int>(); // 打印读取的数据 std::cout << "Name: " << name << std::endl; std::cout << "Age: " << age << std::endl; return 0; } ``` 在上面的示例中,我们打开了名为`example.yaml`的YAML文件,并使用`YAML::Load`函数解析了文件内容。然后,我们可以使用`[]`操作符来访问读取的数据,并使用`as`函数将其转换为适当的类型。 如果您想要将数据写入YAML文件,可以使用以下代码示例: ```cpp #include <iostream> #include <fstream> #include <yaml-cpp/yaml.h> int main() { // 创建一个YAML节点 YAML::Node config; config["name"] = "John"; config["age"] = 25; // 打开要写入的YAML文件 std::ofstream file("output.yaml"); // 将YAML节点写入文件 file << config; return 0; } ``` 在上面的示例中,我们创建了一个名为`config`的YAML节点,并设置了两个属性。然后,我们打开了名为`output.yaml`的文件,并使用`<<`操作符将YAML节点写入文件。 这些示例演示了如何使用`yaml-cpp`库在C++中读写YAML文件。请确保在编译时链接`yaml-cpp`库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值