yaml文件编写
Kubernetes 支持YAML和JSON格式管理资源
JSON 格式:主要用于 api 接口之间消息的传递
YAML 格式;用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化容易读懂
一,yaml语法格式
1.1 基本语法规则
- 使用空格进行缩进(不使用制表符),通常使用两个或四个空格。缩进代表层级关系,同级左边对齐。
- 符号 : 符号 - 符号 , 后面要加上空格
- 对字母的大小写敏感
- 字符串要用双引号 “” 或者单引号 ‘’
- 多行字符串使用 | 保留换行符,>代表折叠换行符
- 符号 # 注释
- 符号 — 表示yaml文件的开始,用来分割文件
1.2 api资源版本标签
kubectl api-servions
admissionregistration.k8s.io/v1 #v1业务场景下首选
admissionregistration.k8s.io/v1beta1 #beta代表测试版本,现实生产环境不用
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
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/v1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/v1beta1
discovery.k8s.io/v1beta1
events.k8s.io/v1
events.k8s.io/v1beta1
extensions/v1beta1
flowcontrol.apiserver.k8s.io/v1beta1
networking.k8s.io/v1
networking.k8s.io/v1beta1
node.k8s.io/v1
node.k8s.io/v1beta1
policy/v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1

1.3nginx-deployment.yaml
(1)编写yaml
mkdir /opt/demo
cd demo/
vim nginx-deployment.yamlapiVersion: apps/v1 #指定api版本标签大写写要注意 kubectl explain deployment
kind: Deployment #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata: #定义资源的元数据信息,比如资源的名称、namespace、标签等信息name: nginx-deployment #定义资源的名称,在同一个namespace空间中必须是唯一的labels: #定义Deployment资源标签app: nginx
spec: #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性replicas: 3 #定义副本数量selector: #定义标签选择器matchLabels: #定义匹配标签app: nginx #需与 .spec.template.metadata.labels 定义的标签保持一致template: #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配metadata:labels: #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致app: nginxspec:containers: #定义容器属性- name: nginx #定义一个容器名,一个 - name: 定义一个容器image: nginx:1.15.4 #定义容器使用的镜像以及版本ports:- containerPort: 80 #定义容器的对外的端口#查看资源配置清单
kubectl get deployment nginx -o yaml#解释资源配置清单
kubectl explain deployment.metadata
kubectl get service nginx -o yaml
kubectl explain service.metadata#修改资源配置清单并应用
离线修改:
修改yaml文件,并用 kubectl·apply -f·xxxx.yaml·文件使之生效
当apply不生效时,先使用delete清除资源,再apply创建资源kubectl get service nginx -o yaml >.nginx-svc.yaml #使用重定向的方式生成svc yaml文件
vim nginx-svc.yaml #修改port:8080
kubectl .delete -f.nginx-svc.yaml
kubectl apply -f .nginx-svc.yaml
kubectl get svc在线修改:
直接使用·kubectl edit service nginx 在线编辑资源配置清单并保存退出即时生效(如port:888)
PS:此修改方式不会对yaml文件内容修改7 metadata:
pod元数据:
名称:Pod的名称,必须在命名空间内唯一。
命名空间:Pod所属的命名空间,便于资源的组织和管理。
标签和注释:用于标识和选择Pod的元数据







(2)创建,查看资源
kubectl create -f nginx-deployment.yaml #创建资源对象kubectl get pods -o wide 查看创建的pod资源

1.4创建service服务对外提供访问并测试
(1)编写yaml
vim nginx-service.yamlapiVersion: v1 # API 版本,指定使用的 Kubernetes API 版本
kind: Service # 资源类型,表示创建一个 Service
metadata: # 元数据部分,包含服务的基本信息name: nginx-service # 服务名称,用于识别该 Servicelabels: # 标签,用于标识和选择相关资源app: nginx # 标签键值对,便于选择器使用spec: # 规格部分,定义服务的行为type: NodePort # 服务类型NodePort,允许通过节点的IP和指定端口访问服务,不设置会自定义端口从30000~32767ports: # 服务暴露的端口配置- port: 80 # 服务端口,客户端通过此端口访问服务targetPort: 80 # 目标端口,实际后端 Pod 上的端口selector: # 选择器,用于将流量路由到特定的 Podsapp: nginx # 选择具有相同标签的 Pods注意标签要和nginx-deployment.yaml一致kubectl get service nginx-service -o yaml

(2)创建资源对象,并查看
kubectl create -f nginx-service.yaml #创建资源对象kubectl get svc #查看创建的service
机器svc中已经有nginx-service

(3)在浏览器访问
http://192.168.88.30:31642
http://192.168.88.40:31642


