這篇我們要來介紹 GKE 常用的指令 - kubectl。以及 k8s controller 相關物件型態,包含 deployment、service、ingress 等。
kubectl 指令
指令組成:
command
type
name
flag
command | type | name | flag |
---|---|---|---|
what do you want to do? | what type of object? | what is object name? | any soecial requests? |
eg. get、describe、logs、exec… | eg. pods、nods、services… | eg. hello-world-1… | eg. —region=asia-east1 |
範例:
- 查詢命名空間內的所有 pod 列表:
kubectl get pods -n development
- 查詢 ‘hello-world’ 服務的設定內容:
kubectl describe hello-world-1 -n development
- 進入 ‘hello-world’ 服務終端機:
kubectl exec -it hello-world-1 -n development
controller 物件
Depoloyment:控制 pod 的數量
depolyment 會有兩步驟程序,當 Yaml 檔案內容丟給 deployment controller,deployment controller 會監測環境狀態跟檢查 pod 設定與 Yaml 內容是否相同,並擁有三種不同的生命週期:processing(處理中)、complete(就緒)、failed(失敗)。
我們可以有三種方式可以建立 deployment :
- 使用 Yaml 檔案建立:
kubectl apply -f [config file]
- 直接純指令方式建立:
kubectl deployment [deployment name] —image —label —port…
- 用 UI 介面建立
當要更新 deployment 時,有三種方式可以進行更新調整:
- 新的 Yaml 檔案調整設定:
kubectl apply -f [config file]
- 純指令方式更新:
kubectl set image deployment [name] [image] [image]:[tag]
- 編輯 deployment:
kubectl edit deployment/[name]
我們可以額外設定自動擴展,例如如果我們希望當 CPU 使用率超過 80% 時可以多開 pod,最多開啟三台 pod:kubectl autoscale deployment [name] —min=1 —max=3 —cpu-percent=80
,它屬於 HPA(Horizontal Pod Autoscaling) 的物件。HPA 是可以根據指定條件判斷是否自動調整資源設定,避免服務中斷。
Service:掌控服務外部入口
Service 可以說是 pod 的集合,來協助 pod 開對外的接口。我們可以透過 label selecter 標籤,來選擇 Service 要套用哪個 pod 服務。
Service 有三種型態:
- clusterIP
- 用於對內服務溝通
- 建立內部 IP,負載平衡到具有指定標籤的 pod
- Node Port
- 提供外部存取溝通
- LoadBalancer
- 需要外部 IP (會建立 L4 負載平衡)
Ingress:為服務提供外部可訪問的 URL
Ingress + Service 物件就可以構成 L7 網路 (HTTP) 的型態,而新版的 GKE 可以改使用 Gateway API,來依據不同的角色制定不同的 Ingress 設定。
AutoScaling:自動擴展服務資源
- HPA (Horizontal Pod Autoscaling):控制 pod 數量
- VPA (Vertical Pod Autoscaling):控制 pod 大小
- MPA (multidimensional Pod autoscaling):結合 HPA 跟 VPA
ConfigMap 與 Secret:物件檔案
ConfigMap 是用於傳遞資料,我們可以透過掛載 ConfigMap 來帶入鍵值或參數值。而 Secret 跟 ConfigMap 相同可以掛載,但不同的是,secret 是用來儲存機密資料,以 base64 encode 編碼,要解碼也是可以。
Tags
GKE GCPcomments powered by Disqus