【云原生之K8S】Yaml文件详解

2023-10-30

目录

一、K8S支持的文件格式

1.1、yaml和json的主要区别

二、YAML

2.1、查看API资源版本标签

2.2、编写资源配置清单

编写nginx-test.yaml资源配置清单

创建资源对象

查看创建的pod资源

2.3、创建service服务对外提供访问并测试

编写nginx-svc-test.yaml文件

创建资源对象

三、详解K8S中的Port

四、试运行生成yaml模板后创建实例

4.1、-dry-run:试运行

4.2、查看生成yaml格式

4.3、查看生成json格式

4.4、使用yaml格式导出生成模板

4.5、使用yaml模板创建实例


一、K8S支持的文件格式

kubernetes支持YAML和JSON文件格式管理资源对象

  1. JSON格式:主要用于api接口之间消息的传递
  2. YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读。

1.1、yaml和json的主要区别

  1. Yaml使用空格缩进,这是Python开发人员熟悉的领域
  2. JavaScript开发人员喜欢Json,因为它是JavaScript的一个子集,可以直接再JavaScript中解释和编写,同时使用简写方式声明Json,在使用没有空格的典型变量名时,不需要键中的双引号。
  3. 有很多解释器在Yaml和Json的所有语言中都能很好地工作
  4. 在许多情况下,Yaml地空白格式可以更容易查看,因为格式化需要更人性化地方法
  5. 如果您的编辑器中没有空格可见或缩进线指示符,那么 YAML 的空白虽然更紧凑,更容易查看,但可能难以手动编辑
  6. JSON 的序列化和反序列化要快得多,因为要检查的功能明显少于 YAML,这使得更小更轻的代码能够处理 JSON。
  7. 一个常见的误解是 YAML 需要较少的标点符号并且比 JSON更紧凑,但这完全是错误的。空格是不可见的,所以看起来字符较少,但是如果你计算实际的空格是必要的,以便正确解释 YAML以及正确的缩进,你会发现 YAML 实际上需要比 JSON 更多的字符。JSON不使用空格来表示层次结构或分组,并且可以通过删除不必要的空格来轻松展平,以实现更紧凑的传输

二、YAML

2.1、查看API资源版本标签

kubectl api-versions

2.2、编写资源配置清单

编写nginx-test.yaml资源配置清单

vim nginx-test.yaml
 
#指定api版本标签
apiVersion: apps/v1
#定义资源的类型/角色,deployment为副本控制器
#此处资源类型可以是Deployment、Job、Ingress、Service等
kind: Deployment
#定义资源的元数据信息,比如资源的名称、namespace、标签等信息
metadata:
#定义资源的名称,在同一个namespace空间中必须是唯一的
  name: nginx-deployment
  labels:
    app: nginx
#定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
spec:
#定义副本数量
  replicas: 3
#定义标签选择器
  selector:
#定义匹配标签
    matchLabels:
#需与后面的.spec.template.metadata.labels定义的标签保持一致
      app: nginx
#定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
  template:
    metadata:
#定义Pod副本将使用的标签,需与前面的.spec.selector.matchLabels定义的标签保持一致
      labels:
        app: nginx
    spec:
#定义容器属性
      containers:
#定义一个容器名,一个-name:定义一个容器
      - name: nginx
#定义容器使用的镜像以及版本
        image: nginx:1.15.4
        ports:
#定义容器对外的端口
        - containerPort: 80
 
#------------------------------------------------------------------#
#无注释
apiVersion: apps/v1
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.15.4
        ports:
        - containerPort: 80
 

创建资源对象

kubectl create -f nginx-test.yaml --validate=false

查看创建的pod资源

2.3、创建service服务对外提供访问并测试

编写nginx-svc-test.yaml文件

[root@master ~]# vim nginx-svc-test.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
  labels:
    app: nginx
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
  selector:
#此处定义的selector要与deployment所定义的selector相同
#service依靠标签选择器来检索提供服务的nodes
    app: nginx

