玩转k8s:yaml介绍

一.Yaml文件详解

1.Yaml文件格式

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

(2)JSON 格式:主要用于 api 接口之间消息的传递

(3)YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读

2.YAML 语法格式

(1)大小写敏感

(2)使用缩进表示层级关系

(3)不支持Tab键制表符缩进,只使用空格缩进

(4)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格

(5)符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等

(6)“---”表示YAML格式,一个文件的开始,用于分隔文件间

(7)“#”表示注释

二.Yaml文件编写及相关概念

1.查看 api 资源版本标签

kubectl api-versions
[root@k8s-master-136 ~]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
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
crd.projectcalico.org/v1
discovery.k8s.io/v1
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/v1
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

2.yaml编写案例

#查看deployment的版本定义
kubectl explain deployment
[root@k8s-master-136 ~]# kubectl explain deployment
KIND:     Deployment
VERSION:  apps/v1DESCRIPTION:Deployment enables declarative updates for Pods and ReplicaSets.FIELDS:apiVersion   <string>APIVersion defines the versioned schema of this representation of anobject. Servers should convert recognized schemas to the latest internalvalue, and may reject unrecognized values. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourceskind <string>Kind is a string value representing the REST resource this objectrepresents. Servers may infer this from the endpoint the client submitsrequests to. Cannot be updated. In CamelCase. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindsmetadata     <Object>Standard object metadata.spec <Object>Specification of the desired behavior of the Deployment.status       <Object>Most recently observed status of the Deployment.
#查看api的版本
kubectl explain deployment.apiVersion[root@k8s-master-136 ~]# kubectl explain deployment.apiVersion
KIND:     Deployment
VERSION:  apps/v1FIELD:    apiVersion <string>DESCRIPTION:APIVersion defines the versioned schema of this representation of anobject. Servers should convert recognized schemas to the latest internalvalue, and may reject unrecognized values. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
#查看元数据信息
kubectl explain deployment.apiVersion
#定义标签介绍
kubectl explain deployment.spec.selector[root@k8s-master-136 ~]# kubectl explain deployment.spec.selector
KIND:     Deployment
VERSION:  apps/v1RESOURCE: selector <Object>DESCRIPTION:Label selector for pods. Existing ReplicaSets whose pods are selected bythis will be the ones affected by this deployment. It must match the podtemplate's labels.A label selector is a label query over a set of resources. The result ofmatchLabels and matchExpressions are ANDed. An empty label selector matchesall objects. A null label selector matches no objects.FIELDS:matchExpressions     <[]Object>matchExpressions is a list of label selector requirements. The requirementsare ANDed.matchLabels  <map[string]string>matchLabels is a map of {key,value} pairs. A single {key,value} in thematchLabels map is equivalent to an element of matchExpressions, whose keyfield is "key", the operator is "In", and the values array contains only"value". The requirements are ANDed.#对matchLabels标签介绍
kubectl explain deployment.spec.selector.matchLabels[root@k8s-master-136 ~]# kubectl explain deployment.spec.selector.matchLabels
KIND:     Deployment
VERSION:  apps/v1FIELD:    matchLabels <map[string]string>DESCRIPTION:matchLabels is a map of {key,value} pairs. A single {key,value} in thematchLabels map is equivalent to an element of matchExpressions, whose keyfield is "key", the operator is "In", and the values array contains only"value". The requirements are ANDed.

Deployment类型编写nginx服务

创建pod

vim nginx-deployment.yamlapiVersion: apps/v1		    #指定api版本标签
kind: Deployment		    #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:					#定义资源的元数据信息,比如资源的名称、namespace、标签等信息name: nginx-deployment	#定义资源的名称,在同一个namespace空间中必须是唯一的namespace: default       #默认就是default,可以不用写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
或
kubectl apply -f nginx-deployment.yaml 
#查看创建的资源对象,创建需等待running
kubectl get pod

容器如果想对外提供访问,需创建service 发布


