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


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

    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官网查找

    直接在官网搜索关键词,官方会给演示示例

    官网地址:

    https://kubernetes.io/zh/docs/home/Kubernetes

  • 相关阅读:
    [论文必备]最强科研绘图分析工具Origin(2)——简单使用教程
    JAVA-7大设计原则【简介】
    嵌入式软件组件经典架构与存储器分类
    程序员不撰写代码注释和文档的十大理由
    【Linux】腾讯云服务器Linux环境搭载
    Golang开发--interface的使用
    基于JAVA校园超话网站计算机毕业设计源码+数据库+lw文档+系统+部署
    基于java web技术的班级同学录网站-计算机毕业设计
    自定义Feign的配置
    《Java并发编程的艺术》读书笔记 - 第二章 - Java并发机制的底层实现原理
  • 原文地址:https://blog.csdn.net/m0_72838865/article/details/126662414