创建资源对象

kubectl create -f nginx-svc-test.yaml
kubectl get svc

访问测试

三、详解K8S中的Port

 port

  • port 是 k8s 集群内部访问 service 的端口,即通过 clusterIP:port 可以从 Pod 所在的 Node上访问到service

nodePort

  • nodePort 是外部访问 k8s 集群中 service 的端口,通过 nodeIP:nodePort 可以从外部访问到service

targetPort

  • targetPort 是 Pod 的端口,从 port 或 nodePort 来的流量经过 kube-proxy反向代理负载均衡转发到后端 Pod 的 targetPort 上,最后进入容器

containerPort

  • containerPort 是 Pod 内部容器的端口,targetPort 映射到 containerPort

四、试运行生成yaml模板后创建实例

4.1、-dry-run:试运行

–dry-run:表示试运行,不真正执行命令(测试命令是否正确),即并不会真的创建出 pod 和 deployment 实例,去掉该参数后即可真正执行命令。

kubectl create deployment dryrun-test --image=nginx --port=80 --replicas=3 --dry-run
#打印相应的 API 对象而不执行创建

4.2、查看生成yaml格式

使用 --dry-run 试运行可不触发生成命令,然后通过 -o yaml 可实现对其 yaml 资源配置清单的查看

kubectl run dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o yaml

4.3、查看生成json格式

 可通过 -o json 查看该命令产生的 json 配置清单

kubectl run dryrun-test --image=nginx --port=80 --replicas=3 --dry-run -o json

4.4、使用yaml格式导出生成模板

4.5、使用yaml模板创建实例

kubectl apply -f dryrun-test.yaml
kubectl get pod,deploy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云原生之K8S】Yaml文件详解 的相关文章

