应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

Kubernetes(k8s)YAML文件详解

  一、yaml文件简介
  Kubernetes只支持YAML和JSON格式创建资源对象,JSON格式用于接口之间消息的传递,适用于开发;YAML格式用于配置和管理,适用于云平台管理,YAML是一种简洁的非标记性语言。1)yaml的语法规则:大小写敏感使用缩进表示层级关系缩进时不允许使用Tal键,只允许使用空格缩进的空格数目不重要,只要相同层级的元素左侧对齐即可表示注释,从这个字符一直到行尾,都会被解析器忽略注:为可选的分隔符,当需要在一个文件中定义多个结构的时候需要使用2)在Kubernetes中,只需要知道两种结构类型即可:ListsMaps
  2。1)YAMLMaps
  Map顾名思义指的是字典,即一个Key:Value的键值对信息。例如:apiVersion:v1kind:Pod
  上述内容表示有两个键apiVersion和kind,分别对应的值为v1和Pod。
  Maps的value既能够对应字符串也能够对应一个Maps。例如:apiVersion:v1kind:Podmetadata:name:kube100sitelabels:app:web
  注:上述的YAML文件中,metadata这个KEY对应的值为一个Maps,而嵌套的labels这个KEY的值又是一个Map。实际使用中可视情况进行多层嵌套。
  YAML处理器根据行缩进来知道内容之间的关联。上述例子中,使用两个空格作为缩进,但空格的数据量并不重要,只是至少要求一个空格并且所有缩进保持一致的空格数。例如,name和labels是相同缩进级别,因此YAML处理器知道他们属于同一map;它知道app是lables的值因为app的缩进更大。
  2。2)YAMLLists
  List即列表,说白了就是数组,例如:argsbeijingshanghaishenzhenguangzhou
  可以指定任何数量的项在列表中,每个项的定义以破折号()开头,并且与父元素之间存在缩进。
  当然Lists的子项也可以是Maps,Maps的子项也可以是List,例如:apiVersion:v1kind:Podmetadata:name:kube100sitelabels:app:webspec:containers:name:frontendimage:nginxports:containerPort:80name:flaskappdemoimage:jcdemoflaskappports:8080
  如上述文件所示,定义一个containers的List对象,每个子项都由name、image、ports组成,每个ports都有一个KEY为containerPort的Map组成。二、yaml常见语法1)apiVersion
  查看当前所有可用的API版本kubectlapiversions
  1。6版本之前apiVsersion:extensionsv1beta1
  1。6版本到1。9版本之间:appsv1beta1
  1。9版本之后:appsv1
  常用apiversion
  只要记住6个常用的apiversion一般就够用了。v1:KubernetesAPI的稳定版本,包含很多核心对象:pod、service等。appsv1:包含一些通用的应用层的api组合,如:Deployments,RollingUpdates,andReplicaSets。batchv1:包含与批处理和类似作业的任务相关的对象,如:job、cronjob。autoscalingv1:允许根据不同的资源使用指标自动调整容器。networking。k8s。iov1:用于Ingress。rbac。authorization。k8s。iov1:用于RBAC。
  下面是官方原文链接,有兴趣的同学可以看看,页面是可以选择语言的,但是中文翻译有点问题,建议中文英文对照着看。https:kubernetes。iodocsreferenceusingapi2)kind
  kind指定这个资源对象的类型,如pod、deployment、statefulset、job、cronjob3)metadata
  metadata常用的配置项有name,namespace,即配置其显示的名字与归属的命名空间。4)spec
  一个嵌套字典与列表的配置项,也是主要的配置项,支持的子项非常多,根据资源对象的不同,子项会有不同的配置。
  如一个pod的spec配置:apiVersion:v1必选,版本号,例如v1kind:Pod必选,Podmetadata:必选,元数据name:nginx必选,Pod名称labels:自定义标签app:nginx自定义标签名字spec:必选,Pod中容器的详细定义containers:必选,Pod中容器列表,一个pod里会有多个容器name:nginx必选,容器名称image:nginx必选,容器的镜像名称imagePullPolicy:IfNotPresent〔AlwaysNeverIfNotPresent〕获取镜像的策略Alawys表示下载镜像IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像ports:需要暴露的端口库号列表containerPort:80容器需要监听的端口号restartPolicy:Always〔AlwaysNeverOnFailure〕Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
  一个service的spec的配置:apiVersion:v1kind:Servicemetadata:name:servicehellolabels:name:servicehellospec:type:NodePort这里代表是NodePort类型的,另外还有ingress,LoadBalancerports:port:80这里的端口和clusterIP(kubectldescribeserviceservicehello中的IP的port)对应,即在集群中所有机器上curl10。98。166。242:80可访问发布的应用服务。targetPort:8080端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081protocol:TCPnodePort:31111所有的节点都会开放此端口3000032767,此端口供外部调用。selector:run:hello这里选择器一定要选择容器的标签,之前写name:kubenode是错的。
  这里是将nginx映射到外网,访问地址就是本机ip:31111三、port详解port:port是k8s集群内部访问service的端口,即通过clusterIP:port可以访问到某个servicenodePort:nodePort是外部访问k8s集群中service的端口,通过nodeIP:nodePort可以从外部访问到某个service。targetPort:targetPort是pod的端口,从port和nodePort来的流量经过kubeproxy流入到后端pod的targetPort上,最后进入容器。containerPort:containerPort是pod内部容器的端口,targetPort映射到containerPort。
  四、yaml简单示例
  接下来就是看看deployment、pod、service这三种资源的说明书例子1)deploymentapiVersion:appsv11。9。0之前的版本使用appsv1beta2,可通过命令kubectlapiversions查看kind:Deployment指定创建资源的角色类型metadata:资源的元数据属性name:nginxdeployment资源的名字,在同一个namespace中必须唯一spec:replicas:2副本数量2selector:定义标签选择器matchLabels:app:webservertemplate:这里Pod的定义metadata:labels:Pod的labelapp:webserverspec:指定该资源的内容containers:name:nginx容器的名字image:nginx:1。12。1容器的镜像地址ports:containerPort:80容器对外的端口
  执行以下命令创建deployment资源kubectlcreatefnginx。yaml2)podapiVersion:v1kind:Podmetadata:name:podredislabels:name:redisspec:containers:name:podredisimage:docker。ioredisports:containerPort:80容器对外的端口
  执行以下命令创建pod资源kubectlcreatefpodredis。yaml3)serviceapiVersion:v1kind:Service指明资源类型是servicemetadata:name:httpdsvcservice的名字是httpdsvclabels:name:httpdsvcspec:ports:将service8080端口映射到pod的80端口,使用TCP协议port:8080targetPort:80protocol:TCPselector:run:httpd指明哪些label的pod作为service的后端
  执行以下命令创建service资源kubectlcreatefhttpdsvc。yaml五、Label与Selector1)Label
  Label是Kubernetes系列中另外一个核心概念。是一组绑定到K8s资源对象上的keyvalue对。同一个对象的labels属性的key必须唯一。label可以附加到各种资源对象上,如Node,Pod,Service,RC等。
  通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作。
  示例如下:版本标签:release:stable,release:canary。。。环境标签:environment:dev,environment:production架构标签:tier:frontend,tier:backend,tier:middleware分区标签:partition:customerA,partition:customerB。。。质量管控标签:track:daily,track:weekly2)Selector
  Labelselector是Kubernetes核心的分组机制,通过labelselector客户端用户能够识别一组有共同特征或属性的资源对象。符合这个标签的Pod会作为这个Service的backend。apiVersion:v1kind:Servicemetadata:name:hellolabels:app:hellospec:ports:port:80targetPort:80selector:app:hello六、kubectlcreate还是kubectlapply二者区别
  kubectlcreate:kubectlcreate命令可创建新资源。因此,如果再次运行该命令,则会抛出错误,因为资源名称在名称空间中应该是唯一的。
  kubectlapply:kubectlapply命令将配置应用于资源。如果资源不在那里,那么它将被创建。kubectlapply命令可以多次运行,因为它只是应用如下所示的配置。在这种情况下,配置没有改变。所以,pod没有改变。简单来说,如果在单个文件上运行操作以创建资源,则create和apply基本相同。但是,apply允许您在目录下的多个文件上同时创建和修改。

