yaml基礎
學習k8s就不得不學習下yaml語法了
yaml是一種簡潔的非標記語言,yaml以資料為中心,使用空白,縮排,分行組織資料,從而使得表示更加簡潔易讀。
yaml語法規則:
大小寫敏感
使用縮排表示層級關係
縮排時不允許使用tab鍵,只允許使用空格
縮排的空格數目不重要,只要相同層級的元素左側對齊即可
」#」 表示注釋,從這個字元一直到行尾,都會被解析器忽略
字串可以不用引號標註
列表項,通過減號「-」加乙個空格,多個項使用同樣縮排級別做為同一列表部分
map結構裡面的鍵值對(key/value)用冒號「:」來分割
陣列用「」包括起來,hash用「{}」來包括
以上就是yaml的語法
在kubernetes中,只需要知道兩種結構型別即可:
lists
maps
scalar 在k8s中不使用此型別
使用yaml用於k8s的定義帶來的好處包括:
便捷性:不必新增大量的引數到命令列中執行命令
可維護性:yaml檔案可以通過源頭控制,跟蹤每次操作
靈活性:yaml可以建立比命令列更加複雜的結構
yaml maps
yaml maps
map,雜湊表 ,使用冒號(:)表示鍵值對,同一縮排的所有鍵值對屬於乙個map,例如:
apiversion: v1
kind: serviceaccount
metadata:
labels:
addonmanager.kubernetes.io/mode: reconcile
name: kubernetes-dashboard
namespace: kube-system
如果要把多個kind寫於乙個檔案需要用到
--- 為可選的分隔符 ,當在乙個檔案中定義多個結構時需要
apiversion: v1
kind: serviceaccount
metadata:
labels:
addonmanager.kubernetes.io/mode: reconcile
name: kubernetes-dashboard
namespace: kube-system
#以上labels,name,namespace為同一級,因為都縮排了相同的空格
--- #分隔符,因為此yaml檔案定義了二個不同的kind型別
kind: deployment
metadata:
name: kubernetes-dashboard
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: reconcile
yaml lists
list 陣列,使用連字元(-)表示,例如:
volumemounts:
- name: kubernetes-dashboard-certs
mountpath: /certs
- name: tmp-volume
mountpath: /tmp
資料結構巢狀
map巢狀map
apiversion: v1
kind: configmap
metadata: #map巢狀map
labels: #map巢狀map
# allows editing resource and makes sure it is created first.
addonmanager.kubernetes.io/mode: ensureexists
name: kubernetes-dashboard-settings
namespace: kube-system
map巢狀list
volumes: #map
- name: kubernetes-dashboard-certs #list map
secret:
secretname: kubernetes-dashboard-certs
- name: tmp-volume
emptydir: {}
list巢狀list
在k8s的yaml中比較少見
list巢狀map
volumes: #map
- name: kubernetes-dashboard-certs #list map巢狀list
secret: #map list巢狀map
secretname: kubernetes-dashboard-certs
- name: tmp-volume
emptydir: {}
yml檔案tab 空格 c語言makefile檔案
toc 在軟體的工程中的原始檔是很多的,其按照型別 功能 模組分別放在若干個目錄和檔案中,哪些檔案需要編譯,那些檔案需要後編譯,那些檔案需要重新編譯,甚至進行更複雜的功能操作,這就有了我們的系統編譯的工具。在linux和unix中,有乙個強大的實用程式,叫make,可以用它來管理多模組程式的編譯和鏈...
yaml檔案 yml 寫法簡介
yaml yet another markup language 發音 j m l 一種基於unicode容易閱讀,容易和指令碼語言互動的,用來表達資料序列的程式語言。指令碼語言 由於實現簡單,解析成本很低,yaml 特別適合在指令碼語言中使用 序列化 yaml是由宿主語言資料型別直轉,的比較適合做...
properties檔案快速轉為yml檔案
只是做了簡單的測試,沒有考慮過檔案裡有注釋的情況 思想就是先把資料讀到map中,然後再儲存到新的檔案中 public class test private static void copyto file oldfile,file newfile throws exception 把map中資料輸出到...