? ? ?
? ? ? ?在kubernetes的江湖里,一直流傳YAML的傳說,它是Yet Another Markup Language的英文縮寫,用來配置k8s里的各類資源.。通常,你可以選擇YAML或JSON來完成聲明式的配置文件,這種方式便于復(fù)用和保存,但命令式的方式有一定的局限性,僅有部分kubernetes資源可以使用命令式方式。本秘笈將從招式(語法)和心法(思路)出發(fā),從四個方面闡述YAML文件的秘密,快速提高內(nèi)力,增強kubernetes學(xué)習(xí)信心。
第一式: 仙人指路
? ? ? ?永遠(yuǎn)不要嘗試記住所有API或命令,計算機技術(shù)重要的是理解和實踐。API、命令、類名等等只需在理解的基礎(chǔ)上,然后有目的的去查閱、調(diào)用,最終解決問題。在書寫Kubernetes的YAML文件時,同樣會遇到例如apiVersion,kind這樣的鍵,具體的值均不需要記憶,利用相關(guān)的命令即可快速查詢得到。先去
用kubectl api-resources查詢到的結(jié)果
? ? ? 從上圖可以看到kubernetes的資源名稱,快捷鍵,版本號,Kind等信息列表,在書寫YAML文件時,如果不知道具體的API版本或KIND可以用這個命令獲得。APIVERSION主要分為core,apps這兩個大組,像pod,secert,service,configmap等都是kubernetes的核心資源,因此在書寫與這類資源相關(guān)的Yaml文件時,僅需寫版本號。而對于像deployment,daemonset,statefulset,replicaset這類集合,與應(yīng)用部署強關(guān)聯(lián)的資源,需要先加上apps這個組,然后再寫版本號,例如:apiVersion:apps/v1。
用kubectl edit deploy nginx-deployment獲得所有參數(shù)
利用kubectl edit不僅可以修改原有的資源,還可以看到相關(guān)資源的所有參數(shù),用原來的文件來給我們指導(dǎo),正是仙人指路的本意。
第二式: 唯我獨尊
? ? ?對于Yaml文件后面的部分,同樣有規(guī)律可循。kubernetes的Yaml文件主要想表達(dá)兩種狀態(tài),一個是期望狀態(tài),一個是實際狀態(tài)。其中,期望狀態(tài)以結(jié)果為導(dǎo)向,比如replica副本的數(shù)量,用戶只需要告訴api-server自己希望的結(jié)果,很有一種唯我獨尊重的感覺。在yaml文件的spec部分,表達(dá)了這種期望。而真實狀態(tài)很多時候不需要用戶去寫,利用相關(guān)的命令可以查詢到。spec部分的內(nèi)容同樣不需要去記,可以用相關(guān)的命令查詢到。
用kubectl explain pod解釋pod資源
利用explain可以解釋kubernetes所有資源,上圖是以pod資源為例,可以告訴用戶pod資源具體的對象或類,其中就包括spec,讓我們乘勝追擊,看看spec具體可以包含哪些鍵。
kubectl explain pod.spec
在書寫yaml文件時,可以利用explain了解每個資源的細(xì)節(jié),摒棄死記硬背的同時也可以加深理解。
第三式: 凌波微步
所謂凌波微步,意思是yaml文件的書寫要挖掘縮進規(guī)律,從上圖這個Deployment的yaml文件可以看出。但凡是map的鍵均頂格來寫,而map的值均有兩格縮寫。yaml的數(shù)據(jù)結(jié)構(gòu)有兩種map和list,上圖只有containers是list,其余全是map.在yaml中,這兩種數(shù)據(jù)結(jié)構(gòu)自身通常嵌套,對于list的值,頂格寫,且要先加上-。
第四式: 虎鶴雙形
書寫kubernetes的配置文件,可以以yaml格式,也可以以json,這兩種方式通常可以互相轉(zhuǎn)換,但是yaml由于其語法可讀性更強,已取得支配地位。
json和yaml對比
用-o json把已有資源導(dǎo)成json格式
無論是yaml還是json,其實底層都只不過是go和kubernetes API的交互,比如下面的代碼
文章來源:http://www.zghlxwxcb.cn/news/detail-799422.html
? 總之,yaml文件僅是用來與kubernetes api互動的一種方式,只要勤于練習(xí),定能從中發(fā)現(xiàn)規(guī)律,提高書寫效率。文章來源地址http://www.zghlxwxcb.cn/news/detail-799422.html
到了這里,關(guān)于k8s之YAML文件書寫秘笈的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!