总结
二,k8s中的pod
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。
三,从例子中熟悉资源清单编写
1.创建nginx
1.1编写nginx-1.yaml
cd /opt/demo
vim nginx-1.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: nginx-1namespace: defaultlabels:app: myapp
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: nginx:latestports:- name: httpcontainerPort: 80kubectl create -f nginx-1.yaml
kubectl get pod
kubectl get pod -o wide
curl -I 10.244.2.157
kubectl get pod --show-labels
kubectl get pod -A
kubectl describe deployment.apps nginx-1







1.2创建svc
cd /opt/demo
vim nginx-svc1.yamlapiVersion: vl
kind: Service
metadata:name: nginx-1namespace: default
spec:type: NodePortports:- port: 8080targetPort: 80nodePort: 32222selector:app: myappkubectl apply -f nginx-svc1.yamlkubectl get pod,svc


2.创建redis
2.1编写redis-1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: redis-1labels:app: redis
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:latestports:- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:name: redis-service4labels:app: redis
spec:type: NodePortports:- port: 6379targetPort: 6370nodePort: 32223selector:app: rediskubectl apply -f redis-1.yaml
kubectl get pod,svc



四,快速创建yaml文件
1.kubectl run --dry-run=client 打印相应的 API 对象而不执行创建
kubectl run nginx-test --image=nginx --port=80 --dry-run=client
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client

2.查看生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml


3.查看生成json格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json



4.使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml > nginx-deploy.yaml



5.生成的yaml文件
vim nginx-test.yaml
apiVersion: v1
kind: Pod
metadata:creationTimestamp: null #删除labels:run: nginx-testname: nginx-test
spec:containers:- image: nginxname: nginx-testports:- containerPort: 80resources: {} #删除dnsPolicy: ClusterFirstrestartPolicy: Always
status: {} #删除
6.将现有的资源生成模板导出
kubectl get svc nginx-service -o yaml


7.保存到文件中
kubectl get svc nginx-service -o yaml > my-svc.yaml

