本期課堂由諧雲研發工程師張逸飛作為講師,進行「KubeEdge節點分組特性簡介」的内容分享。
01 邊緣應用跨地域部署場景及問題
應用生命周期管理複雜導緻運維成本提高
02 邊緣節點分組管理
- 節點分組:将不同地區的邊緣節點按照節點組的形式組織
- 邊緣應用:将應用資源整體打包并滿足不同節點組之間的差異化部署需求
- 流量閉環:将服務流量限制在同一節點組中
NodeGroup:
1. 根據節點标簽和節點名稱選取節點形成節點組
2. 為節點組中的每個節點增加belonging-to标簽
EdgeApplication:
1. 包含應用資源模版和各地區差異化配置資訊2. 為各個節點組建立差異化應用執行個體
3. 根據服務模闆建立服務,使其拓撲範圍為節點組内
提供統一的運維入口
03
最佳實踐
- 在開始之前:
1. 開啟AKE(Autonomic Kube-API Endpoint)特性AKE特性可以使邊緣的kube-proxy元件正常運作,通過cloudcore-edgecore之間建立的雲邊信道list/watch所需資源。CloudCore配置:
開啟DynamicController元件,在cloudcore配置中:
EdgeCore配置:
開啟MetaServer元件,在edgecore配置中(通常為/etc/kubeedge/config/edgecore.yaml):
2. 配置Kube-Proxy
将kubeconfig的server位址配置為http://127.0.0.1:10550(10550為MetaServer端口),通常通過修改kube-proxy的configmap進行。
3. 配置完成後重新開機上述元件
- 啟用分組管理特性:
1. 在k8s中建立節點分組管理CRD
kubectl apply -f build/crds/apps
該指令會安裝NodeGroup和EdgeApplication兩個CRD到叢集中,如果使用keadm init來初始化kubeedge,則該CRD會自動安裝;否則需要執行上述指令來手動安裝。
2. 部署controllers
kubectl apply -f build/controllermanager
該指令會在叢集的雲端節點上部署controllermanager,其中包含NodeGroupController和EdgeApplicationController,分别用于兩個CRD的管理,同時也配套安裝了相關RBAC規則。
- NodeGroup用法說明:
NodeGroup會選取節點組成節點組,主要有兩種選取方式:節點名和标簽。被選取的節點會被額外加上http://apps.kubeedge.io/belonging-to的标簽。
1. 根據節點名選取節點
可以通過指定需要被放入節點組的節點名。
2. 根據标簽選取節點
多個标簽之間是AND關系,節點需要同時具有這些标簽才會被放入節點組中。當新接入的節點擁有滿足條件的标簽時,會被自動地放入相應節點組中。
3. NodeGroup生命周期
當删除節點組時,節點組中節點上的belonging-to标簽會被自動删除,即節點組中的節點會自動退出節點組。
- EdgeApplication用法說明
1. WorkloadTemplateWorkloadTemplate中存放的是應用所需要的資源模闆,如Deployment,Service,ConfigMap等。對于Deployment:會根據WorloadScope中的差異化配置生成各節點組的執行個體。對于Service:會為其增加range-nodegroup的标簽。
對于其他資源:會直接在叢集中建立。
2. WorkloadScope
WorkloadScope中存放的是節點組的差異化配置資訊,可以為特定節點組設定Overrider。目前支援設定replicas overrider和image overrider。replicas overrider:設定的值會覆寫Deployment模闆中的replicas字段。
image overrider:可以修改鏡像位址的Registry、Repository、Tag三個部分,每個部分可以進行的修改有add、remove、replace。
3. EdgeApplication生命周期
更新:
當更新EdgeApplication時,其建立的子資源會被自動更新,同時相容Deployment的滾動更新政策,在同節點組的Pod執行個體間進行滾動更新。
删除:
當删除EdgeApplication時,所有該EdgeApplication建立的資源都會被自動删除。