返回顶部
首页 > 资讯 > 服务器 >KubeSphere分级管理实践及解析
  • 318
分享到

KubeSphere分级管理实践及解析

2024-04-02 19:04:59 318人浏览 独家记忆
摘要

目录前言为什么要在 KuberSphere 上实现分级管理什么是分级体系如何实现分级管理如何实现资源的升降级不同层级间 Pod 的网络隔离总结前言 k8s 是容器编排和分布式应用部署

前言

k8s容器编排和分布式应用部署领域的领导者,在 K8s 环境中,我们只需要关心应用的业务逻辑,减轻了我们服务器网络以及存储等方面的管理负担。对于一个用户而言,K8s 是一个很复杂的容器编排平台,学习成本非常高。KubeSphere 抽象了底层的 K8s,并进行了高度的产品化,构建了一个全栈的多租户容器云平台,为用户提供了一个健壮、安全、功能丰富、具备极致体验的 WEB 控制台,解决了 K8s 使用门槛高和云原生生态工具庞杂等痛点,使我们可以专注于业务的快速迭代,其多维度的数据监控,对于问题的定位,提供了很大的帮助。

为什么要在 KuberSphere 上实现分级管理

在 KubeSphere 中,资源可以在租户之间共享,根据分配的不同角色,可以对各种资源进行操作。租户与资源之间、资源与资源之间的自由度很高,权限粒度也比较大。在我们的系统中,资源是有权限等级的,像是低等级用户可以通过邀请、赋予权限等操作来操作高等级资源,或者像是低等级项目中的 Pod 可以调度到高等级的节点上,对资源。诸如此类跨等级操作资源等问题,我们在 KubeSphere 基础上来实现了分级管理。

什么是分级体系

分级,顾名思义就是按照既定的标准对整体进行分解、分类。我们将其抽象成一个金字塔模型,从地基到塔顶会有很多个层级,我们将公共资源作为金字塔的地基,拥有最高权限的 admin 作为塔顶,其他资源按照权限等级划分成不同等级。低层级资源是不能访问高等级资源,高等级资源可以获取它等级之下的所有资源,构建了这样一个权益递减、层级间隔离的分级体系。

如何实现分级管理

我们定义了一个代表等级的标签 kubernetes.io/level。以一个多节点的集群为例,首先我们会给用户、企业空间、节点等资源打上代表等级的标签。在邀请用户加入企业空间或者项目时,要求加入的企业空间或者项目的等级不得高于用户的等级,同样项目在绑定企业空间时,也要求项目的等级不得高于企业空间的等级,才能对资源进行纳管;我们认为同一项目下的资源的等级是相同的,基于项目创建的负载、Pod、服务等资源的等级跟项目保持一致;同时 Pod 中加入节点亲和性,以使 Pod 调度到不高于其权限等级的节点上。

例如这里,我们创建了一个权限等级是 3 的用户 demo-user,他可以加入权限等级不高于3的企业空间或者项目中。

kind: User
apiVersion: iam.kubesphere.io/v1alpha2
metadata:
  name: demo-user
  labels:
    kubernetes.io/level: 3
spec:
  email: demo-user@kubesphere.io

创建一个权限等级是 2 的项目 demo-ns,那么基于项目创建的负载、Pod、存储等资源的权限等级也是 2。

apiVersion: v1
kind: Namespace
metadata:
   name: demo-ns
   labels:
     kubernetes.io/level: 2

基于 demo-ns 项目创建了一个Nginx 的 Pod,他的权限等级也是 2,同时加入节点亲和性,要求其调度到权限等级不高于 2 的节点上。

apiVersion: apps/v1
kind: Pod
metadata:
  labels:
    kubernetes.io/level: 2
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
      protocol: tcp
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
       nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/level
            operator: Lt
            values:
            - 2
        - matchExpressions:
          - key: kubernetes.io/level
            operator: In
            values:
            - 2

如何实现资源的升降级

