YAML详情

一、kubernetes支持对象

  Kubernetes支持YAML和JSON格式管理资源对象

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

二、YAML语法格式注意点

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

三、YAML部署

  3.1 查看api资源版本标签

kubectl api-versions

  3.2 写一个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		#定义容器的对外的端口

  3.3 创建资源对象并查看

kubectl create -f nginx-deployment.yamlkubectl get pods -o wide

   3.4 创建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

  3.5 创建资源对象并查看创建的service

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

  3.6 在浏览器输入nodeIP:nodePort即可访问

    例如:http://192.168.10.6:30061

  3.7 详解k8s端口

    在Kubernetes中,端口的概念非常重要。Pod中的应用程序可能需要暴露一些端口来让其他Pod或外部应用程序访问。在Kubernetes中,端口主要分为两种类型分别是节点端口集群内部端口

  3.7.1 节点端口

  节点端口(NodePort)允许外部流量通过节点直接访问Pod。使用这种方式后,外部流量将会通过节点的IP地址和指定的端口转发到相应的Pod。NodePort随机指定一个端口号,端口范围在30000-32767之间。可以通过指定NodePort的值来指定一个特定的节点端口。

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

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

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

  3.7.2 集群内部端口

  集群内部端口暴露应用程序服务给其他Pod使用。通过定义端口并把它们暴露给其他Pod,可以方便地实现服务发现和内部路由功能。在Kubernetes中,有三种类型的内部端口:容器端口(Container Port)名称化端口(Named Port)端点端口(Endpoint Port)

  • 容器端口(Container Port):应用程序在容器内部暴露的端口号。
  • 名称化端口(Named Port):在为抽Service中定义的端口,作象概念使用,并将请求转发到一个或多个容器端口。
  • 端点端口(Endpoint Port):通过Service提供的端口,它将转发到一个或多个Pod的容器端口和IP地址。

  这些端口类型可用于不同的场景,可以根据需求来选择具体的端口类型。

  在Kubernetes中定义端口时,通常需要指定两个属性:端口号和协议类型。端口号是一个整数,协议类型可以是TCP或UDP。例如,定义TCP协议的8080端口可以写成:8080/TCP。通过这两个属性定义,Kubernetes能够正确接受和转发请求,从而使应用程序正常工作。

  3.8 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

  3.9 查看生成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.10 查看生成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

  3.11 使用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.yamlvim 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: {}                    #删除

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

kubectl get svc nginx-service -o yaml

  3.13 保存到文件中

kubectl get svc nginx-service -o yaml > my-svc.yaml

  3.14 查看字段帮助信息,可一层层的查看相关资源对象的帮助信息

kubectl explain deployments.spec.template.spec.containers
或
kubectl explain pods.spec.containers

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

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

相关文章

Octo 精武门? :开源的通用机器人模型

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技…

【C++ —— 哈希】学习笔记 | 模拟实现封装unordered_map和unordered_set

