Kubernetes CKA課程筆記 3

如何管理K8s Components? — Kubectl & config file

ZONGRU Li
Oct 6, 2021

在課程筆記 1內有介紹到K8s世界的各種基礎元件(Component)

那該如何建立這類元件?

  • >利用工具,像是Kubectl

Kubectl:

  • 是一個強大的指令集工具,可以執行如下指令
kubectl create <object-type> <instanceName>
kubectl delete <object-type>/<instanceName>
kubectl …
  • 藉以建立Server(svc),ConfigMap(cm),…各種K8s元件
  • 並且也有指令來做查詢如下
kubectl get …
kubectl describe …
kubectl logs …
  • 大致如上的基本指令都能用kubectl完成
  • 但是對於複雜的工作,例如建立複雜元件像是在Server上多建立port...
  • 或是deployment內定義多個Containers...etc
  • 就很難透過kubectl完成,因為要傳入的參數會超級多!
  • 甚至一個kubectl指令不一定能一次完成要求的全部工作

在上述kubectl指令不容易完成的部分

則可以透過如下物件

Kubernetes configuration file:

直接在一個檔案中定義完整的K8s元件,即便內容很複雜的元件(YAML格式)

接著透過kubectl apply -f <檔案>指令,例如:

kubectl apply -f nginx-deployment.yaml
類似長這樣(參考K8s官網)

可能就完成一個複雜的nginx的APP的複雜Deployment/pod建立

接著要針對該元件做Update,則只要更改上述的檔案,並重新執行指令:

kubectl apply -f nginx-deployment.yaml

就可以完成K8s元件的更新!!!!

另外要將K8s元件移除,也可以透過直接指令移除configuration file例如:

kubectl delete -f nginx-deployment.yaml

或是前面提過的:

kubectl delete <object-type> <instanceName>

並且Kubernetes configuration file也被稱為:

Kubernetes Manifests

總結以上兩種針對K8s元件的操作(create/update/delete…)的方式

  1. 透過指令(如kubectl工具):是imperative(直接的)方式
  2. Configuration file:是declarative(宣告式)

講師提到由歷史經驗上來說,比較建議使用的是 — >Configuration file

其中Configuration file因為是文字檔,還可以做版本控制!

但是imperative方式對於簡單的測試,快速變更也仍是較迅速的方式

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet