当前位置: 首页 > 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、访问测试:

 

 

http://www.lryc.cn/news/125255.html

相关文章:

  • 数据分析两件套ClickHouse+Metabase(二)
  • 神经网络基础-神经网络补充概念-20-激活函数
  • 欧拉函数和最大公约数
  • 出牌游戏(game)
  • 踩坑---uni-app中@input 事件不生效
  • Linux命令(66)之tar
  • 零拷贝详解
  • 新能源汽车电控系统
  • Azure概念介绍
  • Zabbix监控MySQL数据库实战
  • 代理模式(Java实现)
  • 炬芯科技发布全新第二代智能手表芯片,引领腕上新趋势!
  • Linux学习之iptables规则基本演示
  • 探索Python编程的技巧:多线程魔法、网络舞台、正则魔法阵与递归迷宫
  • uniapp-微信小程序篇
  • 使用pymupdf实现PDF内容搜索并显示功能
  • Dalsa线阵相机说明(Linea Color GigESeries 2k and 4K)
  • 图神经网络 day2 图的分类
  • CentOS防火墙操作:开启端口、开启、关闭、配置
  • Chromium 如何在c++里面控制扩展加载
  • 分类预测 | MATLAB实现MTBO-CNN多输入分类预测
  • 操作符和表达式求值
  • Unity Spine帧事件
  • AE使用(一)
  • YOLOv5、YOLOv8改进:MobileViT:轻量通用且适合移动端的视觉Transformer
  • 06-4_Qt 5.9 C++开发指南_MDI应用程序设计
  • 【SCI征稿】3区SCI,正刊,智能传感、机器学习、智能检测与测量等均可
  • 神经网络ANN(MLP),CNN以及RNN区别和应用
  • CUDA、cuDNN以及Pytorch介绍
  • 使用shift关键字,写一个带二级命令的脚本(如:docker run -a -b -c中的run)