随机推荐

  • 腾讯音乐第三道编程题

    2023 4 13号的第三道编程笔试题 题目描述 给一个数字n 构成n n 1 2大小的数组 包含1个1 2个2 n个n 最后输出的数组相邻的两个数字不相同 输出的数组可能不唯一 例如 输入 4 输出 4 3 4 3 4 3 4 2 1 2
  • 【项目实战】C语言+easyX带你实现:找方块

    每天一个编程小项目 提升你的编程能力 程序介绍 该程序是仿照最近网上的找方块游戏编写的 虽然没有仿照的一模一样 但是也实现了他的一些功能 个人觉得可玩性还是挺高的 是一个不错的娱乐放松的游戏 编写简介 该游戏的编写还是挺容易的 可以大致分为
  • echarts 柱状图颜色设置

    作者 船长在船上 主页 来访地址船长在船上的博客 简介 高级前端开发工程师 专注前端开发 欢迎咨询交流 共同学习 感谢 如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题 可以关注 支持一下博主 如果三连收藏支持就会更好 在这里博
  • 初识C语言函数(一)

    1 函数是什么 在计算机科学中 子程序 英语 Subroutine procedure function routine method subprogram callable unit 是一个大型程序中的某部分代码 由一个或多个语句块组成
  • a+b 的简单问题

    a b problem 添加链接描述 include
  • React Hooks学习--useReducer,useMemo和useRef

    一 useReducer function ReducerDemo const count dispatch useReducer state action gt switch action case add return state 1
  • H5 缓存机制浅析 - 移动端 Web 加载性能优化

    腾讯 Bugly 特约作者 贺辉超 1 H5 缓存机制介绍 H5 即 HTML5 是新一代的 HTML 标准 加入很多新的特性 离线存储 也可称为缓存机制 是其中一个非常重要的特性 H5 引入的离线存储 这意味着 web 应用可进行缓存 并
  • U盘产生快捷方式病毒

    u盘不小心染了病毒 文件都变成了快捷方式 真实的源文件都变成了隐藏文件 看着这么多快捷方式真是不开心 这个病毒的机制也很简单 它在u盘里放了一个survival vbe文件 就感染了u盘 然后在电脑的c盘放两个survival vbe文件
  • SSH使用篇:Windows登录Ubuntu虚拟机&设置免密登录

    目录 一 ssh的安装与启动 1 安装 2 启动服务器的SSH服务 二 口令登录 1 登录命令 2 验证过程 3 登录失败 1 服务器变更 2 服务器IP变化 三 免密登录 公钥登录 大致的三步 0 准备工作 不一定要弄 1 客户端生成公私
  • 【java】获取属性名工具

    背景 在编码时经常会用到同名的属性名字符串 比如 用相同的属性名做为 map 中的键 在 mybatis 中 根据属性名的下划线字符串来拼接 sql 查询条件 需要修改属性名时 如果是用字符串硬编码的 引用的地方越多 修改越困难 但是如果用
  • 某团面试题:JVM 堆内存溢出后,其他线程是否可继续工作?

    转载注明 http dwz win gHc最近网上出现一个美团面试题 一个线程OOM后 其他线程还能运行吗 我看网上出现了很多不靠谱的答案 这道题其实很有难度 涉及的知识点有jvm内存分配 作用域 gc等 不是简单的是与否的问题 由于题目中
  • 向日葵远程控制端 for Mac

    向日葵远程控制端 for Mac是Mac平台上一款免费的远程桌面控制软件 向日葵远程控制软件免费版支持Mac OS X 10 10 3以上系统 相比客户端的向日葵远程软件 这款控制端功能更加齐全 向日葵客户端仅支持远程桌面 而向日葵控制端则
  • 虚拟主机也是虚拟服务器,虚拟主机和云主机之间的区别是什么

    其实在云计算不断发展的今天 虚拟主机和云主机之间的竞争 也越来越强烈了 此时不少人问虚拟主机和云主机之间的区别是什么 小编表示目前云主机在市场的应用中的优势越来越明显了 很多个人站长和企业们 也都是会使用云主机 因此大家就不妨看看虚拟主机和
  • MIPI CSI接口调试方法: data rate计算

    mipi DPHY 的规格书里对 data rate 有定义上下限值 最低 data rate为 80M bps 最高为 2500M bps 由于mipi 传输时是双采样 这样的话 实际的差分时钟的上下限就是 40MHz 1250 MHz
  • mac 安装adb工具

    1 安装homebrew 在终端输入下面的命令 ruby e curl fsSL https raw githubusercontent com Homebrew install master install 2 安装adb brew in
  • conda install & pip install区别 & 查看当前环境下包的情况

    conda可以方便开发管理python环境 包可以conda 安装有时使用pip整理一下不同点 conda 创建环境 conda create name a conda env python 3 6 名为a conda env python
  • SVG图标配置

    在开发项目的时候我们经常会用到svg矢量图 而且我们使用SVG以后 页面上加载的不再是图片资源 这对页面性能来说也是个很大的提升 项目背景 vue3 vite ts 安装依赖 npm install vite plugin svg icon
  • 202320读书笔记|《宋词》——竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生

    202320读书笔记 宋词 竹杖芒鞋轻胜马 谁怕 一蓑烟雨任平生 宋词 韩震主编 偶然从书友那加入书架的书 宋词挺喜欢李清照的词以及知否的 菩萨蛮 诗集 词 俳句 短歌我都很喜欢 是轻松有趣又简短的 这本书里有一些是上学时候背过的 看到的时
  • log4j2 入门学习与总结

    log4j2 2 3 入门学习与总结 大纲 log4j2 配置文件加载 log4j2 配置文件结构图 log4j2 配置文件说明 log4j2 Appenders child Filter ThresholdFilter 的使用 log4j
  • 【云原生之K8S】Yaml文件详解

    目录 一 K8S支持的文件格式 1 1 yaml和json的主要区别 二 YAML 2 1 查看API资源版本标签 2 2 编写资源配置清单 编写nginx test yaml资源配置清单 创建资源对象 查看创建的pod资源 2 3 创建s