当前位置: 首页 > news >正文

YAML资源清单

目录

YAML资源清单

(一)YAML 语言

(1)基本语法

(2)支持的数据结构

(二)通过资源清单管理容器资源

YAML 语法格式:

创建Service资源清单

(三)使用kubectl命令创建yaml模板

1、创建deployment模板

2、查看创建的模板

3、创建tomcat容器资源

4、查看创建状态

5、创建service模板

6、编辑service模板

7、创建service资源

8、查看创建状态

9、访问测试:


YAML资源清单

        在 Kubernetes 中可以使用 YAML 格式的文件来创建符合预期期望的 Pod,这样的YAML 文件一般称之为资源清单。

(一)YAML 语言

        YAML 语言是一个可读性高,用来表达数据序列的语言格式。YAML 是"YAMLAin't a MarkupLanguage"(YAML 不是一种标记语言)的递归缩写。在开发这个语言时,YAML 的意思其实是:"YetAnother Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

(1)基本语法

·缩进时不允许使用 Tab 键,只允许使用空格;

·缩进的空格数目不重要,只要相同层级的元素左侧对齐即可;

·# 用于标识注释,从这个字符一直到行尾,都会被解释器忽略。

(2)支持的数据结构

·对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/ 字典(dictionary);

·数组:一组按次序排列的值,又称为序列(sequence)/ 列表(list);

·纯量(scalars):单个的、不可再分的值字符串。包括布尔值、整数、浮点数、Null、时间、日期。

(二)通过资源清单管理容器资源

        前面介绍了使用 kubectl 命令创建容器资源方法。基于这种命令方式创建容器资源,优点在于简单直观快捷、上手比较快,适合临时测试或实验。除了 kubectl 命令方式创建资源之外,还可以通过 YAML 配置文件来创建容器资源。

        基于 YAML 配置文件创建容器资源的方式,优点在于配置文件提供了创建资源的模板,能够重复部署,可以像管理代码一样管理部署,适合正式的、跨环境的、规模化部署。

YAML 语法格式:

·缩进标识层级关系;

·不支持制表符(Tab键)缩进,使用空格缩进;

·通常开头缩进两个空格;

·字符后缩进一个空格,如冒号、逗号等;

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

·“#”表示注释。

        通过 kubectl api-versions 查看以 group/version 的格式显示服务器所支持的 API 版本。

[root@k8s-master ~]# kubectl api-versions

 

        在创建 Deployment 资源清单之前先创建 demo 目录,用于存放资源清单的文件。在创建的 nginx-deployment.yaml 资源清单中,定义以下信息。

kind:指定资源类型为 deployment;

metadata:为元数据对象;

name:指定资源 deployment 的名称;

labels:为标签,定义标签选择器为 app: nginx,和 template 定义的遥相呼应,目的在于明确标识对象的属性。启动 Pod 的时候,通过 nodeSelector 指定要调度到的 node 节点的标签;

spec:为详细定义对象;

replicas:定义副本数为 3;

matchLabels :用 于定 义一 组 Label , 与直 接写 在 Selector 中 作用 相同 。

matchExpression :用于定义一组基于集合的筛选条件,可用的条件运算符包括:In、NotIn、Exists 和 DoesNotExist;

template:为模板,这里是 Pod 的定义。定义标签选择器为 app: nginx,容器名称为 nginx,为镜像 1.19.6,对外暴露的端口为 80。

apiVersion: apps/v1 #指定API版本

kind: Deployment #指定资源类型

metadata: #指定属性

  name: nginx-deployment #指定名称

  labels: #定义标签

    app: nginx

spec: #定义详细信息

  replicas: 3 #指定副本数量

  selector: #定义选择器信息

    matchLabels:

      app: nginx

  template: #指定模板

    metadata:

      labels:

        app: nginx

    spec: #定义容器信息

      containers:

      - name: nginx

        image: nginx:1.19.6

        ports:

        - containerPort: 80

[root@k8s-master ~]# mkdir k8s

[root@k8s-master ~]# cd k8s

[root@k8s-master k8s]# vim nginx-deployment.yaml

        创建完 Deployment 的资源清单之后,使用 create 执行资源清单来创建容器。通过 get pods 可以查看到 Pod 容器资源已经自动创建完成。

[root@k8s-master k8s]# kubectl create -f nginx-deployment.yaml

