Kubernetes CKA課程筆記 3
在課程筆記 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
可能就完成一個複雜的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…)的方式
- 透過指令(如kubectl工具):是imperative(直接的)方式
- Configuration file:是declarative(宣告式)
講師提到由歷史經驗上來說,比較建議使用的是 — >Configuration file
其中Configuration file因為是文字檔,還可以做版本控制!
但是imperative方式對於簡單的測試,快速變更也仍是較迅速的方式