8.查看字段帮助信息,可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers
总结
1.快速创建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 #复制配置,再粘贴到新文件
2.yaml文件的学习方法:
(1)多看官方写的,能读懂理解的
(2)能照着现场的文件改着用
(3)遇到不懂的,用kubectl explain 命令查看
3.yaml文件组成
(1)控制定义,主要用来描述资源预设的状态,控制类型:deployment,statusfulset,service。需要控制副本数量,使用的容器镜像,预先设置的配置参数和环境变量
metadata,selector,template,spec
(2)被控制对象,被控制器(deployment,statusfulset)管理的资源实例(pod),对控制对象的定义,状态由yaml文件决定
相关文章:
yaml文件编写
Kubernetes 支持YAML和JSON格式管理资源 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式;用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化容易读懂 一,yaml语法格式 1.1 基本语法规则 使用空格进行缩进(不使用制表符࿰…...
TOEIC 词汇专题:娱乐休闲篇
TOEIC 词汇专题:娱乐休闲篇 在娱乐和休闲活动中,我们会接触到许多特定的词汇。这些词汇涉及到活动入场、观众互动、评论等各个方面,帮助你在相关场景中更加自如。 1. 入场和观众 一些常用词汇帮助你轻松应对观众与入场管理相关的场景&#…...
驱动TFT-1.44寸屏(ST7735)显示器
目录 一、驱动芯片介绍 二、驱动方式 三、主函数main运行 四、完整代码下载 TFT1.44寸屏,搭配ST7735驱动芯片,是一种专为小型电子设备设计的彩色液晶显示解决方案。该屏幕采用薄膜晶体管(TFT)技术,能够实现高亮度、…...
鸿蒙HarmonyOS NEXT一多适配技术方案
鸿蒙一多是什么 HarmonyOS 系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,让开发者可以基于一种设计,高效构建多端可运行的应用。 一套代码工程,一次开发上架,多端按…...
golang 中map使用的一些坑
golang 中map使用的一些坑 1、使用map[string]interface{},类型断言[]int失败 接收下游的数据是用json转为map[string]any go a : "{\"a\":\"1\",\"b\":[123]}" var marshal map[string]any json.Unmarshal([]byte(a), &…...
cordova 离线打包Android -Linux
背景 已有 cordova 运行环境的docker镜像; 需要在离线环境下执行 cordova 从创建项目到构建安装包一系列命令,最终生成 apk 文件。 方案 先在有网环境(最好与离线环境的OS一致)走一遍 cordova 创建打包工程、添加插件、添加平…...
【python】OpenCV—findContours(4.3)
文章目录 1、功能描述2、代码实现3、完整代码4、结果展示5、涉及到的库函数5.1、cv2.Canny5.2 cv2.boxPoints 6、参考 1、功能描述 找出图片中的轮廓,拟合轮廓外接椭圆和外接矩阵 2、代码实现 导入必要的库,固定好随机种子 import cv2 as cv import …...
前端通过nginx部署一个本地服务的方法
前端通过nginx部署一个本地服务的方法: 1.下载ngnix nginx 下载完成后解压缩后运行nginx.exe文件 2.打包你的前端项目文件 yarn build 把生成的dist文件复制出来,替换到nginx的html文件下 3.配置conf目录的nginx.conf文件 主要配置server监听 ser…...
Linux:防火墙和selinux对服务的影响
1-1selinux 1-1 SELinux是对程序、文件等权限设置依据的一个内核模块。由于启动网络服务的也是程序,因此刚好也 是能够控制网络服务能否访问系统资源的一道关卡。 1-2 SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是…...
从 vue 源码看问题 — vue 如何进行异步更新?
前言 在上一篇 如何理解 vue 响应式? 中,了解到响应式其实是通过 Observer 类中调用 defineReactive() 即 Object.defineProperty() 方法为每个目标对象的 key(key 对应的 value 为非数组的) 设置 getter 和 setter 实现拦截&…...
【go从零单排】go中的基本数据类型和变量
Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 基本类型 go中的string、int、folat都可以用连接boolen可以用逻辑表达式计算 package mainimport "fmt&quo…...
标签之文字排版,图片,链接,音视频(HTML) 基础版
目录 标签之文字排版,图片,链接,音视频知识点: 练习题一: 效果: 练习题二: 效果: 标签之文字排版,图片,链接,音视频知识点: 超文本:链接 标记:标签<> 双标签 单标签 <br>//换行 <hr>//水平线 向后tab 向前shifttab html注释<!----> css /**/ …...
基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
十四届蓝桥杯STEMA考试Python真题试卷第二套第一题
来源:十四届蓝桥杯STEMA考试Python真题试卷第二套编程第一题 题目描述: 给定一个字符串,输出字符串中最后一个字符。 输入描述: 输入一个字符串 输出描述: 输出字符串中最后一个字符 样例输入: hgf 样…...
【Windows修改Docker Desktop(WSL2)内存分配大小】
记录一下遇到使用Docker Desktop占用内存居高不下的问题 自从使用了Docker Desktop,电脑基本每天都需要重启,内存完全不够用,从16g扩展到24,然后到40G,还是不够用;打开Docker Desktop 运行时间一长&#x…...
阿里云-部署CNI flannel集群网络
环境 1.一台阿里云作为k8s-master:8.130.XXX.231(阿里云私有IP) 2.Vmware 两个虚拟机分别作为 k8s-node1:192.168.40.131 k8s-node2:192.168.40.131 3.安装Docker 部署过程 k8s-master,k8s-node1,k8s-node2 初始操作 # 关闭防火墙 systemctl stop fi…...
favicon是什么文件?如何制作网站ico图标?
一般我们做网站的话,都会制作一个独特的ico图标,命名为favicon.ico。这个ico图标一般会出现在浏览器网页标题前面。如下图红色箭头所示: 部分博客导航大全也会用到所收录网站的ico图标。比如boke123导航新收录的网站就不再使用网站首页缩略图…...
Linux云计算个人学习总结(一)
windows计算机基础 一、概述 1.计算机基本原则:计算机是执行输入、运算、输出的原则。软件是指命令和数据的结合,计算机中所有的内容皆为数字。 2.计算机的类型 计算器 手机 cps等都属于计算机。 3.计算机的发展 第一代计算机电子管时代&…...
DCRNN解读(论文+代码)
一、引言 作者首先提出:空间结构是非欧几里得且有方向性的,未来的交通速度受下游交通影响大于上游交通。虽然卷积神经网络(CNN)在部分研究中用于建模空间相关性,但其主要适用于欧几里得空间(例如二维图像&a…...
雷池社区版新版本功能防绕过人机验证解析
前两天,2024.10.31,雷池社区版更新7.1版本,其中有一个功能,新增请求防重放 更新记录:hhttps://docs.waf-ce.chaitin.cn/zh/%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95 仔细研究了这个需求,…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
JS红宝书笔记 - 3.3 变量
要定义变量,可以使用var操作符,后跟变量名 ES实现变量初始化,因此可以同时定义变量并设置它的值 使用var操作符定义的变量会成为包含它的函数的局部变量。 在函数内定义变量时省略var操作符,可以创建一个全局变量 如果需要定义…...