[root@k8s-master k8s]# kubectl get pods

 

创建Service资源清单

        在创建的 nginx-service 资源清单中,定义名称为 nginx-service 的 Service、标签选择器为 app: nginx、type 为 NodePort 指明外部流量可以访问内部容器。在 ports 中定义暴露的端口库号列表,对外暴露访问的端口是 80,容器内部的端口也是 80。

[root@k8s-master k8s]# vim nginx-service.yaml[root@k8s-master k8s]# kubectl create -f nginx-service.yamlservice/nginx-service created[root@k8s-master k8s]# kubectl get svc[root@k8s-master k8s]# kubectl get gods

 

访问测试

[root@k8s-master ~]# elinks --dump http://192.168.100.131:32112

[root@k8s-master ~]# elinks --dump http://192.168.100.132:32112

[root@k8s-master ~]# elinks --dump http://192.168.100.133:32112

 

        Ps备注:创建Service资源清单时。记得一定要有pods的存在,也就是要有服务,才可以暴露端口,不然会出现下列情况!

[root@k8s-master k8s]# kubectl create -f nginx-service.yaml

[root@k8s-master k8s]# kubectl get gods

 

访问测试,访问不成功!因为没有nginx服务存在!

 

(三)使用kubectl命令创建yaml模板

1、创建deployment模板

[root@k8s-master ~]# kubectl create deployment tomcat --image=tomcat:8 -o yaml --dry-run > tomcat-deployment.yaml

 

2、查看创建的模板

[root@k8s-master ~]# vim tomcat-deployment.yaml

 

3、创建tomcat容器资源

[root@k8s-master ~]# kubectl create -f tomcat-deployment.yaml

 

4、查看创建状态

[root@k8s-master ~]# kubectl get pod

5、创建service模板

[root@k8s-master ~]# kubectl expose deployment tomcat --port=8080 --target-port=8080 --type=NodePort -o yaml --dry-run >tomcat_service.yaml

 

6、编辑service模板

[root@k8s-master ~]# vim tomcat_service.yaml

 

7、创建service资源

[root@k8s-master ~]# kubectl create -f tomcat_service.yaml

8、查看创建状态

[root@k8s-master ~]# kubectl get svc

 

9、访问测试:

 

 

相关文章:

YAML资源清单