迪拜将建全球最大环状建筑?自带轨道和观光吊舱!头顶一块布,全球我最富!说的就是富得流油的中东土豪们,而在中东迪拜又是其中的佼佼者,因此在这座纸醉金迷的城市,经常能看到一些不可思议的建筑。最近,迪拜的城市规划部门……楼继伟应尽快开展房地产税试点,老家的房子需要交税吗?楼继伟:应尽快开展房地产税试点随着疫情放开,经济的复苏,房地产依旧是重点关注对象,现在的房地产已不同往日,房住不炒已经成为了主流,不仅如此下一步还将征收房地产税。近……梅艳芳告诉你现实中真实又恐怖的狂飙开年扫黑大剧《狂飙》圆满收官,这部剧受到众多观众的热捧,豆瓣评分一度涨到9。1。剧中高启强领导下的黑社会组织争名逐利,打打杀杀,视人命如草芥,犯罪手段令人发指。那么现实中的黑社……斩断茶叶过度包装背后的推手几十克重的茶叶被装进各式漂亮的瓶子,外加泡沫、隔板、纸盒,包装比茶叶重好几倍甚至十几倍清明节前,市场迎来一波新茶上市高峰,过度包装问题再次凸显。业内人士表示,不少高档礼品……上海临港四大重点产业哪些人才最紧缺?涉及这177个岗位临港新片区目前正在爆发性增长的集成电路、人工智能、生物医药和智能新能源汽车四大重点前沿产业领域,哪些人才最紧缺?3月22日,2023临港科创先锋论坛活动上发布的《临港新片……可怕的2岁,麻烦的3岁上集2岁前的孩子在生活中与父母分享了许多愉悦的第一次,给了父母很多欣喜。可自从过完2岁生日,父母们会发现孩子身上发生了很多奇妙的变化:他精力充沛,自我意识强烈,越来越不按照你的指令……2月21日更新NBA各数据排行,威少乐福等球星完成买断签约新大家好,我是小北聊球,每日我都会更新NBA每日赛事结果及一些重要消息,有感兴趣的小伙伴可以关注我,一同交流,欢迎打扰。大家好,我是小北聊球,每日我都会更新NBA每日赛事结果及一……半目负于朴廷桓!柯洁输了农心杯也丢了第一人宝座!第24届农心杯第11场,首次担任副将的柯洁,在今天与朴廷桓的第31场战役中失利,中国仅剩主将辜梓豪独自面对韩国前三。柯、朴两人过往30次交手战成15比15,其中执白胜高达……摩尔定律提出者戈登摩尔去世,为英特尔联合创始人当地时间3月24日,英特尔公司和戈登与贝蒂摩尔基金会(GordonandBettyMooreFoundation)宣布,英特尔联合创始人戈登摩尔去世,享年94岁。戈登与贝……永辉发力健康饮品赛道旗下自有品牌推出新品【环球网综合报道】3月20日消息,永辉旗下休闲零食品牌馋大狮继去年上新小青柠汁、玉米汁后,推出全新健康饮品馋大狮莲子汁。据官方介绍,在产品制作工艺方面,馋大狮莲子汁采用锁……跟上苏马步伐,打卡姑苏景点!沿途还有这些精彩表演首届苏州马拉松将正式开跑,众多马拉松爱好者将穿越古城,感受苏州深厚的文化底蕴和繁荣的发展活力。首届苏州城市马拉松赛道途经苏州工业园区、姑苏区、高新区,串联苏州古今地标和繁……雷作无疑!ForspokenSteam目前仅有379人在玩在《Forspoken》试玩Demo发布之后,很多玩家就确定这是款暴雷之作。事实也正是如此,即使索尼大力宣发,仍是销量惨淡。目前其Steam玩家在线数更是仅有379人。该……
易梦玲是很多人心中iPhone原相机拍照之神吧?有羊崽后台戳我,说易梦玲这个女人最近好像又好看了,问羊能不能写写。好吧我去找了下,下面这几张是她的原相机live实拍动图,大家觉得怎么样?之前下面部略有点臃肿感,让她整张……还记得15年前那对为了上学,一起溜索过江的姐妹吗,如今怎样了如果您喜欢这篇文章,请点击右上方的关注。感谢您的支持和鼓励,希望能给您带来舒适的阅读体验。2007年,一位青年摄影师跋山涉水来到云南采风,他此行的目的是为了拍摄气势磅礴的……京东估值过低但不值得购买摘要京东股票和许多中国股票年初至今已下跌23,上涨潜力达81。然而,我将JD评为持有,因为我认为该公司的长期增长和发展存在重大不利因素,我将在文章中详细阐述。我认为……2022年6月2526日云南省部分风景区天气预报晋宁郑和公园,阵雨转阴,1626度西双版纳望天树风景区,小雨转阵雨,2231度怒江大峡谷,小雨,2030度宁洱那柯里茶马古道,阵雨转阴,1927度昭通彝……孙俪真会打扮,生活精致,事业两不误孙俪是一位各方面条件都很出众的女明星,要颜值有颜值、要身材有身材、要演技有演技,而且她的影视作品也相当的受欢迎,只是孙俪相当的低调,不太喜欢炒作自己,也不太喜欢做一些博眼球的事……滴滴司机,我只做预约单,每天流水破千二八定律适用于任何行业,不管你做什么工作,永远只有20的人赚得盆满钵满的,剩下的80永远都是在陪跑凑热闹。网约车行业同样如此,前几天一名广州的专车司机晒出自己7月跑了4万……延庆制服和注册分中心正式运行12月14日,位于冬奥会延庆赛区的延庆制服和注册分中心正式运行,并进行首批身份注册卡和制服发放。制服发放现场。供图延庆赛区延庆制服和注册分中心是负责延庆赛区工作人员……云南拾翠公司创新商业模式小市集创出大品牌来源:经济日报在云南昆明闹市中,一个具有当地民族特色的手工艺集合店拾翠市集,成为许多时尚文创爱好者的网红打卡地。布艺扎染、银器饰品、竹编工具代表云南各地特色的手工艺品陈列……如果有100万,是存银行好还是买房好?还有人觉得买房更好吗把钱存在银行和买房,都可以视为理财的一种,只不过两种理财方式在各方面都存在较大区别。那么,如果手上有100万,到底是存在银行好呢,还是用来买房好?有100万是存银行好还是……去日本旅行,千万当心歌舞伎町这些坑人的把戏,到处防不胜防无论是周末还是工作日,这里都非常热闹。各种各样的人聚集在一起。交通信号灯里总是挤满了人,包括拎着公文包的上班族、拎着旅行包的好奇游客,当然还有那些对周围的人漠不关心、保持距离的……死亡循环获Gamespot年度最佳游戏将影响几代从业者今日,Gamespot宣布2021年度最佳游戏奖项的获得者为《死亡循环》。《死亡循环》是一款次世代第一人称射击游戏,由曾打造出《Dishonored》系列的ArkaneL……成年人一天要喝多少水才是健康的成人每天饮水量应该在20003000ml比较合适,同时,每天的饮水量,也与其尿量、运动量等方面有关,具体如下:1、尿量:正常人每天的尿量是1500mL左右,可以到1500……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网