国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

DaoCloud道客云原生開(kāi)源項目Clusterpedia(The Encyclo

發(fā)布時(shí)間:2022-05-26 13:14 來(lái)源:老劉博客 閱讀:169 作者:網(wǎng)絡(luò ) 欄目: 經(jīng)驗分享 歡迎投稿:712375056

本文目錄 顯示

DaoCloud道客云原生開(kāi)源項目Clusterpedia,全稱(chēng)The Encyclopedia of Kubernetes clusters,源碼查看地址:https://github.com/clusterpedia-io/clusterpedia。

在多集群時(shí)代,我們可以通過(guò) cluster-api 來(lái)批量創(chuàng )建管理集群,使用 Karmada/Clusternet 來(lái)分發(fā)部署應用。不過(guò)我們貌似還是缺少了什么功能,我們要如何去統一的查看多個(gè)集群中的資源呢?

對于單個(gè)集群的資源,我們可以使用 kubectl 來(lái)查看搜索資源,但是在想要檢索多集群的資源時(shí),貌似沒(méi)有什么趁手的產(chǎn)品可以使用。這個(gè)問(wèn)題不會(huì )再困擾你,因為在 DaoCloud道客云原生開(kāi)源項目Clusterpedia的加持下,你手上的 kubectl 已經(jīng)可以用來(lái)檢索多集群資源啦!

例如,使用 kubectl 來(lái)獲取多個(gè)集群下 kube-system 命名空間內的 deployments。

$ kubectl get deployments -n kube-system

CLUSTER     NAME                         READY   UP-TO-DATE   AVAILABLE   AGE

cluster-1   calico-kube-controllers      1/1     1            1           63d

cluster-1   coredns                      2/2     2            2           63d

cluster-2   calico-kube-controllers      1/1     1            1           109d

cluster-2   coredns-coredns              2/2     2            2           109d

cluster-2   dce-chart-manager            1/1     1            1           109d

cluster-2   dce-clair                    1/1     1            1           109d

01 Clusterpedia介紹

Clusterpedia,名字借鑒自 Wikipedia,同樣也展現了 Clusterpedia 的核心理念 —— 多集群的百科全書(shū)。

通過(guò)聚合多集群資源,在兼容 Kubernetes OpenAPI 的基礎上額外提供了更加強大的檢索功能,讓用戶(hù)更快更方便的在多集群中獲取到想要的任何資源。當然 Clusterpedia 的能力并不僅僅只是檢索查看,未來(lái)還會(huì )支持對資源的簡(jiǎn)單控制,就像 wiki 同樣支持編輯詞條一樣。

架構設計

Clusterpedia在架構上分為四個(gè)部分:

  • Clusterpedia APIServer:以 Aggregated API 的方式注冊到 Kube APIServer,通過(guò)統一的入口來(lái)提供服務(wù)。
  • ClusterSynchro Manager:管理用于同步集群資源的 Cluster Synchro。
  • Storage Layer (存儲層):用來(lái)連接操作具體的存儲組件,然后通過(guò)存儲層接口注冊到 Clusterpedia APIServer 和 ClusterSynchro Manager 中。
  • 存儲組件:具體的存儲設施,例如 mysql, postgres,redis 或者其他圖數據。

另外,Clusterpedia 會(huì )使用 PediaCluster 這個(gè)自定義資源來(lái)實(shí)現集群認證和資源收集配置

Clusterpedia 還提供了可以接入 mysql 和 postgres 的默認存儲層。

Clusterpedia 并不關(guān)心用戶(hù)所使用的具體存儲設置是什么,用戶(hù)可以根據自己的需求來(lái)選擇或者實(shí)現存儲層,然后將存儲層以插件的形式注冊到 Clusterpedia 中來(lái)使用。

特性和功能

  • 支持復雜的檢索條件,過(guò)濾條件,排序,分頁(yè)等等
  • 支持查詢(xún)資源時(shí)請求附帶關(guān)系資源
  • 統一主集群和多集群資源檢索入口
  • 兼容 kubernetes OpenAPI, 可以直接使用 kubectl 進(jìn)行多集群檢索, 而無(wú)需第三方插件或者工具
  • 兼容收集不同版本的集群資源,不受主集群版本約束,
  • 資源收集高性能,低內存
  • 根據集群當前的健康狀態(tài),自動(dòng)啟停資源收集
  • 插件化存儲層,用戶(hù)可以根據自己需求使用其他存儲組件來(lái)自定義存儲層
  • 高可用

02 部署Clusterpedia

關(guān)于部署的詳細流程,可以查看 README,這里著(zhù)重介紹了如何使用 clusterpedia。https://github.com/clusterpedia-io/clusterpedia#部署

03 集群資源收集

clusterpedia 部署完成后,我們可以通過(guò) kubectl 來(lái)操作 PediaCluster 資源。

$ kubectl get pediaclusters
在 examples 目錄下,可以看到 PediaCluster 的示例

apiVersion: clusters.clusterpedia.io/v1alpha1

kind: PediaCluster

metadata:

  name: cluster-example

spec:

  apiserverURL: "https://172.30.43.41:6443"

  caData: ""

  tokenData: ""

  certData: ""

  keyData: ""

  resources:

  - group: apps

    resources:

     - deployments

  - group: ""

    resources:

     - pods

PediaCluster 在配置上可以分成兩部分

  • 集群認證
  • 指定資源收集 .spec.resources

集群認證

caData , tokenData , certData , keyData 字段用于集群的驗證。

當前暫時(shí)不支持從 ConfigMap 或者 Secret 中獲取驗證相關(guān)的信息,不過(guò)已經(jīng)在 Roadmap 中了。

在設置驗證字段時(shí),注意要使用 base64 后的字符串

在 examples 目錄下提供了生成用于訪(fǎng)問(wèn)子集群的 rbac yam  clusterpedia_synchro_rbac.yaml ,來(lái)方便的獲取子集群的權限 token。

在子集群中部署該 yaml,然后獲取對應的 token 和 ca ssl/' target='_blank'>證書(shū)。

$ # 當前 kubectl 連接到子集群中

$ kubectl apply -f examples/clusterpedia_synchro_rbac.yaml

clusterrole.rbac.authorization.k8s.io/clusterpedia-synchro created

serviceaccount/clusterpedia-synchro created

clusterrolebinding.rbac.authorization.k8s.io/clusterpedia-synchro created

$ SYNCHRO_TOKEN=$(kubectl get secret $(kubectl get serviceaccount clusterpedia-synchro -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}')

$ SYNCHRO_CA=$(kubectl get secret $(kubectl get serviceaccount clusterpedia-synchro -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.ca.crt}')

復制 ./examples/pediacluster.yaml, 并修改 .spec.apiserverURL 和 .metadata.name 字段,并且將 $SYNCHRO_TOKEN 和 $SYNCHRO_CA 填寫(xiě)到 tokenData 和 caData 中。

使用 kubectl apply 創(chuàng )建。

$ kubectl apply -f cluster-1.yaml
pediacluster.clusters.clusterpedia.io/cluster-1 created

為了方便后續使用,建議再創(chuàng )建一個(gè) cluster-2

資源收集

可以通過(guò)設置 spec.resources 字段的 group 和 group 下的 resources 來(lái)進(jìn)行指定收集的資源。

在 status 中我們也可以看到資源的收集狀態(tài)。

status:

  conditions:

  - lastTransitionTime: "2021-12-02T04:00:45Z"

    message: ""

    reason: Healthy

    status: "True"

    type: Ready

  resources:

  - group: ""

    resources:

    - kind: Pod

      namespaced: true

      resource: pods

      syncConditions:

      - lastTransitionTime: "2021-12-02T04:00:45Z"

        status: Syncing

        storageVersion: v1

        version: v1

  - group: apps

    resources:

    - kind: Deployment

      namespaced: true

      resource: deployments

      syncConditions:

      - lastTransitionTime: "2021-12-02T04:00:45Z"

        status: Syncing

        storageVersion: v1

        version: v1

  version: v1.22.2

04 資源檢索

配置好我們需要收集的資源后,我們就可以進(jìn)行重頭戲了 —— 集群檢索clusterpedia 支持兩種資源檢索:

  • 兼容 Kubernetes OpenAPI 的資源檢索
  • 集合資源 (Collection Resource) 的檢索
$ kubectl api-resources | grep pedia.clusterpedia.io

collectionresources     pedia.clusterpedia.io/v1alpha1  false   CollectionResource

resources               pedia.clusterpedia.io/v1alpha1  false   Resources

為了方便我們更好的使用 kubectl 來(lái)進(jìn)行檢索,我們可以先通過(guò) make gen-clusterconfig 來(lái)為子集群創(chuàng )建用于檢索的 ‘快捷方式’。

$ make gen-clusterconfigs

./hack/gen-clusterconfigs.sh

Current Context: kubernetes-admin@kubernetes

Current Cluster: kubernetes

        Server: https://10.9.11.11:6443

        TLS Server Name:

        Insecure Skip TLS Verify:

        Certificate Authority:

        Certificate Authority Data: ***

Cluster "clusterpedia" set.

Cluster "cluster-1" set.

使用 kubectl config get-clusters 可以查看當前支持的集群。

其中 clusterpedia 是一個(gè)特殊的 cluster,用于多集群檢索,以 kubectl –cluster clusterpedia 的方式來(lái)檢索多個(gè)集群的資源。

多集群資源檢索

我們先看一下我們都收集了哪些資源,只有被收集的資源才可以進(jìn)行檢索。

$ kubectl --cluster clusterpedia api-resources

NAME          SHORTNAMES   APIVERSION   NAMESPACED   KIND

pods          po           v1           true         Pod

deployments   deploy       apps/v1      true         Deployment

可以看到當前收集并支持 pods 和 deployments.apps 兩種資源

查看所有集群的 kube-system 命名空間下的 deployments

$ kubectl --cluster clusterpedia get deployments -n kube-system

CLUSTER     NAME                         READY   UP-TO-DATE   AVAILABLE   AGE

cluster-1   calico-kube-controllers      1/1     1            1           63d

cluster-1   coredns                      2/2     2            2           63d

cluster-2   calico-kube-controllers      1/1     1            1           109d

cluster-2   coredns-coredns              2/2     2            2           109d

cluster-2   dce-chart-manager            1/1     1            1           109d

cluster-2   dce-clair                    1/1     1            1           109d

查看所有集群的 kube-systemdefault 命名空間下的 deployments

$ kubectl --cluster clusterpedia get deployments -A -l "search.clusterpedia.io/namespaces in (kube-system, default)"

查看 cluster-1, cluster-2 兩個(gè)集群下的 kube-systemdefault 命名空間下中的 deployments

$ kubectl --cluster clusterpedia get deployments -A -l "search.clusterpedia.io/clusters in (cluster-1, cluster-2),

        search.clusterpedia.io/namespaces in (kube-system,default)"

NAMESPACE     CLUSTER     NAME                         READY   UP-TO-DATE   AVAILABLE   AGE

kube-system   cluster-1   calico-kube-controllers      1/1     1            1           63d

kube-system   cluster-1   coredns                      2/2     2            2           63d

default       cluster-1   dao-2048-2048                1/1     1            1           20d

default       cluster-1   hello-world-server           1/1     1            1           26d

default       cluster-1   my-nginx                     1/1     1            1           39d

default       cluster-1   phpldapadmin                 1/1     1            1           40d

kube-system   cluster-2   calico-kube-controllers      1/1     1            1           109d

kube-system   cluster-2   coredns-coredns              2/2     2            2           109d

kube-system   cluster-2   dce-chart-manager            1/1     1            1           109d

kube-system   cluster-2   dce-clair                    1/1     1            1           109d

顯示數據有刪減,略多查看 cluster-1cluster-2 兩個(gè)集群下的 kube-systemdefault 命名空間下中的deployments,并根據資源的名字排序

$ kubectl --cluster clusterpedia get deployments -A -l "search.clusterpedia.io/clusters in (cluster-1, cluster-2),

        search.clusterpedia.io/namespaces in (kube-system,default),

        search.clusterpedia.io/orderby=name"

kube-system   cluster-1   calico-kube-controllers      1/1     1            1           63d

kube-system   cluster-2   calico-kube-controllers      1/1     1            1           109d

kube-system   cluster-1   coredns                      2/2     2            2           63d

kube-system   cluster-2   coredns-coredns              2/2     2            2           109d

default       cluster-1   dao-2048-2048                1/1     1            1           20d

kube-system   cluster-2   dce-chart-manager            1/1     1            1           109d

kube-system   cluster-2   dce-clair                    1/1     1            1           109d

kube-system   cluster-2   dce-registry                 1/1     1            1           109d

kube-system   cluster-2   dce-uds-storage-server       1/1     1            1           109d

default       cluster-1   dd-airflow-scheduler         0/1     1            0           53d

default       cluster-1   dd-airflow-web               0/1     1            0           53d

kube-system   cluster-2   metrics-server               1/1     1            1           109d

default       cluster-1   my-nginx                     1/1     1            1           39d

default       cluster-1   nginx-dev                    1/1     1            1           14d

default       cluster-1   openldap                     1/1     1            1           40d

default       cluster-1   phpldapadmin                 1/1     1            1           40d

顯示數據有刪減,略多

指定集群檢索

我們如果想要檢索指定集群的資源的話(huà),我們可以使用 –cluster 來(lái)指定具體的集群名稱(chēng)

$ kubectl --cluster cluster-1 get deployments -A

NAMESPACE                     CLUSTER     NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE

kubeapps-oidc                 cluster-1   apach2-apache                                 1/1     1            1           35d

kube-system                   cluster-1   calico-kube-controllers                       1/1     1            1           63d

cert-manager                  cluster-1   cert-manager                                  1/1     1            1           42d

cert-manager                  cluster-1   cert-manager-cainjector                       1/1     1            1           42d

cert-manager                  cluster-1   cert-manager-webhook                          1/1     1            1           42d

kube-system                   cluster-1   coredns                                       2/2     2            2           63d

default                       cluster-1   dao-2048-2048                                 1/1     1            1           20d

kubernetes-dashboard          cluster-1   dashboard-metrics-scraper                     1/1     1            1           54d

default                       cluster-1   dd-airflow-scheduler                          0/1     1            0           53d

default                       cluster-1   dd-airflow-web                                0/1     1            0           53d

顯示數據有刪減,略多

除了 search.clusterpedia.io/clusters 外其余的復雜查詢(xún)的支持和多集群檢索相同。

如果我們要獲取一個(gè)資源的詳情,那么也是需要指定集群才可以。

$ kubectl --cluster cluster-1 -n kube-system get deployments coredns

CLUSTER     NAME            READY   UP-TO-DATE   AVAILABLE   AGE

cluster-1   apach2-apache   1/1     1            1           35d

復雜檢索

clusterpedia 支持以下復雜檢索:

  • 指定一個(gè)或者多個(gè)集群名稱(chēng)
  • 指定一個(gè)或者多個(gè)命名空間
  • 指定一個(gè)或者多個(gè)資源名稱(chēng)
  • 指定多個(gè)字段的排序
  • 分頁(yè)功能,可以指定 size 和 offset
  • labels 過(guò)濾

對于字段的排序,實(shí)際的效果是根據存儲層來(lái)決定的,默認存儲層支持根據 cluster , name , namespace , created_at , resource_version 進(jìn)行正序或者倒序的排序。

檢索條件的傳遞方式

上面實(shí)例中,演示了使用 kubectl 來(lái)進(jìn)行檢索,而這些復雜的檢索條件通過(guò) label 來(lái)傳遞的。實(shí)際上 clusterpedia 還支持直接通過(guò) url query 的傳遞這些檢索條件。

label key 的操作符支持 ==, =, !=, in, not in 對于 size 這個(gè)條件,實(shí)際上 kubectl 可以通過(guò) –chunk-size 來(lái)指定,而不需要通過(guò) label key。

集合資源 (Collection Resource)

在 clusterpedia 還有對資源更加高級的聚合,使用 Collection Resource 可以一次性獲取到一組不同類(lèi)型的資源。

可以先查看一下當前 clusterpedia 支持哪些 Collection Resource。

$ kubectl get collectionresources

NAME        RESOURCES

workloads   deployments.apps,daemonsets.apps,statefulsets.apps

通過(guò)獲取 workloads 便可獲取到一組 deployment, daemonset, statefulset 聚合在一起的資源 而且 Collection Resource 同樣支持所有的復雜查詢(xún)。

kubectl get collectionresources workloads 會(huì )默認獲取所有集群下所有命名空間的相應資源。

$ kubectl get collectionresources workloads

CLUSTER     GROUP   VERSION   KIND         NAMESPACE                     NAME                                          AGE

cluster-1   apps    v1        DaemonSet    kube-system                   vsphere-cloud-controller-manager              63d

cluster-2   apps    v1        Deployment   kube-system                   calico-kube-controllers                       109d

cluster-2   apps    v1        Deployment   kube-system                   coredns-coredns                               109d

cluster-2   apps    v1        Deployment   dce-acm-agent                 dce-acm-agent                                 84d

在 cluster-1 中增加收集 Daemonset, 輸出有刪減,太多

由于 kubectl 的限制所以無(wú)法在 kubectl 來(lái)使用復雜查詢(xún),只能通過(guò) url query 的方式來(lái)查詢(xún)。

自定義 Collection Resource

Collection Resource 支持哪些資源是由存儲層來(lái)提供,而默認存儲層未來(lái)會(huì )支持自定義組合 Collection Resource。

05 對資源進(jìn)行更復雜的操作

clusterpedia 不僅僅只是用來(lái)做資源檢索,和 wiki 一樣,它也應該具有對資源簡(jiǎn)單的控制能力,例如 watch, create, delete, update 等操作。

對于寫(xiě)操作,實(shí)際會(huì )采用雙寫(xiě) 響應 warning 的方式來(lái)完成。

感興趣的話(huà)可以在 issue 中一起討論。

06 集群的自動(dòng)發(fā)現與收集

clusterpedia 中用來(lái)表示集群的資源叫做 PediaCluster, 而不是簡(jiǎn)單的 Cluster,最主要的原因便是 clusterpedia 設計初衷便是讓 clusterpedia 可以建立在已有的多集群管理平臺之上。

為了遵循初衷,第一個(gè)問(wèn)題便是不能和已有的多集群平臺中的資源沖突, Cluster 便是一個(gè)最通用的代表集群的資源名稱(chēng)。另外為了更好的去接入到已有的多集群平臺上,讓已經(jīng)接入的集群可以自動(dòng)的完成資源收集,我們需要另外的一個(gè)集群發(fā)現機制。這個(gè)發(fā)現機制需要解決以下問(wèn)題:

  • 能夠獲取到訪(fǎng)問(wèn)集群的認證信息
  • 可以配置觸發(fā) PediaCluster 生命周期的 Condition 條件
  • 設置默認的資源收集策略,以及名稱(chēng)前綴等

這個(gè)功能會(huì )在 Q1 或者 Q2 中開(kāi)始詳細討論實(shí)現。

07 當前進(jìn)展

clusterpedia 當前處于比較早期的階段 (v0.0.9-alpha),核心功能剛剛完成,還有很多可以?xún)?yōu)化的地方,對于這些優(yōu)化點(diǎn)也都提了對應的 issues,歡迎大家一起討論

這里簡(jiǎn)單說(shuō)一些進(jìn)入 v0.1.0 版本前的優(yōu)化點(diǎn):

  • 從具有 Server-Side Apply 特性的集群中收集到的資源會(huì )帶有很臃腫的 managedFields 字段, clustersynchro manager 模塊會(huì )增加相應 feature gate,來(lái)允許用戶(hù)在收集時(shí)裁減掉這個(gè)字段
  • 同樣的臃腫字段 annotations 中的 kubectl.kubernetes.io/last-applied-configuration,也要允許裁剪這個(gè)字段
  • 在指定集群獲取資源時(shí),如果集群處于異常狀態(tài)時(shí),應該在響應中添加 warning 來(lái)提醒用戶(hù)
  • 對 PediaCluster 的狀態(tài)信息有更準確的更新
  • 弱網(wǎng)環(huán)境下,資源收集的優(yōu)化

更多的優(yōu)化項,大家可以在 issue 中提出新的想法。

08 Roadmap

當前只是暫定的 Roadmap,具體的排期還要看社區的需求程度

2021 Q4

在 2021 的 Q4 階段會(huì )完成上述的優(yōu)化項,并且完成對自定義資源的收集

  • 詳細化資源收集狀態(tài)
  • 自定義資源的收集

Q1

  • 支持插件化存儲層
  • 實(shí)現集群的自動(dòng)發(fā)現和收集

Q2

  • 支持對集群資源更多的控制,例如 watch/create/update/delete 等操作
  • 默認存儲層支持自定義 Collection Resource
  • 支持請求附帶關(guān)系資源

09 使用注意

多集群網(wǎng)絡(luò )連通性

clusterpedia 實(shí)際并不會(huì )解決多集群環(huán)境下的網(wǎng)絡(luò )連通問(wèn)題,用戶(hù)可以使用tower等工具來(lái)連接訪(fǎng)問(wèn)子集群,也可以借助 submariner 或者 skupper 來(lái)解決跨集群網(wǎng)絡(luò )問(wèn)題。

當然您也可以加入DaoCloud道客云原生交流群參與交流互動(dòng):

 (企業(yè))微信掃碼加入

DaoCloud 公司簡(jiǎn)介:「DaoCloud 道客」云原生領(lǐng)域的創(chuàng )新領(lǐng)導者,成立于 2014 年底,擁有自主知識產(chǎn)權的核心技術(shù),致力于打造開(kāi)放的云原生操作系統為企業(yè)數字化轉型賦能。產(chǎn)品能力覆蓋云原生應用的開(kāi)發(fā)、交付、運維全生命周期,并提供公有云、私有云和混合云等多種交付方式。成立迄今,公司已在金融科技、先進(jìn)制造、智能汽車(chē)、零售網(wǎng)點(diǎn)、城市大腦等多個(gè)領(lǐng)域深耕,標桿客戶(hù)包括交通銀行、浦發(fā)銀行、上汽集團、東風(fēng)汽車(chē)、海爾集團、屈臣氏、金拱門(mén)(麥當勞)等。目前,公司已完成了 D 輪超億元融資,被譽(yù)為科技領(lǐng)域準獨角獸企業(yè)。公司在北京、武漢、深圳、成都設立多家分公司及合資公司,總員工人數超過(guò) 350 人,是上海市高新技術(shù)企業(yè)、上海市“科技小巨人”企業(yè)和上海市“專(zhuān)精特新”企業(yè),并入選了科創(chuàng )板培育企業(yè)名單。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

亚洲性无码AV在线| 国产精品无码永久免费888| 日韩人妻无码精品—专区| 免费无码一区二区三区| 亚洲中文字幕无码中文字在线| 夜夜澡人摸人人添人人看|