需要注意的是,当云端判定节点异常,但是其他节点认为节点正常的时候,虽然不会驱逐已有 Pod,但是为了确保增量服务的稳定性,不会再将新的 Pod 调度到该节点上,存量的正常运行也得益于边缘集群的边缘自治能力;
另外,由于边缘网络和拓扑的特殊性,常常会存在节点组之间网络单点故障的问题,比如厂房的例子中,仓库和车间虽然都属于厂房这个地域内,但是可能二者之间的网络连接依靠一条关键链路,一旦这条链路发生中断,就会造成节点组之间的分裂,我们的方案能够确保两个分裂的节点组失联后互相判定时始终保持多数的一方节点不会被判定为异常,避免被判定为异常造成 Pod 只能被调度到少部分的节点上,造成节点负载过高的情况。
除此之外,边缘设备很有可能位于不同的地区、相互不通,让网络不通的节点之间相互检查显然就不合适了。为了应对这种情况,我们的方案也支持对节点进行分组,各个分组内的节点之间相互检测状态。考虑到有可能对节点重新分组,机制也支持实时对节点变更分组而无需重新部署检测组件或重新初始化。
检测机制默认关闭,如果需要操作可进入基本信息-开启 Edge Health(默认关闭),如果需要为节点分组,可以继续打开“开启多地域”,然后给节点分组,分组方式为编辑和添加节点相应的标签;如果开启多地域检查后未给节点分组,默认是各个节点自己是一个组,不会检查其他节点。
在此特性开发过程中,我们也发现了一个 node taint 相关的 Kubernetes 社区 bug 并提出了修复方案。
未来展望未来我们会支持更多的检查方式,增强在各种场景下的稳定性;此外,当前开源的一些去中心的集群状态探测管理项目在一些场景下还不能完全满足边缘的场景,如集群分裂情况,后期我们会尝试融合借鉴满足我们的需求。
开源项目 SuperEdge当前该组件作为边缘容器项目 SuperEdge 的一部分已经对外开源(https://github.com/superedge/superedge),欢迎大家 star,下方是微信群,微信企业微信都可以加入
公有云产品 TKE Edge目前该产品已经全量开放,欢迎前往 边缘容器服务控制台 进行体验~
边缘系列往期精彩推荐【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!