目录 YAML资源清单 (一)YAML 语言 (1)基本语法 (2)支持的数据结构 (二)通过资源清单管理容器资源 YAML 语法格式: 创建Service资源清单 (三&#xff…...

数据分析两件套ClickHouse+Metabase(二)

Metabase篇 Metabase安装部署 任何问题请查看 -> 官方文档 jar包从GitHub下载 -> 地址 同样有个问题, 默认数据源里没有ClickHouse, 不过ClickHouse官方提供了插件包 -> 插件包 在安装metabase目录下新建一个plugins文件夹, 把下载的clickhouse.metabase-driver.ja…...

神经网络基础-神经网络补充概念-20-激活函数

概念 激活函数是神经网络中的一个重要组成部分,它引入了非线性性质,使得神经网络可以学习和表示更复杂的函数关系。激活函数对于将输入信号转换为输出信号起到了关键作用,它在神经元的计算过程中引入了非线性变换。 几种常见的激活函数及其…...

欧拉函数和最大公约数

分析:如果两个数的最大公约数是一个质数p,那么这两个数都除以p,得到的两个数的最大公约数一定是1. 反证法:如果得到的两个数的最大公约数不是1,那么把此时的最大公约数乘以上边的最大公约数,得到的一定比上…...

出牌游戏(game)

安徽省2016年信息学竞赛试题(小学组) 题目描述 Description 小学生卡卡西最喜欢的电影是哈利波特,她一直幻想着自己可以进入神奇的魔法世界,今年暑假的一个傍晚,一只猫头鹰带着一封神秘的邀请函来到了她的家中,邀请函里是一张车…...

踩坑---uni-app中@input 事件不生效

在开发的时候遇到这么一种情况,我们希望input输入框的值是范围是0-100或者保留两位小数之类的,当你输入时处理后的结果却不生效,但是试过很多办法发现都实现不了,最后是按照以下方法解决的,问题原因是uni-app会延时,导致输入的结果…...

Linux命令(66)之tar

linux命令之tar 1.tar介绍 linux命令tar是压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀为tar。与其它linux命令不同的是,tar命令的用户为linux的所有用户。 2.tar用法 tar [参数] [fliename.压缩打包后缀] [filename] ta…...

零拷贝详解

1、在没有DMA技术之前的I/O过程是这样的: CPU发出对应的指令给磁盘控制器,然后返回磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区,然后产生中断CPU收到中断信号后,停下手…...

新能源汽车电控系统

新能源汽车电控系统主要分为:三电系统电控系统、高压系统电控系统、低压系统电控系统 三电系统电控系统 包括整车控制器、电池管理系统、驱动电机控制器等。 整车控制器VCU 整车控制器作为电动汽车中央控制单元,是整个控制系统的核心,也是…...

Azure概念介绍

云计算定义 云计算是一种使用网络进行存储和处理数据的计算方式。它通过将数据和应用程序存储在云端服务器上,使用户能够通过互联网访问和使用这些资源,而无需依赖于本地硬件和软件。 发展历史 云计算的概念最早可以追溯到20世纪60年代的时候&#x…...

Zabbix监控MySQL数据库实战

zabbix监控mysql的方式 只是安装agent 启用模板监控 启用自定义脚本的模板监控 使用zabbix模版及结合shell脚本监控mysql 创建mysql的zabbix授权用户 mysql> grant all PRIVILEGES on *.* to zabbixlocalhost identified by zabbix; ###创建一个有权限的访问用户lqb密码设…...

代理模式(Java实现)

代理模式是常见的设计模式之一,顾名思义,代理模式就是代理对象具备真实对象的功能,并代替真实对象完成相应操作,并能够在操作执行的前后,对操作进行增强处理。(为真实对象提供代理,然后供其他对…...

炬芯科技发布全新第二代智能手表芯片,引领腕上新趋势!

2023年7月,炬芯科技宣布全新第二代智能手表芯片正式发布。自2021年底炬芯科技推出第一代的智能手表芯片开始便快速获得了市场广泛认可和品牌客户的普遍好评。随着技术的不断创新和突破,为了更加精准地满足市场多元化的变幻和用户日益增长的体验需求&…...

Linux学习之iptables规则基本演示

cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810,uname -r看到内核版本是3.10.0-957.el7.x86_64,iptables --version可以看到iptables版本是v1.4.21。 iptables的filter表 iptables -t filter 命令 规则链 规则 动作是iptables的…...

探索Python编程的技巧:多线程魔法、网络舞台、正则魔法阵与递归迷宫

一 多线程 1.1 进程和线程 进程: 就是一个程序,运行在系统之上,称这个程序为一个运行进程,并分配进程ID方便系统管理。线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作&…...

uniapp-微信小程序篇

uniapp-微信小程序篇 一、创建项目(以Vue3TS 项目为示例) 可以通过命令行的方式创建也可以通过HBuilderX进行创建(通过HBuilderX创建的项目建议选择最简单的模板),个人建议使用命令行方式。 (1) 命令行方式: npx degit dcloudio…...

使用pymupdf实现PDF内容搜索并显示功能

简介: 在日常工作和学习中,我们可能需要查找和提取PDF文件中的特定内容。本文将介绍如何使用Python编程语言和wxPython图形用户界面库来实现一个简单的PDF内容搜索工具。我们将使用PyMuPDF模块来处理PDF文件,并结合wxPython构建一个用户友好的…...

Dalsa线阵相机说明(Linea Color GigESeries 2k and 4K)

文章目录 一. Dalsa相机软件整体架构二. 相机编号说明以及软件要求三. 相机硬件参数三. 相机基本参数四. 软件参数设置列表1. Sensor Control Category2. I/O Control Category3. Counter and Timer Control Category4. Advanced Processing Control Category(1) 平场校正介绍(…...

图神经网络 day2 图的分类

图神经网络基础算法 1 GCN2 GraphSAGE2.1 采样:采样固定长度的邻居2.2 聚合2.3 GraphSAGE_minibatch2.4 GraphSAGE_embedding 3 GAT4. 图网络的分类4.1 递归图神经网络 RGNN4.2 图卷积神经网络GCN4.3 图注意力网络 GAT4.4 图自动编码 GAE4.5 图时空网络 GSTN4.6 图生…...

CentOS防火墙操作:开启端口、开启、关闭、配置

一、基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 : systemctl enable firewalld systemctl是…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...