文章目录 前言一、unordered系列关联式容器1.1 unordered_map1.2 unordered_set 二、底层结构2.1哈希概念(哈希是一种算法思想)2.2哈希冲突2.3 解决哈希冲突方法:1.直接定址法(值和位置关系是唯一关系,每个人都有唯一位…

NextJs 初级篇 - 安装 | 路由 | 中间件

NextJs 初级篇 - 安装 | 路由 | 中间件 一. NextJs 的安装二. 路由2.1 路由和页面的定义2.2 布局的定义和使用2.3 模板的定义和使用① 模板 VS 布局② 什么是 use client 2.4 路由跳转的方式2.5 动态路由2.6 路由处理程序① GET 请求的默认缓存机制② 控制缓存或者退出缓存的手…

大模型效能工具之智能CommitMessage

01 背景 随着大型语言模型的迅猛增长,各种模型在各个领域的应用如雨后春笋般迅速涌现。在研发全流程的效能方面,也出现了一系列贯穿全流程的提效和质量工具,比如针对成本较高的Oncall,首先出现了高质量的RAG助手;在开…

山东大学软件学院数据库实验1-9(全部)

目录 前言 实验代码 实验一 1-1 1-2 1-3 1-4 1-5 1-6 实验二 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 实验三 3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9 3-10 实验四 4-1 4-2 4-3 4-4 4-5 4-6 4-7 4-8 4-9 4-10 实验五 5-1…

鹏特资本进入中国市场具有以下一些优势

1. 带来资金:补充国内资金缺口,为企业发展和项目建设提供重要的资金支持。 2. 先进技术和管理经验:有助于推动技术创新和管理水平提升,促进产业升级和优化。 3. 促进竞争:激发国内市场活力,促使本土企业不…

解决 Failed to parse remote port from server output【Remote-SSH】【VSCode】

描述 一早起来,发现remote-ssh无法进入服务器容器,本地使用git bash进行ssh可正常连接服务器,基本确定是vscode工具本身的问题。重装本地用户的.vscode相关目录清空,vscode重装均无果,不建议尝试。弹窗信息为Could no…

【课程作业】嵌入式系统与设计上机作业(作业三)

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…

Ant Design pro 6.0.0 搭建使用以及相关配置

一、背景 在选择一款比较合适的中台的情况下,挑选了有arco design、ant design pro、soybean、vue-pure-admin等中台系统,经过筛选就选择了ant design pro。之前使用过arco design 搭建通过组件库拼装过后台管理界面,官方文档也比较全&#…

2024GDCPC广东省赛记录

比赛流程体验,依托,开赛几分钟了,选手还卡在门外无法入场,也没给延时,说好的桌上会发三支笔,于是我们就没准备,要了三次笔,终于在一小时后拿到了😅 比赛题目体验&#xf…

Java基础22(JSON解析 注解)

目录 一、JSON解析 1. JSON语法 2. JSON的用途 3. Java解析JSON 4. 使用Fastjson 4.1 Fastjson 的优点 4.2 Fastjson 导包 4.3 Fastjson的主要对象 4.4 常用方法 将Java对象 "序列化"(转换) 为JSON字符串: 将JSON字符串…

YOLOv5改进策略:Focaler-IoU损失函数改进

文章目录 1、前言2、摘要3、Focaler-IoU:4、代码实现5、目标检测系列文章 1、前言 ​ 目标检测是计算机视觉的基本任务之一,旨在识别图像中的目标并定位其位置。目标检测算法可分为基于锚点和无锚点的方法。基于锚点的方法包括Faster R-CNN、YOLO系列、…

详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)

目录 前言1. 基本知识2. Demo3. 实战4. 模版 前言 由于需要在登录时,附上一些用户说明书的弹窗 对于ElMessageBox的基本知识详细了解 可通过官网了解基本的语法知识ElMessageBox官网基本知识 1. 基本知识 Element Plus 是一个基于 Vue 3 的组件库,其中…

20240523每日运维--------聊聊docker简介(一)

dotCloud 说Docker,必不可免不得不说dotCloud,Docker本来只是dotCloud公司的内部项目,其公司创始人 Solomon Hykes 发了一个内部项目,而这个项目就是Docker,自从2013年docker开源以后,在世界范围引起相当轰…

对于高速信号完整性,一块聊聊啊(12)

常见的无源电子器件 电子系统中的无源器件可以按照所担当的电路功能分为电路类器件、连接类器件。 A、电路类器件: (1)二极管(diode) (2)电阻器(resistor) &#xf…

浅谈对称加密非对称加密

对称加密:加密和解密使用的密钥是同一个 常见算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES非对称加密:需要两个密钥,一个公开密钥、一个私有密钥 常见算法:RSA、ECC(移动设备用)、Dif…

归并排序算法(经典、常见)

今天我们不刷力扣了,我们来复习(手撕)一下数据结构中的八大排序算法之一,归并排序 基本概念: 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&am…

【网络技术】【Kali Linux】Wireshark嗅探(十五)SSDP(简单服务发现协议)报文捕获及分析

往期 Kali Linux 上的 Wireshark 嗅探实验见博客: 【网络技术】【Kali Linux】Wireshark嗅探(一)ping 和 ICMP 【网络技术】【Kali Linux】Wireshark嗅探(二)TCP 协议 【网络技术】【Kali Linux】Wireshark嗅探&…

与MySQL DDL 对比分析OceanBase DDL的实现

本文将简要介绍OceanBase的DDL实现方式,并通过与MySQL DDL实现的对比,帮助大家更加容易理解。 MySQL DDL 的算法 MySQL 的DDL实现算法主要有 copy、inplace和instant。 copy copy算法的实现相对简单,MySQL首先会创建一个临时表&#xff0…

C++:STL

STL 文章目录 STLSTL 绪论迭代器(iterators)容器(Containers)vectorset,multisetmap,multimapstackqueuedequepriority_queuebitset 算法(Algorithms)sort,count,find,lower_bound,upper_bound,binary_sear…