Loading...

這篇我們要來介紹 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 GCP

comments powered by Disqus