#创建service服务对外提供访问并测试
vim nginx-service.yamlapiVersion: v1  
kind: Service  
metadata:name: nginx-servicelabels:app: nginx  
spec:selector:app: nginxtype: NodePort  ports:- port: 80targetPort: 80  
#创建资源对象
kubectl create -f nginx-service.yaml 
或
kubectl apply -f nginx-service.yaml
#查看创建的service
kubectl get svc

k8s集群中的port介绍

详解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。

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

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

相关文章

Springboot+vue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的科研工作量管理系统的设计与实现&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的科研工作量管理系统的设计与实现…

python_ACM模式《剑指offer刷题》链表1

题目&#xff1a; 面试tips&#xff1a; 询问面试官是否可以改变链表结构 思路&#xff1a; 1. 翻转链表&#xff0c;再遍历链表打印。 2. 想要实现先遍历后输出&#xff0c;即先进后出&#xff0c;因此可借助栈结构。 3. 可用隐式的栈结构&#xff0c;递归来实现。 代码…

从复杂数据到直观洞察:山海鲸助你一臂之力

作为山海鲸可视化的开发者&#xff0c;我们深知在数据可视化领域的挑战与机遇。山海鲸可视化软件正是我们为应对这些挑战而打造的一款强大工具&#xff0c;旨在为用户提供更高效、更直观的数据呈现方式&#xff0c;本文单纯从数据可视化角度带大家了解一下我们这款软件的优势。…

Nginx问题分析

问题再现 分析问题&#xff1a; 就是通过http://182.44.16.68:8077/web-ui/static/js/chunk-libs.82635094.js 地址访问&#xff0c;找不到对应的js文件 首先确认文件在服务器的位置 发现这个目录下确实有这个js文件&#xff0c;那问题就在于http://182.44.16.68:8077/web-ui…

rabbitmq基础-java-4、Direct交换机

1、简介 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 2、特点 在Direct模型下&#xff1a; 队列与交换机的绑定&#xff0c;…

Linux网络 ---- PXE高效批量网络装机

目录 一、系统装机 1、系统装机方式 2、系统装机的三种引导方式 3、系统安装过程 二、PXE原理和概念 1、PXE概述 2、搭建PXE网络体系所需条件 3、PXE批量部署的优点 4、PXE通常涉及以下几个组件&#xff1a; 5、PXE实现过程详细 三、搭建过程 1、搭建过程服务详解 …

C++ | 函数重载是什么意思?【面试题】C++支持函数重载的原理是什么?详细讲解

函数重载 一个词有多种含义&#xff0c;可以通过上下文来判断该词的真实含义&#xff0c;即该词被重载了。 “同一个函数名&#xff0c;由于参数个数不同、类型结构不同&#xff0c;在c能够同时使用” 函数重载概念及分类 函数重载&#xff1a;是函数的一种特殊情况&#x…

IO多路复用-select(附通信代码)

IO多路复用-select 1. IO多路复用概述 I/O多路复用&#xff08;I/O Multiplexing&#xff09;是一种通过一种机制同时监听多个文件描述符&#xff08;sockets、文件、设备等&#xff09;的技术。它可以使一个进程在等待多个 I/O 操作完成时不会阻塞&#xff0c;从而提高程序的…

Golang 定时任务的几种实现方法

摘要&#xff1a;在 Golang 开发中&#xff0c;定时任务是常见的需求。本文将介绍几种在 Golang 中实现定时任务的方法&#xff0c;包括 time 包的定时器、ticker&#xff0c;以及第三方库 cron&#xff0c;并通过示例代码展示它们的使用方式。 一、time 包的定时器&#xff08…

luceda ipkiss教程 57:画微环调制器

案例分享&#xff1a;画微环调制器 全部代码如下&#xff1a; from si_fab import all as pdk from ipkiss3 import all as i3class DC(i3.PCell):straight_length i3.PositiveNumberProperty(default200)radius i3.PositiveNumberProperty(default50)spacing i3.Positive…

