• 【云原生 • Kubernetes】一文深入理解资源编排 - yaml 文件



    在这里插入图片描述


    1. yaml 文件概述

    Kubernetes 集群中对资源管理和资源对象的编排部署可以通过声明样式(yaml)文件的方式来解决,把需要对资源对象的操作都编辑到 yaml 格式的文件中,这种文件叫做 资源清单文件。通过 kubectl 命令可以直接使用资源清单文件实现对大量的资源对象进行编排和部署。

    2. yaml 文件书写格式

    yaml 的可读性非常高,它是用来表达 数据序列 的格式。它本身仍是一种 标记语言,但这种语言是以数据为中心,而不是以标记语言为中心。

    yaml 文件基本语法如下:

    • 使用空格作为缩进;
    • 缩进的空格数自定,但要求相同层级的元素左侧对齐;
    • 一般开头缩进两个空格,字符后面也要缩进一个空格;
    • 低版本缩进时不能用 Tab 键,只能用空格键;
    • 使用 # 标识注释,从这个字符处开始到行尾,都会被解释器忽略;
    • 使用一个 - 代表普通的格式,使用三个 - 则代表以下开始书写新的 yaml 文件。

    3. yaml 文件组成部分及字段含义

    通常在一个完整的 yaml 文件中,包含两个部分,控制示例被控制的对象。文件中必须存在的属性有如下几个:

    字段含义
    apiVersionAPI 版本,可使用 kubectl api-version 命令查看
    kindyaml 文件定义的资源类型和角色,如 pod 等
    metadata元数据对象
    spec详细定义对象
    replicas副本数量
    selector标签选择器
    templatePod 模板
    metadataPod 元数据
    specPod 规格
    containers容器配置

    如下是一个最基本的完整的 yaml 文件模板:

    #第一部分:控制器示例
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
      namespace: default
    spec:
      replicas: 3
      selector: 
        matchLabels: 
          app: nginx
    #第二部分:被控制的对象
      template:
        metadata:
          labels:
            app: nginx	
        spec:
          containers:
          - name: nginx
            image: nginx
            ports: 
            - containerPort: 80
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    4. 如何快速编写 yaml 文件

    在实际开发过程中,如果说让我们从零开始编写一个完整的 yaml 文件出来,还是有一定难度的,至少字段以及格式上就很难保证不出错。手写是不现实的,所以我们通常需要通过一定的方式 快速生成yaml文件

    • 方法一:kubectl create 生成

    如下,我使用 kubectl create 命令创建一个名为 web 的 deployment 资源,但是不让它真正创建,而是生成一个 yaml 文件;

    kubectl create deployment web --image=nginx -o yaml --dry-run
    
    • 1

    –dry-run:尝试运行,不真正运行。

    运行结果如下:

    在这里插入图片描述

    可以看到 yaml 文件已经生成,包含了所有字段以及格式,之后对它进行复制修改即可。此过程并未在集群中执行,而仅仅是以 yaml 文件的形式输出了,我们索取需要的文件内容和格式即可。

    为了更加方便,我们也可以直接将生成的 yaml 文件内容输入到某一个文件当中,之后修改文件内容,如下;

    kubectl create deployment web --image=nginx -o yaml --dry-run > ma.yaml
    
    • 1

    在这里插入图片描述

    • 方法二:kubectl get 导出

    此方法适用于已经部署好的项目中,将项目中的 yaml 文件导出。在这里我先查看以下集群中已经部署的项目资源;

    在这里插入图片描述

    以操作 nginx 资源为例,将 nginx 资源相关内容以 yaml 格式导出并输入到 ma2.yaml 文件中,命令如下:

    kubectl get deploy nginx -o=yaml --export > ma2.yaml
    
    • 1

    执行结果如下,ma2.yaml 文件已生成:

    在这里插入图片描述

  • 相关阅读:
    leetcode74 搜索二维矩阵
    Android 性能优化之UI优化思路,有80%的开发者不知道~
    sonic-ios-bridge(sib)使用
    walking机器人仿真教程-深度学习-使用yolov5进行物体识别
    鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决
    什么知识库工具适合小团队?看看文档管理系统+NAS的最新解决方案
    Node编写用户登录接口
    基于VS2019编程实现的导弹惯性导航仿真导弹
    指针(三)- 二级指针、野指针、空指针
    缓冲区“l”(大小为 24 字节)将溢出;4 字节将在偏移 24 时开始写入
  • 原文地址:https://blog.csdn.net/weixin_53072519/article/details/126806805