Kuberbetes學習記錄(三):kubectl和YAML
阿新 • • 發佈:2022-04-06
1. 常用指令
1.1 建立一個java測試專案
kubectl create deployment java-web --image=lizhenliang/java-demo
apply和create的區別:
apply是資源的建立和更新,create只能用於資源建立,再更新yaml之後是不能用create的
所以直接用apply代替create就可以
1.2 暴露埠
這裡暴露的埠是k8s內部訪問的埠,外部訪問埠需要在pod資訊檢視
實際上是建立了一個service資源
kubectl expose deployment java-web --port=80 --target-port=8080--name=java-web-service --type=NodePort
檢視暴露的埠資訊,可以看到之前部署的那個java應用對外暴露在30850埠
1.3 模擬升級
如果應用上線之後需要升級,可以通過修改yaml的映象源或者採用命令列的形式來修改
比如我們要把之前的java-web資源中的景象由java-demo更換為tomcat
kubectl set image deployment java-web java-demo=tomcat
檢視pod的執行狀況,可以看到在一個升級操作中,在新版本上線之前,舊版本不會停止執行
檢視一個資源的歷史版本資訊
kubectl rollout history deployment/java-web
可以看到當前有兩個版本
1.4 回滾
回滾到上一個版本
kubectl rollout undo deployment/java-web
回滾到指定版本
kubectl rollout undo deployment/java-web --to-revision=3
注意只能回滾到history能看到的歷史版本,再往前是沒辦法回滾的
1.5 擴容
kubectl scale deployment java-web --replicas=10
1.6 刪除
刪除資源不能直接刪除pod,要刪除其控制器,同時也要刪除其service
kubectl delete deployment/java-web kubectl delete service/java-web-service
1.7 指令文件
Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文件_Kubernetes中文社群
2. YAML檔案
2.1 YAML檔案格式
YAML是一種簡潔的非標記語言
語法格式:
- 縮排表示層級關係
- 不支援製表符 "tab" 縮排,使用空格縮排
- 通常開頭縮排2個空格
- 字元後縮排1個空格,比如冒號、逗號
- “---” 表示YAML格式,一個檔案的開始
- "#" 表示註釋
2.2 一個簡單的YAML檔案
整個YAML檔案大體上可以分為定義控制器和定義被控制物件
在控制器部分:
- apiVersion:當前版本
- kind:控制器型別,其中deployment就是用來部署無狀態應用的
- metadata:一些控制器的元資訊,比如它之下的控制器名稱name和控制器所在的名稱空間namespace
- spec:控制器的資源規格,控制3個副本數、標籤選擇器選擇app:nginx這一組pod
- template:pod的模板,其中包含了一些資訊
- metadata:pod的元資訊,其中包含了一個標籤資訊app:nginx,表示這組pod受上面定義的deployment管理
- spec:Pod的資源規格,包含了容器配置
- containers:容器配置,主要包含容器名稱、映象源、暴露埠、資料卷掛載等
YAML檔案關鍵字太多,格式太亂了記不住
可以使用以下兩個命令匯出YAML檔案
kubectl create deployment nginx --image=nginx:1.14 -o yaml --dry-run=client > my-deploy.yaml
對於一個正在執行的pod,也可以通過get命名匯出
這是一個比較全的YAML模板
kubectl get deploy nginx -o yaml > nginx-deploy.yaml
可以用kebuctl explain來檢視關鍵字的寫法,以及其下級有什麼欄位