(kubernetes yaml文件|--dry-run导出yaml文件

news2024/11/27 20:32:15

kubernetes yaml文件|--dry-run导出yaml文件

  • YAML 语法格式:
  • 二 查看 api 资源版本标签
  • 三 写一个nignx.yaml文件demo
  • 四、编写service服务的资源清单
  • 详解k8s中的port
  • 五 用–dry-run命令生成yaml资源清单
  • 六 将现有的资源生成模板导出
  • 写yaml太累怎么办?

YAML 语法格式:

1 大小写敏感
2 使用缩进表示层级关系
3 不支持Tab键制表符缩进,只使用空格缩进
4 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
5 符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
6 “---”表示YAML格式,一个文件的开始,用于分隔文件间
7  #号 表示注释

二 查看 api 资源版本标签

kubectl api-versions

admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1 #如果是业务场景一般首选使用 apps/v1
apps/v1beta1 #带有beta字样的代表的是测试版本,不用在生产环境中
apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
batch/v1
batch/v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1beta1
events.k8s.io/v1beta1
extensions/v1beta1
networking.k8s.io/v1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

三 写一个nignx.yaml文件demo

mkdir /opt/demo
cd demo/
 
vim nginx-deployment.yaml 
apiVersion: apps/v1                                          #指定api版本标签
kind: Deployment                                             
#定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等                  
metadata:                                                    #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: nginx01                                              #定义资源的名称,在同一个namespace空间中必须是唯一的
  labels:                                                    #定义资源标签(Pod的标签)
    app: nginx01                                             #这里标签由metadata使用
spec:                                                        #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  replicas: 3                                                #定义副本数量
  selector:                                                  #定义标签选择器            
    matchLabels:                                             #定义匹配标签      
      app: nginx01                                           #匹配下面的标签,需与.spec.template.metadata.labels定义的标签一致,为pod标签            
  template:                                                  #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
    metadata:   
      labels:                                                #定义pod副本将使用的标签,需与.spec.selector.matchLabels定义的标签保持一致
        app: nginx01
    spec:
      containers:                                            #定义容器属性  
      - name: nginx01                                        #定义一个容器名,一个 name: 定义一个容器
        image: nginx:1.15                                    #定义容器使用的镜像以及版本
        ports:
        - containerPort: 80                                  #定义容器的对外的端口
 
#创建资源对象
kubectl create -f nginx-deployment.yaml
 
#查看创建的pod资源
kubectl get pods -o wide

在这里插入图片描述
请添加图片描述

四、编写service服务的资源清单

vim nginx-server.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx01-service
  labels:
    app: nginx
spec:
  type: NodePort
  ports:
  - port: 4399
    targetPort: 80
  selector:
   app: nginx01                                             #使用的pod标签与其相关联
#创建资源对象
kubectl create -f nginx-server.yaml
 
#查看创建的service
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

五 用–dry-run命令生成yaml资源清单

kubectl run --dry-run 打印相应的 API 对象试运行而不执行创建
kubectl run nginx-02 --image=nginx --port=80 --replicas=3 --dry-run
查看生成yaml格式
kubectl run nginx-02 --image=nginx --port=80 --replicas=3 --dry-run -o yaml
 
查看生成json格式
kubectl run nginx-02 --image=nginx --port=80 --replicas=3 --dry-run -o json
 
 
 
使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl run nginx-02 --image=nginx --port=80 --replicas=3 --dry-run -o yaml > nginx.yaml
 
vim nginx.yaml                             #删除不必要的参数
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: nginx-02
  name: nginx-02
spec:
  replicas: 2
  selector:
    matchLabels:
      run: nginx-02
  template:
    metadata:
      labels:
        run: nginx-02
spec:
  containers:
  - image: nginx
    name: nginx-02
    ports:
    - containerPort: 80	
创建资源对象
kubectl create -f nginx.yaml
 
查看创建的service
kubectl get pods

请添加图片描述
请添加图片描述
请添加图片描述

六 将现有的资源生成模板导出

将现有的资源生成模板导出
kubectl get deployment nginx  -o yaml
 
#导出保存到文件中可以删除多余配置
kubectl get deployment nginx  -o yaml > aaa.yaml
vim aaa.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "2"
  generation: 1
  labels:
    run: nginx03
  name: nginx03
spec:
  progressDeadlineSeconds: 600
  replicas: 3
  selector:
    matchLabels:
      run: nginx03
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        run: nginx03
    spec:
      containers:
      - image: nginx:1.15
        imagePullPolicy: IfNotPresent
        name: nginx03
        ports:
        - containerPort: 80
          protocol: TCP
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
 
#创建资源对象
kubectl create -f aaa.yaml
 
#查看创建的service
kubectl get pods

请添加图片描述
请添加图片描述
请添加图片描述

写yaml太累怎么办?

1 用 --dry-run 命令生成
kubectl run my-deploy --image=nginx --dry-run=client -o yaml > my-deploy.yaml

2 用get命令导出
kubectl get svc nginx-service -o yaml > my-svc.yaml
或
kubectl edit svc nginx-service  #复制配置,再粘贴到新文件

3 yaml文件的学习方法:
(1)多看别人(官方)写的,能读懂
(2)能照着现场的文件改着用
(3)遇到不懂的,善用kubectl explain ... 命令查

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/533367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】1. Linux常见指令

专栏导读 🍁作者简介:余悸,在读本科生一枚,致力于 C方向学习。 🍁收录于 C 专栏,本专栏主要内容为 C 初阶、 C 进阶、 STL 详解等,持续更新中! 🍁相关专栏推荐&#xff1…

社会关系抽取赛题提交指南

社会关系抽取赛题提交指南 一、赛题背景 本次主要为大家介绍社会科学计算大赛的赛题之一---社会关系抽取。 1.技术发展 关系抽取(Relationship Extraction, RE)是信息抽取的一个重要任务,其目标是从文本中抽取实体之间的关系。RE技术发展历程主要有以下几个阶段:1. 规则与模…

初窥机器视觉与卷积神经网络

文章目录 1. 什么是卷积神经网络2. 卷积运算3. 池化层4. 卷积神经网络的整体架构 1. 什么是卷积神经网络 卷积神经网络(convolutional neural network,CNN)主要用于计算机视觉相关任务,但处理对象并不局限于图像,CNN在序列和语音等上的应用也…

2023年陕西省《网络建设与运维》技能大赛试题

项目简介: 某集团公司原在北京建立了总公司,后在成都建立了分公司,广东设立了办事处。集团设有产品、营销、法务、财务、人力5个部门,全网采用OSPF、RIP、ISIS、BGP路由协议进行互联互通。集团在北京建立两个数据中心,贵州建立异地灾备数据中心。 公司网络拓扑如图1所示,…

功能要进阶自动化测试,你必须要了解的十大自动化测试框架

什么是自动化测试框架? 自动化测试框架,即是应用于自动化测试所用的框架。按照框架的定义,自动化测试框架要么是提供可重用的基础自动化测试模块,如:selenium 、watir等,它们主要提供最基础的自动化测试…

【Python入门篇】——Python中循环语句(while循环的嵌套应用,嵌套案例)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

监控系统经典架构详解

要了解一个监控系统那么我们就先要了解他的架构,看看监控系统是由哪些模块组成,各个模块是如何相互协调。我们将众多主流监控系统架构进行逻辑抽象和概括。 典型架构 从上图(监控系统经典架构图)来看,从左往右&#x…

Android RecyclerView实现吸顶动态效果

文章目录 一、ItemDecoration二、实现RecyclerView吸顶效果1、实现一个简单的RecyclerView2、通过ItemDecoration画分割线3、画出每个分组的组名4、实现吸顶效果 完整demo 链接:https://download.csdn.net/download/JasonXu94/87786702 一、ItemDecoration ItemDecoration 允…

python实现学生成绩管理程序,包含各科成绩的录入,计算各个学生的总分和平均分,统计各个科目的最高分、最低分和平均分。

一、编程题目 编程题目:使用python实现学生各科成绩的录入,计算各个学生的总分和平均分,统计各个科目的最高分、最低分和平均分。其中学生人数通过输入来决定,科目包括语文、数学和英语这三门课程。(保留一位小数&…

JavaEE 5 (4/28)

1.wait() 和notify() 调用wait后做的三件事 1.释放锁 2.等待其他线程通知 3.收到通知后重新上锁,继续执行 要想实用wait和notify就得搭配synchronized 获取锁 wait哪个对象就要针对哪个对象加锁 Java中线程是随机抢占式执行的,实际上线程的执行我们一定要有一个顺序. join可以…

阿里云服务器可以做什么?十大使用场景举例说明

使用阿里云服务器可以做什么?阿里云百科分享使用阿里云服务器常用的十大使用场景,说是十大场景实际上用途有很多,阿里云百科分享常见的云服务器使用场景,如本地搭建ChatGPT、个人网站或博客、运维测试、学习Linux、跑Python、小程…

【2023秋招】2023华为od-4.20三道题

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&…

【刷题之路Ⅱ】LeetCode 622. 设计循环队列

LeetCode 622. 设计循环队列 一、题目描述二、解题1、方案1——数组实现,预留一个空判满1.1、成环思路1.2、初始化接口1.3、入队接口1.4、出队接口1.5、取队头接口1.6、取队尾接口1.7、判空接口1.8、判满接口1.9、释放接口 2、方案2——单向循环链表实现&#xff0c…

SpringBoot集成Oracle实战和坑

这里写目录标题 前言1.导包2. 配置文件:数据库信息辟谣 3.代码 问题更新 前言 前段时间搞了一个oracle的项目,耗费了很多时间,现在项目整体上线了,在此记录下实战过程以及遇到的坑,有需要的网友也可以直接拿去使用。 …

文本三剑客正则表达式1

文章目录 文本三剑客&正则表达式11 sort1.1 sort -f1.2 sort -b1.3 sort -n1.4 sort -r1.5 sort -u1.6 sort -t1.7 sort -k1.8 sort -o 2 uniq2.1 uniq -c2.2 uniq -u2.3 uniq -d 3 tr3.1tr -c3.2 tr -d3.3 tr -s :3.4 tr -t 4 cut4.1 cut -d4.2 cut -f4.3 cut -b4.4 cut -…

基于 SpringBoot+Vue 的家政服务管理平台

1. 背景 本系统主要是设计出家政服务管理平台,基于B/S构架,后台数据库采用了Mysql,可以使数据的查询和存储变得更加有效,可以确保家政服务管理的工作能够正常、高效的进行,从而提高工作的效率。总体的研究内容如下&am…

模组uart调试总结

配置驱动选项 1.1 首先通过原理图确定其串口号,比如UART1、UART3_HS,同时查看该串口引脚是否有复用功能,比如用作SIM卡引脚。如果有复用,需要在设备树配置中取消复用功能的选项,然后选中串口功能,高通平台设…

【嵌入式环境下linux内核及驱动学习笔记-(12-设备树操作函数)】

目录 1、设备树对应的数据结构1.1 struct device_node1.2 struct property 2、设备树操作函数2.1 查找字点的函数2.1.1 of_find_node_by_path2.1.2 of_find_node_by_name2.1.3 of_find_node_by_type2.1.4 of_find_compatible_node2.1.5 of_find_node_by_phandle2.1.6 of_get_ch…

Automa爬取网页数据直接入库(四)

介绍 在使用automa浏览器插件爬取数据时,可以直接通过发送请求将爬取到的网页数据持久化到数据库中 本次以360趋势图爬取后插入数据库当做测试 建立流程 首先建立打开360趋势图的流程,这个不再演示,直接从获取分析元素开始 打开要爬取的网页 点击定位元素 建立表格存储爬取…

【shell脚本】免交互操作

免交互操作 一、Here Document免交互1.1免交互概述1.2语法格式1.3实验 二、Expect2.1脚本格式2.2实验 一、Here Document免交互 1.1免交互概述 使用I/O重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。是标准输入的一种替代品可以帮助…