命令 vs 配置文件
Kubernetes 支持兩種方式創建資源:
1. 用 kubectl 命令直接創建
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2
在命令行中通過參數指定資源的屬性。
2. 通過配置文件和 kubectl apply
創建
要完成前面同樣的工作,可執行命令:
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment configured
3.nginx.yml 的內容說明
apiVersion: extensions/v1beta1 #api的版本 kind: Deployment #資源的類型 metadata: #資源的元數據 name: nginx-deployment #資源的名稱 spec: #資源的說明 replicas: 2 #副本2個,缺省為1 template: #pod模板 metadata: #pod元數據 labels: #標簽 app: web_server #標簽選擇器 spec: containers: - name: nginx image: nginx:1.79
資源的屬性寫在配置文件中,文件格式為 YAML。
這種配置文件對格式的要求極為嚴格,縮進不能錯,空格不能少打,vim編輯器的高亮提示會對我們寫配置文件有幫助,如果語法錯誤會檢測到。
4.這兩種方式進行比較
基於命令的方式:
-
簡單直觀快捷,上手快。
-
適合臨時測試或實驗。
基於配置文件的方式:
-
配置文件描述了
What
,即應用最終要達到的狀態。 -
配置文件提供了創建資源的模板,能夠重復部署。
-
可以像管理代碼一樣管理部署。
-
適合正式的、跨環境的、規模化部署。
-
這種方式要求熟悉配置文件的語法,有一定難度。
kubectl apply
不但能夠創建 Kubernetes 資源,也能對資源進行更新,非常方便。不過 Kubernets 還提供了幾個類似的命令,例如 kubectl create
、kubectl replace
、kubectl edit
和 kubectl patch
。
為避免造成不必要的困擾,我們會盡量只使用 kubectl apply
,
此命令已經能夠應對超過 90% 的場景,事半功倍。
5.資源的刪除
配置文件創建的資源 也可以用之前的方式刪除
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment created
指定配置刪除
[root@k8s-master k8s]# kubectl delete -f nginx.yaml deployment.extensions "nginx-deployment" deleted