中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

KubeSphere分級管理怎么實現

發布時間:2022-07-08 14:05:22 來源:億速云 閱讀:165 作者:iii 欄目:開發技術

這篇“KubeSphere分級管理怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“KubeSphere分級管理怎么實現”文章吧。

為什么要在 KuberSphere 上實現分級管理

在 KubeSphere 中,資源可以在租戶之間共享,根據分配的不同角色,可以對各種資源進行操作。租戶與資源之間、資源與資源之間的自由度很高,權限粒度也比較大。在我們的系統中,資源是有權限等級的,像是低等級用戶可以通過邀請、賦予權限等操作來操作高等級資源,或者像是低等級項目中的 Pod 可以調度到高等級的節點上,對資源。諸如此類跨等級操作資源等問題,我們在 KubeSphere 基礎上來實現了分級管理。

什么是分級體系

分級,顧名思義就是按照既定的標準對整體進行分解、分類。我們將其抽象成一個金字塔模型,從地基到塔頂會有很多個層級,我們將公共資源作為金字塔的地基,擁有最高權限的 admin 作為塔頂,其他資源按照權限等級劃分成不同等級。低層級資源是不能訪問高等級資源,高等級資源可以獲取它等級之下的所有資源,構建了這樣一個權益遞減、層級間隔離的分級體系。

KubeSphere分級管理怎么實現

如何實現分級管理

我們定義了一個代表等級的標簽 kubernetes.io/level。以一個多節點的集群為例,首先我們會給用戶、企業空間、節點等資源打上代表等級的標簽。在邀請用戶加入企業空間或者項目時,要求加入的企業空間或者項目的等級不得高于用戶的等級,同樣項目在綁定企業空間時,也要求項目的等級不得高于企業空間的等級,才能對資源進行納管;我們認為同一項目下的資源的等級是相同的,基于項目創建的負載、Pod、服務等資源的等級跟項目保持一致;同時 Pod 中加入節點親和性,以使 Pod 調度到不高于其權限等級的節點上。

KubeSphere分級管理怎么實現

例如這里,我們創建了一個權限等級是 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 標簽,就可以對資源進行升降級操作。當然,在對資源進行升降級的時候,我們需要對資源進行檢測,保證升級時,其上層資源的權限等級不得低于目標等級;同時,降級時,其下層資源的權限等級不得高于目標等級。在不滿足升降級操作條件時,需要將對應資源也做相應調整才可以。

KubeSphere分級管理怎么實現

不同層級間 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分級管理怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松潘县| 上林县| 云林县| 西林县| 礼泉县| 深泽县| 康乐县| 蒲城县| 瑞丽市| 苍梧县| 抚顺县| 乐东| 淮南市| 贡觉县| 扶沟县| 平罗县| 濮阳县| 石阡县| 阿勒泰市| 乳山市| 娱乐| 含山县| 永平县| 九龙县| 佛学| 阿拉善左旗| 宁陕县| 营口市| 杨浦区| 宁德市| 东安县| 安乡县| 万载县| 东辽县| 石楼县| 鹿泉市| 加查县| 利津县| 如皋市| 新竹县| 获嘉县|