一、主要设计

  1. <br /> 为了区分本地资源、云资源和边缘资源,需要增强Kubernetes的表达能力,为每个node资源打上labels标签:
  • kubernetes.io/type
    • local:本地资源
    • cloud:公有云资源
    • edge:边缘端资源
  • kubernetes.io/role
    • leader:主控节点
    • worker:工作节点
  • kubernetes.io/status
    • schedule:正在工作
    • no-schedle:正在维护

image.png

二、算法逻辑设计(TODO)

2.1 Node类型与角色标记算法

  1. 遍历多有Nodes // kubectl get nodes
  2. 如果NodeMaster节点
  3. kubernetes.io/type="local"
  4. kubernetes.io/role="leader"
  5. kubernetes.io/status="schedule"
  6. 否则
  7. 如果存在node-role.kubernetes.io/edge
  8. kubernetes.io/type="edge"
  9. kubernetes.io/role="wroker"
  10. kubernetes.io/status="schedule"
  11. 如果存在node-role.kubernetes.io/cloud
  12. kubernetes.io/type="cloud"
  13. kubernetes.io/role="wroker"
  14. kubernetes.io/status="schedule"
  15. 否则
  16. kubernetes.io/type="local"
  17. kubernetes.io/role="wroker"
  18. kubernetes.io/status="schedule"

2.2 Node状态标记算法

  1. 监听Node变化
  2. 如果是ADDED
  3. 转《Node标记算法》
  4. 如果是MODIFIED
  5. 如果NodeReady
  6. kubernetes.io/status="schedule"
  7. 否则
  8. kubernetes.io/status="no-schedule"
  9. 如果是DELETED
  10. 删除node

三、语法使用

  1. [routes-admin](https://www.yuque.com/kubesys/kube-frontend/qz0cuq)的语法在items下新增filter,其中,metadata.labels.kubernetes#io表示json的路径,注意:这里是#,不是“.”,由于特殊字符语义冲突,调用到后台会将#转化为.
  1. "items": [{
  2. "component": "/table/index",
  3. "icon": "resources",
  4. "name": "公有云资源",
  5. "kind": "Node",
  6. "path": "/resMgr/resources/clouds",
  7. "filter": {
  8. "metadata.labels.kubernetes#io/type": "cloud"
  9. }
  10. }]