k8s之YAML文件书写秘笈

这篇具有很好参考价值的文章主要介绍了k8s之YAML文件书写秘笈。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

     k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

       在kubernetes的江湖里,一直流传YAML的传说,它是Yet Another Markup Language的英文缩写,用来配置k8s里的各类资源.。通常,你可以选择YAML或JSON来完成声明式的配置文件,这种方式便于复用和保存,但命令式的方式有一定的局限性,仅有部分kubernetes资源可以使用命令式方式。本秘笈将从招式(语法)和心法(思路)出发,从四个方面阐述YAML文件的秘密,快速提高内力,增强kubernetes学习信心。

第一式: 仙人指路

       永远不要尝试记住所有API或命令,计算机技术重要的是理解和实践。API、命令、类名等等只需在理解的基础上,然后有目的的去查阅、调用,最终解决问题。在书写Kubernetes的YAML文件时,同样会遇到例如apiVersion,kind这样的键,具体的值均不需要记忆,利用相关的命令即可快速查询得到。先去

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

用kubectl api-resources查询到的结果

      从上图可以看到kubernetes的资源名称,快捷键,版本号,Kind等信息列表,在书写YAML文件时,如果不知道具体的API版本或KIND可以用这个命令获得。APIVERSION主要分为core,apps这两个大组,像pod,secert,service,configmap等都是kubernetes的核心资源,因此在书写与这类资源相关的Yaml文件时,仅需写版本号。而对于像deployment,daemonset,statefulset,replicaset这类集合,与应用部署强关联的资源,需要先加上apps这个组,然后再写版本号,例如:apiVersion:apps/v1。

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

用kubectl edit deploy nginx-deployment获得所有参数

利用kubectl edit不仅可以修改原有的资源,还可以看到相关资源的所有参数,用原来的文件来给我们指导,正是仙人指路的本意。

第二式: 唯我独尊

     对于Yaml文件后面的部分,同样有规律可循。kubernetes的Yaml文件主要想表达两种状态,一个是期望状态,一个是实际状态。其中,期望状态以结果为导向,比如replica副本的数量,用户只需要告诉api-server自己希望的结果,很有一种唯我独尊重的感觉。在yaml文件的spec部分,表达了这种期望。而真实状态很多时候不需要用户去写,利用相关的命令可以查询到。spec部分的内容同样不需要去记,可以用相关的命令查询到。

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

用kubectl explain pod解释pod资源

利用explain可以解释kubernetes所有资源,上图是以pod资源为例,可以告诉用户pod资源具体的对象或类,其中就包括spec,让我们乘胜追击,看看spec具体可以包含哪些键。

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

kubectl explain pod.spec

在书写yaml文件时,可以利用explain了解每个资源的细节,摒弃死记硬背的同时也可以加深理解。

第三式: 凌波微步

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

所谓凌波微步,意思是yaml文件的书写要挖掘缩进规律,从上图这个Deployment的yaml文件可以看出。但凡是map的键均顶格来写,而map的值均有两格缩写。yaml的数据结构有两种map和list,上图只有containers是list,其余全是map.在yaml中,这两种数据结构自身通常嵌套,对于list的值,顶格写,且要先加上-。

第四式: 虎鹤双形

书写kubernetes的配置文件,可以以yaml格式,也可以以json,这两种方式通常可以互相转换,但是yaml由于其语法可读性更强,已取得支配地位。

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,jsonjson和yaml对比

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

用-o json把已有资源导成json格式

无论是yaml还是json,其实底层都只不过是go和kubernetes API的交互,比如下面的代码

k8s之YAML文件书写秘笈,kubernetes,容器,云原生,docker,运维,json

  总之,yaml文件仅是用来与kubernetes api互动的一种方式,只要勤于练习,定能从中发现规律,提高书写效率。文章来源地址https://www.toymoban.com/news/detail-799422.html

到了这里,关于k8s之YAML文件书写秘笈的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包