一、主要设计
<br /> 为了区分本地资源、云资源和边缘资源,需要增强Kubernetes的表达能力,为每个node资源打上labels标签:
- kubernetes.io/type
- local:本地资源
- cloud:公有云资源
- edge:边缘端资源
- kubernetes.io/role
- leader:主控节点
- worker:工作节点
- kubernetes.io/status
- schedule:正在工作
- no-schedle:正在维护
二、算法逻辑设计(TODO)
2.1 Node类型与角色标记算法
遍历多有Nodes // kubectl get nodes如果Node是Master节点kubernetes.io/type="local"kubernetes.io/role="leader"kubernetes.io/status="schedule"否则如果存在node-role.kubernetes.io/edgekubernetes.io/type="edge"kubernetes.io/role="wroker"kubernetes.io/status="schedule"如果存在node-role.kubernetes.io/cloudkubernetes.io/type="cloud"kubernetes.io/role="wroker"kubernetes.io/status="schedule"否则kubernetes.io/type="local"kubernetes.io/role="wroker"kubernetes.io/status="schedule"
2.2 Node状态标记算法
监听Node变化如果是ADDED转《Node标记算法》如果是MODIFIED如果Node是Readykubernetes.io/status="schedule"否则kubernetes.io/status="no-schedule"如果是DELETED删除node
三、语法使用
[routes-admin](https://www.yuque.com/kubesys/kube-frontend/qz0cuq)的语法在items下新增filter,其中,metadata.labels.kubernetes#io表示json的路径,注意:这里是#,不是“.”,由于特殊字符语义冲突,调用到后台会将#转化为.
"items": [{"component": "/table/index","icon": "resources","name": "公有云资源","kind": "Node","path": "/resMgr/resources/clouds","filter": {"metadata.labels.kubernetes#io/type": "cloud"}}]
