資源編排(YAML)

2022-02-26 20:08:45 字數 3988 閱讀 2050

k8s 裡所有的資源或者配置檔案都可以用 yaml 或 json 定義。yaml 是乙個 json/ 的超集,任何有效 json 檔案也都是乙個有效的yaml檔案。·

• 縮排表示層級關係

• 不支援製表符「tab」縮排,使用空格縮排

• 通常開頭縮排 2 個空格

• 字元後縮排 1 個空格,如冒號、逗號等

• 「---」 表示yaml格式,乙個檔案的開始

• 「#」注釋

apiversion

api版本

kind

資源型別

metadata

資源元資料

spec

資源規格

replicas

副本數量

selector

標籤選擇器

template

pod模板

metadata

pod元資料

spec

pod規格

containers

容器配置

資源欄位太多,記不住怎麼辦?

• 用run命令生成

kubectl create deployment nginx --image=nginx:1.14 -o yaml --dry-run> my-deploy.yaml

--dry-run 表示會測試 建立資源,但是並不會真的建立。

• 用get命令匯出

kubectl get my-deploy/nginx -o=yaml --export > my-deploy.yaml

• pod容器的字段拼寫忘記了

kubectl explain pods.spec.containers

spec:         #必選,pod中容器的詳細定義

containers: #必選,pod中容器列表

- name: string #必選,容器名稱

image: string #必選,容器的映象名稱

imagepullpolicy:

[always | never | ifnotpresent

] command:

[string

]#容器的啟動命令列表,如不指定,使用打包時使用的啟動命令

args:

[string

]#容器的啟動命令引數列表

workingdir: string #容器的工作目錄

volumemounts: #掛載到容器內部的儲存卷配置

- name: string #引用pod定義的共享儲存卷的名稱,需用volumes

部分定義的的卷名

mountpath: string #儲存卷在容器內mount的絕對路徑,應少於512字元

readonly: boolean #是否為唯讀模式

ports: #需要暴露的埠庫號列表

- name: string #埠號名稱

containerport: int #容器需要監聽的埠號

hostport: int #容器所在主機需要監聽的埠號,預設與container相同

protocol: string #埠協議,支援tcp和udp,預設tcp

env: #容器執行前需設定的環境變數列表

- name: string #環境變數名稱

value: string #環境變數的值

resources: #資源限制和請求的設定

limits: #資源限制的設定

cpu: string #cpu的限制,單位為core數,將用於docker run --cpu-shares引數

memory: string #記憶體限制,單位可以為mib/gib,將用於docker run --memory引數

requests: #資源請求的設定

cpu: string #cpu請求,容器啟動的初始可用數量

memory: string #記憶體清楚,容器啟動的初始可用數量

livenessprobe: #對pod內個容器健康檢查的設定,當探測無響應幾次後將自動重啟該容器,檢查方法有exec、httpget和tcpsocket,對乙個容器只需設定其中一種方法即可

exec: #對pod容器內檢查方式設定為exec方式

command:

[string

]#exec方式需要制定的命令或指令碼

httpget: #對pod內個容器健康檢查方法設定為httpget,需要制定path、port

tcpsocket: #對pod內個容器健康檢查方式設定為tcpsocket方式

port: number

initialdelayseconds: 0#容器啟動完成後首次探測的時間,單位為秒

timeoutseconds: 0#對容器健康檢查探測等待響應的超時時間,單位秒,預設1秒

periodseconds: 0#對容器監控檢查的定期探測時間設定,單位秒,預設10秒一次

successthreshold: 0failurethreshold: 0securitycontext:

privileged:false

restartpolicy:

[always | never | onfailure

]#pod的重啟策略,always表示一旦不管以何種方式終止執行,kubelet都將重啟,onfailure表示只有pod以非0退出碼退出才重啟,nerver表示不再重啟該pod

nodeselector: obeject #設定nodeselector表示將該pod排程到包含這個label的node上,以key:value的格式指定

imagepullsecrets: #pull映象時使用的secret名稱,以key:secretkey格式指定

- name: string

hostnetwork:false #是否使用主機網路模式,預設為false,如果設定為true,表示使用宿主機網路

volumes: #在該pod上定義共享儲存卷列表

- name: string #共享儲存卷名稱 (volumes型別有很多種)

emptydir: {} #型別為emtydir的儲存卷,與pod同生命週期的乙個臨時目錄。為空值

hostpath: string #型別為hostpath的儲存卷,表示掛載pod所在宿主機的目錄

path: string #pod所在宿主機的目錄,將被用於同期中mount的目錄

secret: #型別為secret的儲存卷,掛載集群與定義的secre物件到容器內部

scretname: string

items:

- key: string

path: string

configmap: #型別為configmap的儲存卷,掛載預定義的configmap物件到容器內部

name: string

items:

- key: string

path: string

比如說有個 nginx-deployment.yaml 

區別:kubectl create:

(1)kubectl create命令,是先刪除所有現有的東西,重新根據yaml檔案生成新的。所以要求yaml檔案中的配置必須是完整的

(2)kubectl create命令,用同乙個yaml 檔案執行替換replace命令,將會不成功,fail掉。

K8S 服務編排YAML

yaml 是一種簡潔的非標記語言。語法格式 在k8s部署乙個應用的yaml內容大致分為兩部分 控制器定義 定義控制器屬性 被控制物件 pod模板,定義容器屬性 具體字段意義 apiversion api版本 kind 資源型別 metadata 資源元資料 spec 資源規格 replicas 副本...

K8S容器編排YAML詳解

k8s 集群中對資源管理和資源物件編排部署都可以通過宣告樣式 yaml 檔案來解決,也就是可以把需要對資源物件操作編輯到yaml格式檔案中,一般使用 yaml 格式的檔案來建立符合我們預期期望的 pod 我們把這種檔案叫做資源清單檔案,通過 kubectl 命令直接使用資源清單檔案就可以實現對大量的...

k8s專欄 資源編排

參考k8s教程由淺入深 編排方法 使用yaml檔案配置資源物件,通過kubectl命令對資源進行編排部署 1.定義 標記性語言,常用語配置檔案 2.書寫格式 3.yaml檔案組成部分 組成 控制器 被控制物件 控制器定義 apiversion extensions v1beta1 api版本 kin...