在分级管理体系中,支持等级的无限划分,只需要定义一个中间值,就可以在两个等级之间插入一个新的等级,无需操作其他资源;在对资源进行升降级时,只需要修改对应资源的 label 标签,就可以对资源进行升降级操作。当然,在对资源进行升降级的时候,我们需要对资源进行检测,保证升级时,其上层资源的权限等级不得低于目标等级;同时,降级时,其下层资源的权限等级不得高于目标等级。在不满足升降级操作条件时,需要将对应资源也做相应调整才可以。

不同层级间 Pod 的网络隔离

在分级体系中,我们要求高等级的 Pod 能访问低等级的 Pod,但是低等级的 Pod 不能访问高等级的 Pod,那我们需要如何保证不同层级间 Pod 的网络通信呢。

项目在不开启网络隔离的情况下,Pod 间的网络是互通的,所以这里会新增一个黑名单的网络策略。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: demo-ns
  labels:
    kubernetes.io/level: 2
spec:
  podSelector: {}
  policyTypes:
  - Ingress

podSelector:{} 作用于项目中所有 Pod,阻止所有流量的流入。

然后放行标签等级大于目标等级(这里是 2)的流量流入(我们对 Ingress 流量没有做限制)。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: level-match-network-policy
  namespace: demo-ns
  labels:
    kubernetes.io/level: 2
spec:
  podSelector:
    matchExpressions:
    - key: kubernetes.io/level
      operator: Gt
      values:
      - 2
  policyTypes:
  - Ingress

总结

KubeSphere 解决了用户构建、部署、管理和可观测性等方面的痛点,它的资源可以在多个租户之间共享。但是在资源有权限等级的场景中,低等级资源可以操作高等级资源,造成资源越权管理的问题。为解决这一问题,我们在 KubeSphere 的基础上进行了改造,以适应租户与资源之间和资源与资源之间的分级管理,同时在项目的网络策略中,增加黑名单和白名单策略,增强了项目间的网络隔离,让资源的管理更安全。

以上就是KubeSphere分级管理实践及解析的详细内容,更多关于KubeSphere分级管理实践的资料请关注编程网其它相关文章!

--结束END--

本文标题: KubeSphere分级管理实践及解析

