Open llhuii opened 3 years ago
GM HA方案主要考虑上述两个模块的HA
k8s HA分两类:
以下是一些社区方案的调研
直接集成leader-election模块进行选主, 获取到lease锁的实例执行其业务逻辑: 对k8s api server进行list/watch, 然后处理deployment/job/daemonset等资源
比如在一个实际环境, 其lease对象:kubectl get leases -n kube-system kube-controller-manager -o yaml
kubectl get leases -n kube-system kube-controller-manager -o yaml
apiVersion: coordination.k8s.io/v1 kind: Lease metadata: name: kube-controller-manager namespace: kube-system spec: acquireTime: "2021-05-29T17:07:58.743009Z" holderIdentity: kind-control-plane2_c2181a4f-abaf-473c-b799-46e87ca46af6 leaseDurationSeconds: 15 leaseTransitions: 1 renewTime: "2021-05-31T03:53:29.519058Z"
https://github.com/kubeedge/kubeedge/issues/1560 https://github.com/kubeedge/kubeedge/pull/1569/ https://github.com/kubeedge/kubeedge/pull/1600
cloudcore HA设计
https://github.com/kubeedge/kubeedge/issues/1560#issuecomment-843693951
我理解edgecore可连接任意cloudcore实例, cloudcore实例只处理其上已经连接的edgenode消息
active-standby: 由于是对crd list-watch并且update, 可参考kube-controller-manager
active-active: 无法做到??
参考cloudcore的active-standby模式, LC只连接主GM
参考cloudcore的active-active模式, LC可连接任意GM实例, GM只处理其上已经连接的LCs消息
由于kubeedge 边侧提供list-watch的能力(见Autonomic Kube-API Endpoint(AKE))
利:
弊:
GM HA方案设计
1. GM功能
GM HA方案主要考虑上述两个模块的HA
2. k8s社区HA模式玩法
k8s HA分两类:
以下是一些社区方案的调研
2.1. HA of kube-controller-manager: active-standby
直接集成leader-election模块进行选主, 获取到lease锁的实例执行其业务逻辑: 对k8s api server进行list/watch, 然后处理deployment/job/daemonset等资源
比如在一个实际环境, 其lease对象:
kubectl get leases -n kube-system kube-controller-manager -o yaml
2.2. HA support of CloudCore:
https://github.com/kubeedge/kubeedge/issues/1560 https://github.com/kubeedge/kubeedge/pull/1569/ https://github.com/kubeedge/kubeedge/pull/1600
2.2.1 active-standby
cloudcore HA设计
2.2.1 active-active
https://github.com/kubeedge/kubeedge/issues/1560#issuecomment-843693951
我理解edgecore可连接任意cloudcore实例, cloudcore实例只处理其上已经连接的edgenode消息
3. GM HA
3.1 协同资源Operators的HA
active-standby: 由于是对crd list-watch并且update, 可参考kube-controller-manager
active-active: 无法做到??
3.2 GM与LC通信模块的HA
3.2.1 active-standby
参考cloudcore的active-standby模式, LC只连接主GM
3.2.2 active-active
参考cloudcore的active-active模式, LC可连接任意GM实例, GM只处理其上已经连接的LCs消息
3.2.3 另外一种思路, GM/LC通信通过api-server中转
由于kubeedge 边侧提供list-watch的能力(见Autonomic Kube-API Endpoint(AKE))
利:
弊: