【yaml文件的编写】
yaml文件编写
- YAML语法格式
- 写一个yaml文件demo
- 创建资源对象
- 查看创建的pod资源
- 创建service服务对外提供访问并测试
- 创建资源对象
- 查看创建的service
- 在浏览器输入 nodeIP:nodePort 即可访问
- 详解k8s中的port:
- port
- nodePort
- targetPort
- containerPort
- kubectl run --dry-run=client 打印相应的 API 对象而不执行创建
- 查看生成yaml格式
- 查看生成json格式
- 使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
- 将现有的资源生成模板导出
- 保存到文件中
- 查看字段帮助信息,可一层层的查看相关资源对象的帮助信息
- 用 --dry-run 命令生成
- 用get命令导出
kubernetes支持YAML和JSON格式管理资源对象
JSON格式:主要用于api接口之间消息的传递
YAML格式:用于配置和管理,YAML是一种简介的非标记性语言,内容格式人性化,较易读
YAML语法格式
大小写敏感
使用缩进表示层级关系
不支持Tab键缩进,只使用空格缩进
缩进的空格数目不重要,只要相同层级的左侧对其即可,通常开头缩进两个空格
符号字符后缩进一个空格,如冒号,逗号,短横杠(-)等
“—”表示YAML格式,一个文件的开始,用于分割文件
“#”表示注释
//查看 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
写一个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: 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 create -f nginx-deployment.yaml
查看创建的pod资源
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
nginx-deployment-d55b94fd-29qk2 1/1 Running 0 7m9s 172.17.36.4 192.168.80.12 <none>
nginx-deployment-d55b94fd-9j42r 1/1 Running 0 7m9s 172.17.36.3 192.168.80.12 <none>
nginx-deployment-d55b94fd-ksl6l 1/1 Running 0 7m9s 172.17.26.3 192.168.80.11 <none>
创建service服务对外提供访问并测试
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-servicelabels:app: nginx
spec:type: NodePort ports:- port: 80targetPort: 80 selector:app: nginx
创建资源对象
kubectl create -f nginx-service.yaml
查看创建的service
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 16d
nginx-service NodePort 10.0.0.119 <none> 80:35680/TCP 14s
在浏览器输入 nodeIP:nodePort 即可访问
http://192.168.80.11:35680
http://192.168.80.12:35680
详解k8s中的port:
port:为service在clusterIP上暴露的端口
targetport:对应容器映射在pod上的端口
nodeport:可以通过在k8s集群外部使用nodeIP + nodePort来去访问service
containerport:容器年内部使用的端口
k8s集群内部:
客户端—》clusterIP:port—》通过targetport—》podip:containerport
客户端—》nodeIP:nodePort—》通过targetport—》podip:containerport
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。
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
查看生成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
查看生成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
使用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
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: Alwaysstatus: {} #删除
将现有的资源生成模板导出
kubectl get svc nginx-service -o yaml
保存到文件中
kubectl get svc nginx-service -o yaml > my-svc.yaml
查看字段帮助信息,可一层层的查看相关资源对象的帮助信息
kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers
//写yaml太累怎么办?
用 --dry-run 命令生成
kubectl run my-deploy --image=nginx --dry-run=client -o yaml > my-deploy.yaml
用get命令导出
kubectl get svc nginx-service -o yaml > my-svc.yaml
或
kubectl edit svc nginx-service #复制配置,再粘贴到新文件
//yaml文件的学习方法:
(1)多看别人(官方)写的,能读懂
(2)能照着现场的文件改着用
(3)遇到不懂的,善用kubectl explain … 命令查
相关文章:
【yaml文件的编写】
yaml文件编写 YAML语法格式写一个yaml文件demo创建资源对象查看创建的pod资源创建service服务对外提供访问并测试创建资源对象查看创建的service在浏览器输入 nodeIP:nodePort 即可访问 详解k8s中的port:portnodePorttargetPortcontainerPortkubectl run --dry-runc…...
kt6368A双模蓝牙芯片无法透传 可能是什么问题呢
一、问题简介- kt6368A蓝牙芯片无法透传 可能是什么问题呢? KT6368A蓝牙芯片,在使用上还是非常的简单,总共也就8个腿,焊接也是很容易的事情 出现不能透传,大概率有如下2点原因 硬件问题,比如࿱…...
SpringBoot终极讲义第二章笔记
01.关于Import 和 ImportResource Import注解用法(类上): 一般和Configuration一起使用,用来导入里面Bean方法返回的对象 ImportResource(类上):一般和Configuration一起使用,用来导入某个.XML文件里的bean 个人觉得这两个注解有点鸡肋 SpringBoot启动类默认扫描的是启动类…...
【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数
文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes,所谓仿函数【不懂,跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…...
社科院与杜兰大学能源管理硕士项目——惊喜会随时间慢慢酝酿而出
我们越来越难感受到惊喜,按部就班的生活让我们丧失了感知力,我们再难以被简单的确幸所打动。试试停下脚步,惊喜往往不期而遇。社科院与杜兰大学能源管理硕士项目是你人生中的小确幸吗 学习是一种持续不断的自我提升,它能让我们逐渐…...
Array简介
概念: 数组(Array)是Java中最简单的数据结构之一,它用于存储固定大小的相同类型元素序列。数组是一个连续分配的内存块,可以通过索引访问其中的元素。元素在数组中按照顺序排列,并使用整数索引来唯一标识每…...
Django的模版使用(Django-03)
一 模版的使用 模板引擎是一种可以让开发者把服务端数据填充到html网页中完成渲染效果的技术。它实现了 把前端代码和服务端代码分离 的作用,让项目中的业务逻辑代码和数据表现代码分离,让前端开发者和服务端开发者可以更好的完成协同开发。 静态网页&…...
详解分布式搜索技术之elasticsearch
目录 一、初识elasticsearch 1.1什么是elasticsearch 1.2elasticsearch的发展 1.3为什么学习elasticsearch? 1.4正向索引和倒排索引 1.4.1传统数据库采用正向索引 1.4.2elasticsearch采用倒排索引 1.4.3posting list 1.4.4总结 1.5 es的一些概念 1.5.1文档和字段 …...
系统架构设计:3 软件架构建模技术与应用
目录 一 架构“4+1”视图 二 论点 1 架构的本质 2 “4+1”视图 (1)逻辑视图 <...
JAVA在线电子病历编辑器源码 B/S架构
电子病历在线制作、管理和使用的一体化电子病历解决方案,通过一体化的设计,提供对住院病人的电子病历书写、保存、修改、打印等功能。电子病历系统将临床医护需要的诊疗资料以符合临床思维的方法展示。建立以病人为中心,以临床诊疗信息为主线…...
TS中的枚举是什么如何使用
在 TypeScript 中,枚举(enum)是一种用于定义命名常量集合的数据类型。枚举可以提高代码的可读性和可维护性,因为它允许开发人员定义并使用有意义的符号名称来表示特定的常量。 下面是一个使用枚举的示例: enum Color…...
UG\NX二次开发 重命名特征对象 UF_OBJ_set_name
文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 林闹 订阅本专栏,非常感谢。 简介 UG\NX二次开发 重命名特征 UF_OBJ_set_name 效果 代码 #include "me.hpp" #include <vector> #include...
低欲望社会:只要我没欲望,世界就对我束手无策?
新的转变正在发生,越来越多的人,正从外部的物质世界向内部的精神世界回归。 比如,中产不再炫名牌,而是改炫读书;打工人不再炫工资,而是炫如何整顿职场。 越来越多的人认为消费主义弥漫着恶臭,…...
抢红包设计
抢红包大致可以分为2步:1 发红包 ;2 抢红包 发红包流程 为了突出红包设计主题,以下设计会忽略支付流程、24H过期退款剩余金额、用户领取红包余额到账等业务,则简化后的相关表设计如下: CREATE TABLE red_record (id…...
k8s集群-6(daemonset job cronjob控制器)
Daemonset 一个节点部署一个节点 当有节点DaemonSet 确保全部 (或者某些) 节点上运行一个 Pod 的副本。加入集群时,也会为他们新增一个 Pod 。当有节点从集群移除时,这些Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 DaemonSet 的典型用…...
Compose 编译器版本和Kotlin版本对应关系
使用了最新的kotlin版本,compose报错,不兼容,在这里记录一下版本对应关系 值得注意的是Compose Kotlin 编译器扩展 (androidx.compose.compiler) 未关联到 Compose 库版本。相反,它会关联到 Kotlin 编译器插件的版本,…...
vite+vue+cesium
1.创建vite项目 npm create vite 项目名称 2. 选择vuejs/ts 3.在终端输入命令 npm install 4.安装cesium插件,在终端输入命令 npm i cesium vite-plugin-cesium vite -D 5.项目配置cesium 在vite.config.js里进行配置 import { defineConfig } from vite i…...
tcp滑动窗口原理
18.1 滑动窗口 我们再来看这个比喻: 网络仅仅是保证了整个网络的连通性,我们我们基于整个网络去传输,那么是不是我想发送多少数据就发送多少数据呢?如果是这样的话,是不是就会像我们的从一个池塘抽水去灌到另外一个…...
3.4 Android bpfloader初始化流程解读(二)
我继续看bpfloader是如何读取和处理bpf程序的。 4.2 读取代码段之readCodeSections static int readCodeSections(ifstream& elfFile, vector<codeSection>& cs, size_t sizeOfBpfProgDef,const bpf_prog_type* allowed, size_t numAllowed) {...ret = readSect…...
Linux0.12内核源码解读(2)-Bootsect.S
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「小牛呼噜噜」 文章目录 回顾计算机启动过程8086、80x86是什么意思?寄存器初始化CS:IPCPU是如何和ROM相连的?加载MBR到…...
虚拟环境搭建、后台项目创建及目录调整、封装logger、封装全局异常、封装Response、后台数据库创建
1 虚拟环境搭建 #1 虚拟环境作用多个项目,自己有自己的环境,装的模块属于自己的# 2 使用pycharm创建-一般放在项目路径下:venv文件夹-lib文件夹---》site-package--》虚拟环境装的模块,都会放在这里-scripts--》python࿰…...
每日一练 | 网络工程师软考真题Day39
1、Windows Server 2003操作系统中,IIS6.0不提供以下 效劳。 A.web B.smtp C.pop3 D.ftp 2、Windows Server 2003操作系统中, 提供了远程桌面访问。 A.ftp B.email C…...
Android Studio编写xml布局不提示控件的部分属性问题的解决
最近突然发现Android Studio编写xml,发现有一部分控件的属性没有了代码提示,主要体现为id,margin等属性不再有代码提示,如下图。 但是手动输入仍然有效。然后删掉Android Sdk重新回来还是发现有问题,导一个之前的旧项目进来&#…...
BUGKU-simple_SSTI_1漏洞注入
SSTI漏洞注入 SSTI全称Server side template injection.服务端模板注入这节课主要讲flask的模板注入.flask会把类似于 的变量当做参数来渲染并填充到web页面,如果该参数可控并被后台解析则有可能被注入恶意代码导致注入漏洞请注意 模板注入只会存在于二次渲染中,无二次渲染不会…...
Python:dict
一些关于dict的奇妙观察 实验一 首先,创建两个一模一样的字典: dict1 {a: 1} dict2 {a: 1}然后,进行各种各样的相等判断: print(dict1 dict2) print(dict1.keys() dict2.keys()) print(dict1.values() dict2.values()) p…...
git和svn 的国内的下载地址
CNPM Binaries Mirror 下面是svn的地址 TortoiseSVN 64位下载-TortoiseSVN客户端官方版下载-华军软件园...
matplotlib制图进阶版
需求:两个产品销量的可视化折线图 1、使用pandas读取数据 2、生成销售数量的折线图...
【Java 进阶篇】HTML介绍与软件架构相关知识详解
HTML(Hypertext Markup Language)是一种用于创建网页的标记语言。它是互联网上信息传递和展示的基础,无论是在浏览器中查看网页还是在移动设备上浏览应用程序,HTML都扮演着关键角色。本文将向您介绍HTML的基础知识,并探…...
Python数据攻略-Pandas与机器学习数据准备
在机器学习项目中,大部分时间都花在了数据准备上。你可能听说过“数据是机器学习的燃料”的说法,这是因为高质量的数据是构建出色模型的关键。 在这篇文章中将使用Pandas库来进行数据准备。为了让内容更贴近实际将使用《三国志》游戏中的角色数据作为样本。 文章目录 数据编…...
阿里云/亚马逊云代理:aws账号购买:aws亚马逊云账号的优势
AWS 可以用多少付多少,无预付费用,无需签订长期使用合约。我们能够构建和管理大规模的全球基础设施,aws账号购买并以降低价格的形式将节约成本的优势传递给您。借助我们在规模和专业知识方面的效益,过去四年来,我们已在…...
河南中英网站建设/如何让自己网站排名提高
Cake Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3835 Accepted Submission(s): 1838 Problem Description一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等…...
成都的网站建设公司/长春网站建设团队
首先生成两个字典,如下:dict_one {one: 1, two: 2} dict_two {three: 3, tour: 4}方法一: 使用uptate方法,把two字典更新至one字典中dict_one.update(dict_two) print(dict_one)方法二: 首先使用copy方法,…...
长沙市网站制作哪家好/google谷歌搜索引擎入口
一、负载均衡介绍 负载均衡(Load Balance): 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其意思就是分摊到多个操作单元上…...
wordpress第三方登录插件/一个新手怎么做推广
我是卢松松,点点上面的头像,欢迎关注我哦! 伪原创以后也不能干了。 根据澎湃新闻消息:上海一家提供“智能重写”服务、对爆款文章进行伪原创洗稿的(新茶)公司,被腾讯以不正当竞争为由,诉至法院。深圳南山区…...
thinkphp怎么做网站/开网店怎么开 新手无货源
符号 代表该元素是在 HTML5 中新增的。另外注意,这里列出的其他元素可能在 HTML5 标准中得到了扩充或经过修改。根元素 ElementDescription<html>代表 HTML 或 XHTML 文档的根。其他所有元素必须是这个元素的子节点。文档元数据 ElementDescription<head&…...
织梦网站/游戏推广话术
你应该给对手一些东西,让他们感到好过,这对你有好处,特别是在此举并不需要你投入太多的时候。 不要给自己制造不必要的麻烦冲突会引发强烈的情感,其中就包括愤怒。这些强烈的情感会干扰我们进行战略性思考的能力,让我们…...