本文链接: https://lsjlt.com/news/152606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • KubeSphere分级管理实践及解析
    目录前言为什么要在 KuberSphere 上实现分级管理什么是分级体系如何实现分级管理如何实现资源的升降级不同层级间 Pod 的网络隔离总结前言 K8s 是容器编排和分布式应用部署...
    99+
    2024-04-02
  • KubeSphere分级管理怎么实现
    这篇“KubeSphere分级管理怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“KubeSphere分级管理怎么实现...
    99+
    2023-07-02
  • Golang实现Json分级解析及数字解析实践详解
    目录一、背景介绍二、解决方案(1)将Json直接解析为map(2)解析部分json struct的方法 (json.RawMessage的用法)(3) json.Number类型的使...
    99+
    2023-02-14
    Golang Json分级解析 Golang Json解析 Golang Json
  • Golangmap实践及实现原理解析
    目录Map实践以及实现原理使用实例内存模型创建maphash函数key定位和碰撞解决扩容元素访问删除迭代Map实践以及实现原理 使用实例内存模型创建maphash函数key定位和碰撞...
    99+
    2024-04-02
  • Oracle实例管理及最佳实践
    Oracle实例管理及最佳实践 在Oracle数据库管理中,Oracle实例是非常重要的概念之一。Oracle实例是Oracle数据库的运行环境,每个数据库实例管理一个数据库,它包含了...
    99+
    2024-03-08
    oracle 最佳实践 实例管理 sql语句
  • 灰色关联分析法详解及python实践
    1. 关于灰色关联分析 1.1. 什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法,其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧...
    99+
    2023-09-27
    python 人工智能 灰色关联分析 数据分析
  • Apache Spark SQL入门及实践的实例分析
    Apache Spark SQL入门及实践的实例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Apache SparkSQL是一个重要的Spark模块,我们...
    99+
    2023-06-02
  • Git分支管理策略实践经验分享
    Git分支管理是开发团队中非常重要的一项工作,良好的分支管理策略可以有效提升团队的代码管理效率和开发流程。本文将分享一些实践经验,帮助读者更好地理解和应用Git分支管理策略。一、Git分支管理的重要性Git是目前最流行的分布式版本控制系统,...
    99+
    2023-11-04
    经验分享 Git分支管理 策略实践
  • webpack与SPA实践之管理CSS等资源的示例分析
    这篇文章主要介绍webpack与SPA实践之管理CSS等资源的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在学习使用webpack时,我们需要明白无论它怎么设计,它的工...
    99+
    2024-04-02
  • Android ListView 单条刷新方法实践及原理解析
    对于使用listView配合adapter进行刷新的方法大家都不陌生,先刷新adapter里的数据,然后调用notifydatasetchange通知listView刷新界面。...
    99+
    2022-06-06
    方法 listview Android
  • Vue.js 状态管理及 SSR解析
    目录前端状态管理出现的意义及解决的问题Vuex 源码解读Vuex 公共方法Vuex 介绍及深入使用Vuex 使用(官网)1、基本框架2、基本使用3、State3.1 mapState...
    99+
    2024-04-02
  • CMS 解析:政府网站内容管理的最佳实践
    引言 政府网站对于提供信息、服务和公民参与至关重要。有效的内容管理对于确保这些网站高效且内容丰富至关重要。以下列出了政府网站内容管理的最佳实践,可帮助机构提高网站效率和透明度。 用户体验优先 以用户为中心:了解目标受众的需求和期望,并根...
    99+
    2024-03-12
    政府网站内容管理的最佳实践
  • Doris分析数据库产品介绍及实践
    ...
    99+
    2016-07-11
    Doris分析数据库产品介绍及实践
  • MongoDB在物业管理行业中的应用实践与数据分析
    MongoDB是一种非关系型数据库管理系统,常用于处理大规模数据和高并发访问的场景。在物业管理行业中,MongoDB的应用已经取得了显著的成果。本文将探讨MongoDB在物业管理行业中的应用实践与数据分析。一、物业管理行业的挑战物业管理行业...
    99+
    2023-11-02
    数据分析 MongoDB 物业管理
  • Spring Boot 分层打包 Docker 镜像实践及分析(推荐)
    目录1.准备springboot项目2.进行相关配置3.package4.Dockerfile5.应用程序修改&dive分析1. 准备 spring boot 项目 简单,略...
    99+
    2024-04-02
  • vue状态管理实例分析
    这篇文章主要介绍“vue状态管理实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue状态管理实例分析”文章能帮助大家解决问题。场景:一个地图应用,有个侧边栏...
    99+
    2024-04-02
  • 绩效管理分析系统的应用及其效果分析
    绩效管理分析系统是一种专门用于分析和评估员工绩效的工具。它可以帮助企业进行有效的绩效管理,提高员工的工作效率和工作质量,从而提高企业的整体绩效。 一、绩效管理分析系统的应用绩效管理分析系统是通过对员工的工作表现进行定量和定性的分析,来评估...
    99+
    2023-11-22
    绩效管理 效果 系统
  • Git分支管理最佳实践经验总结
    Git分支管理最佳实践经验总结Git是目前最流行的版本控制工具之一,它通过分支管理极大地简化了团队协作开发过程中的工作流。然而,分支管理的复杂性可能会导致开发者陷入困境。本文将介绍几种基本的分支管理策略,以帮助开发团队更好地利用Git来协调...
    99+
    2023-11-03
    git 最佳实践 分支管理
  • Git分支管理实践:项目经验总结
    在软件开发过程中,代码的分支管理是非常重要的。Git分支管理是现代软件开发中十分重要的一环。Git的分支管理机制使得开发人员可以在更安全的环境下进行并行开发、版本控制和持续集成等工作。然而,尽管Git很强大,但假如分支无序管理或者没有遵守相...
    99+
    2023-11-04
    git 经验总结 分支管理
  • Go实践反向代理ReverseProxy解析
    目录背景ReverseProxyReverseProxy 例子结论背景 近期在处理一个关于网关的需求,主要是对用户的请求转发到后端的服务器集群中。整个设计思路其实还是很简单,通过用...
    99+
    2023-05-16
    Go反向代理ReverseProxy Go反向代理
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作