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

news2024/11/18 3:41:19

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/546384.html

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

相关文章

关于FLAME和SMPL模型

英文参考文献:https://medium.com/offnote-labs/3d-face-and-body-reconstruction-95f59ada1040 一个训练好的FLAME模型的输入是一个参数向量,包括形状参数、姿势参数和表情参数。这些参数分别控制人脸的身份特征、头部的旋转和平移、面部的表情变化。一…

算法设计与分析:线性规划问题和单纯形算法(作业-必做)(头歌实验)

第1关:单纯性算法解一般线性方程组 任务描述 本关任务:编写一个利用两阶段单纯性算法求一般线性规划的程序。 相关知识 单纯形算法的第1步:选出使目标函数增加的非基本变量作为入基变量。 查看单纯形表的第 1 行(也称之为z行…

UnityVR--Managers--对象池1

本篇中使用的API&#xff1a;gameObject.CompareTag("标签")、UnityEvent()事件管理、ObjectPool<GameObject>&#xff08;&#xff09;对象池 参照unity官方教程&#xff1a;Hi ObjectPool 目录 1. 应用场景 2. 对象池的原理 3. 查看资源消耗情况 4. 不使用…

mysql 备库延迟问题

备库延迟原因&#xff1a; log传送开销小&#xff0c;消费relay log 超时 备库性能不如主库 备库承担更多SQL分析 主库是多线程执行&#xff0c;备库是单线程执行解析relay log 处理方法&#xff1a; 主备使用相同的机器 备库关闭log实时落盘 增加从库数量&#xff0c;…

Sentinel-2数据下载及处理

数据下载网站&#xff1a;欧空局官网&#xff08;需注册并登录&#xff09; https://scihub.copernicus.eu/dhus/#/home 哨兵2 L1C数据波段信息 哨兵2 L1C数据时间&#xff1a;2015-06-23至now 由于数据量大&#xff0c;考虑服务器压力&#xff0c;哨兵2号数据直接下载的时间跨…

[web安全原理分析]-XXE漏洞入门

前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞&#xff0c;XXE漏洞发生在应用程序解析XML输入时&#xff0c;没有禁止外部实体的加载&#xff0c;导致可加载恶意外部文件&#xff0c;造成文件读取、命令执行、内网端口扫描、攻击内网网站、…

头歌计算机组成原理实验—运算器设计(10) 第10关:补码一位乘法器设计

第10关&#xff1a;补码一位乘法器设计 实验目的 学生掌握补码一位乘法运算的基本原理&#xff0c;熟练掌握 Logisim 寄存器电路的使用&#xff0c;能在 Logisim 平台中设计实现一个8*8 位的补码 Booth一位乘法器。 视频讲解 ####实验内容 在 alu.circ 文件中的补码一位乘法…

Linux基础——权限

1. Linux下的用户 在 Linux 操作系统中&#xff0c;有两种主要类型的用户账户&#xff0c;分别是普通用户账户和超级用户账户&#xff08;也称为 root 用户账户&#xff09;。 普通用户账户&#xff08;user&#xff09;是在 Linux 系统上创建的普通账户&#xff0c;可以用于日…

图片隐写(一)

文件隐藏 binwalk binwalk -e filename foremost foremost filename steghide & stegseek Install sudo apt-get install steghidestegseek Use steghide extract -sf filename -p passwordtime stegseek secret.file aaa.txt dd 文本隐藏 二进制文件末尾 or 文…

ffmpeg rtsp解析

一、 rtsp 协议说明 rtsp的协议层级 rtsp 属于应用层&#xff0c; 使用tcp传输&#xff0c;主要是传递服务器的一些信息&#xff0c;实现流连接。播放 暂停 销毁等控制 rtp 实现音视频数据包的发送&#xff0c;通过RTSP等协议的SDP信息协商好了RTP数据包的发送目的和传输方式…

UNIX网络编程卷一 学习笔记 第十四章 高级I/O函数

有3种方式可在涉及套接字的IO操作上设置超时方法&#xff1a; 1.调用alarm&#xff0c;它在指定超时期满时产生SIGALRM信号。此方法涉及信号处理&#xff0c;而信号处理在不同的实现上存在差异&#xff0c;且此方法可能干扰进程中已经执行过的alarm调用&#xff0c;可能使之前已…

【LLM系列之Tokenizer】如何科学地训练一个LLM分词器

1 背景与基础 1.1 为什么需要分词 对于人而言&#xff0c;在我们学会阅读之前&#xff0c;仍然可以理解语言。比如当你开始上学时&#xff0c;即使你不知道名词和动词之间的区别&#xff0c;但是你已经可以和你的同学交谈了&#xff0c;比如“我喜欢吃香蕉”&#xff0c;孩子…

vmware ubuntu突然无法联网的一种解决方案

记录一下vmware突然无法联网的一种解决方案。此法未必适用所有无法联网情形。Good Luck then. 今天使用vmware的ubuntu 18.04时&#xff0c;突然无法联网。Firefox在访问百度时显示“The proxy server is refusing connections”&#xff0c;随即检查了浏览器的proxy设置&#…

详解Jetpack Compose中的状态管理与使用

前言 引用一段官方描述&#xff0c;如下 由于 Compose 是声明式工具集&#xff0c;因此更新它的唯一方法是通过新参数调用同一可组合项。这些参数是界面状态的表现形式。每当状态更新时&#xff0c;都会发生重组。因此&#xff0c;TextField 不会像在基于 XML 的命令式视图中那…

头歌计算机组成原理实验—运算器设计(9)第9关:原码一位乘法器设计

第9关&#xff1a;原码一位乘法器设计 实验目的 学生掌握原码一位乘法运算的基本原理&#xff0c;熟练掌握 Logisim 寄存器电路的使用&#xff0c;能在 Logisim 平台中设计实现一个 8*8位的无符号数乘法器。 视频讲解 ####实验内容 在 alu.circ 文件中的原码一位乘法器子电…

分布式消息中间件RocketMQ概述

RocketMQ 概述 MQ概述 MQ简介 ​ MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 MQ用途 在网络上上可以查…

React学习笔记五-props

此文章是本人在学习React的时候&#xff0c;写下的学习笔记&#xff0c;在此纪录和分享。此为第五篇&#xff0c;主要介绍react中的props。 目录 1.props的基本使用 2.props的批量传递 2.1展开运算符的复习 2.1.1数组中的展开运算符 2.1.2函数中的展开运算符 2.1.3构造字面…

部署图的画法

部署图画法 1.部署图 1.1含义 部署图是把软件制品装配到计算机节点以及配置软件环境的工作 软件部署包含环境部署和软件制品部署 1.2软件部署 软件部署通过部署图对软件进行建模 1.3部署图 部署图常见的有制品 节点 设备 运行环境和部署规范 1.4部署图关系 在UML&…

UnityVR--Managers--对象池2

目录 前言 基本结构 对象池代码 对象池管理器代码 使用 总结 前言 经过上一篇对象池1的了解&#xff0c;已经做到了使用Unity自带的ObjectPool进行内存优化。本篇自己构建一个对象池管理器&#xff08;Manager&#xff09;&#xff0c;实现对象池的创建、删除、加载资源…

机器视觉工程师很苦吗?年轻人不怕苦,就怕学不到东西,机器视觉销售>项目经理>视觉>电气>机械>老板

年轻人不怕苦&#xff0c;就怕学不到东西。 对于年轻人来说&#xff0c;需要规划&#xff0c;更需要发展。如果学不到东西&#xff0c;就会限制其发展&#xff0c;最重要的体现就是限制待遇上限。 一个非标自动化公司出差的频次&#xff08;各个公司略有差别&#xff0c;大多…