Spring Cloud Gateway 路由配置策略

Spring Cloud Gateway 路由配置策略 Spring Cloud Gateway 是一个基于 Spring Boot 2.x 和 Spring WebFlux 的轻量级网关服务&#xff0c;用于构建微服务架构中的 API 网关。它提供了一种简单、高效、灵活和可扩展的方式来路由请求到后端的微服务。 Spring Cloud Gateway 的核心…

幻兽帕鲁PalWorld服务器搭建详细教程

幻兽帕鲁PalWorld是一款由Pocketpair开发的游戏&#xff0c;融合了多种玩法&#xff0c;其独特的题材和画风吸引了很多玩家。为了更好地进行游戏体验&#xff0c;很多玩家选择自行搭建服务器。本文将详细介绍如何搭建幻兽帕鲁PalWorld服务器。 第一步&#xff1a;购买服务器 根…

Unity | 渡鸦避难所-8 | URP 中利用 Shader 实现角色受击闪白动画

1. 效果预览 当角色受到攻击时&#xff0c;为了增加游戏的视觉效果和反馈&#xff0c;可以添加粒子等动画&#xff0c;也可以使用 Shader 实现受击闪白动画&#xff1a;受到攻击时变为白色&#xff0c;逐渐恢复为正常颜色 本游戏中设定英雄受击时播放粒子效果&#xff0c;怪物…

verilog的模块参数定义

在Verilog中&#xff0c;模块参数定义的定义分为两种&#xff1a;模块声明时定义的参数和模块体内部定义的参数。 模块声明时定义的参数&#xff08;Module Parameter&#xff09;&#xff1a; 模块声明时定义的参数是在模块实例化时提供的常量值。它们是通过模块实例化语句的参…

小程序直播项目搭建

项目功能&#xff1a; 登录实时聊天点赞功能刷礼物取消关注用户卡片直播带货优惠券直播功能 项目启动&#xff1a; 1 小程序项目创建与配置&#xff1a; 第一步 需要登录小程序公众平台的设置页面进行配置&#xff1a; 首先需要是企业注册的才可以个人不能开通直播功能。服务类…

extends 和 implements

以下是 extends 和 implements 在Java代码中的区别和示例&#xff1a; 示例1&#xff1a;使用 extends 实现类继承 // 定义一个父类 Animal public class Animal {public void eat() {System.out.println("动物在吃东西");}public void sleep() {System.out.printl…

java获取一段视频/mp4的时长

引言 在日常开发中&#xff0c;经常会遇到产品经理提出一个需求“上传视频”&#xff0c;而且还得显示出视频的播放时长&#xff0c;我们直接上最简单的代码&#xff0c;必须是最简单&#xff0c;多一句啰嗦都不准点赞。 How to do 1.提前引入包 <!--视频多媒体工具包 包…

Java-Objec

Objec Class Object是类Object结构的根。 每个班都有Object作为超类。 所有对象&#xff08;包括数组&#xff09;都实现了这个类的方法。 一.构造 二.常用方法 Modifier and TypeMethod and Descriptionprotected Objectclone() 创建并返回此对象的副本。 booleanequals(Obj…

【typescript】记录typescript可运行的demo工程

ypescript可运行的工程&#xff08;本包不包含依赖&#xff09; 1、通过 yarn 自行 下载依赖 2、然后运行yarn serve https://download.csdn.net/download/HWTwilight/88778733

现在你还不知道怎么使用宝塔面板嘛,下面带你从某里云购域名开始

1. 注册阿里云账号 首先&#xff0c;你需要注册一个阿里云账号。访问阿里云官网&#xff0c;点击右上角的"注册"按钮&#xff0c;按照指示填写相关信息并完成注册。 2. 购买域名 在成功注册并登录后&#xff0c;点击顶部导航栏中的"域名"选项&#xff0…