前言
本文為「Kubernetes 實作手冊:基礎入門篇」課程的學習筆記。
簡介
所謂的命令式指令(Imperative Commands)指的是,kubectl 選定一個動作並執行,像是:
- kubectl run:運行一個資源。
- kubectl create:創建一個資源。
- kubectl delete:刪除一個資源。
- kubectl label:幫節點或 Pod 新增標籤。
- kubectl scale:擴縮 Pod 數量。
命令式指令的優點是簡單且易學,缺點是操作沒有紀錄、沒有樣板可以參考。
指定配置檔
也可以透過 YAML 檔或 JSON 檔來描述要執行操作的資源,並將相關內容直接發送到 API Server。
例如使用 kubectl create
指令,指定一個 YAML 檔,並創建資源。
1 | kubectl create -f introduction/pod/basic.yaml |
例如使用 kubectl delete
指令,指定一個 YAML 檔,並刪除資源。
1 | kubectl delete -f introduction/pod/basic.yaml |
以下是一個描述 Pod 的 YAML 範例檔,詳細的欄位需要參考官方文件。
1 | apiVersion: v1 |
以下透過指定配置檔的方式,創建一個 Pod。
1 | kubectl create -f introduction/pod/basic.yaml |
使用 kubectl edit
指令,可以編輯一個 Pod。但是能修改的欄位有限,例如 image 名稱可以被修改。
1 | kubectl edit pod myapp-pod |
使用 kubectl replace
指令,可以進行覆蓋。但是使用上並不方便,因為需要先輸出由 Kubernetes 補齊的完整欄位的 YAML 檔,修改後才能再進行覆蓋,否則會缺少一些重要欄位而覆蓋失敗。例如:
1 | kubectl get pod myapp-pod -o yaml > new.yaml |
最後,指定配置檔並刪除此 Pod。
1 | kubectl delete -f introduction/pod/basic.yaml |
搭配配置檔的優點是,配置檔可以被加進版本控制,可以有樣板參考,例如 YAML 檔;缺點是配置檔的欄位相當繁雜,而且修改困難。