陈奇网络工作室

Cluster Pedia(Kubernetes集群的百科全书) DaoCloud道客云的原创开源项目 增加了kubectl检索多集群资源

本文的内容

显示

1.

01集群儿科简介

1.1.

结构化

1.2.

特性和功能

2.

02部署集群百科

3.

03群集资源收集

3.1.

集群认证

3.2.

资源收集

4.

04资源检索

4.1.

多集群资源检索

4.2.

指定聚类检索

4.3.

复杂检索

4.4.

检索条件的传递方式

4.5.

馆藏资源

4.6.

自定义收藏资源

5.

05更复杂的资源操作。

6.

06簇的自动发现和收集

7.

07当前进度

8.

08路线图

8.1.

2021年第四季度

8.2.

雌三醇环戊醚

8.3.

Q2

9.

使用注意事项

9.1.

多集群网络连接

9.2.

推荐阅读

Clusterpedia,DaoCloud道客云的原创开源项目,全称Kubernetesclusters百科全书,源代码在https://github.com/clusterpedia-io/clusterpedia.查看

在多集群时代,我们可以通过cluster-api批量创建管理集群,使用Karmada/Clusternet分发部署应用。但是,我们似乎还缺少一些功能。如何才能统一查看多个集群中的资源?

对于单个集群的资源,我们可以使用kubectl查看搜索资源,但是当我们想要检索多个集群的资源时,似乎没有可以使用的产品。这个问题不会再困扰你了,因为有了DaoCloud的原生开源项目Clusterpedia的加持,你的kubectl已经可以用来检索多集群资源了!

例如,使用kubectl在多个集群下的kube-system名称空间中获得部署。

$ kubectl获取部署-n kube-system

集群名称就绪最新可用时间

第1组calico-kube控制器1 1 1 63d

集群1核心dns 2/2 2 2 63d

第2组calico-kube控制器1/1 1 1 109d

集群-2核心DNS-核心DNS 2/2 2 109d

第2组dce图表-管理器1/1 1 1 109d

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

01集群儿科简介

Clusterpedia,其名称借用了维基百科,也展现了Clusterpedia的核心思想,——多集群百科。

通过聚合多集群资源,在兼容Kubernetes OpenAPI的基础上,提供了更强大的检索功能,让用户在多集群中更快捷、更方便地获取自己想要的任何资源。当然,Clusterpedia的能力不仅仅是搜索和查看,未来还可以支持对资源的简单控制,就像wiki也支持编辑词条一样。

结构化

集群百科在架构上分为四个部分:

Clusterpedia APIServer:以聚合API的形式注册到Kube APIServer,通过统一的门户提供服务。

集群同步管理器:管理用于同步集群资源的集群同步。

存储层:用于连接和操作特定的存储组件,然后通过存储层接口在Clusterpedia APIServer和ClusterSynchro Manager中注册。

存储组件:特定的存储设施,如mysql、postgres、redis或其他图形数据库。

此外,Clusterpedia将使用定制的资源PediaCluster实现集群认证和资源集合配置。

Clusterpedia还提供了一个默认的存储层,可以访问mysql和postgres。

Clusterpedia并不关心用户使用的具体存储设置。用户可以根据自己的需求选择或实现存储层,然后将存储层注册到Clusterpedia中作为插件使用。

特性和功能

支持复杂的搜索条件、过滤条件、排序、分页等。

支持在查询资源时请求有关联关系的资源。

统一的主集群和多集群资源检索门户

与kubernetes OpenAPI兼容,kubectl可以直接用于多集群检索,无需第三方插件或工具。

不同版本群集资源的兼容集合,不受主群集版本的限制,

资源收集具有高性能和低内存。

根据群集的当前运行状况自动启动和停止资源收集。

插件式存储层,用户可以根据自己的需求使用其他存储组件来定义存储层。

高可用

02 部署集群百科

关于部署的详细流程,可以查看自述文件,这里着重介绍了如何使用群集百科. https://github . com/cluster pedia-io/cluster pedia #部署

03 集群资源收集

集群百科部署完成后,我们可以通过库贝特尔来操作儿科集群资源。

$ kubectlgetpediaclusters

在例子目录下,可以看到儿科集群的示例

应用程序接口版本:clusters . cluster pedia . io/v1 alpha 1

种类:儿科集群

元数据:

名称:集群示例

规格:

API server URL:“https://172。30 .43 .41:6443"

caData:" "

令牌数据:""

证书数据:""

密钥数据:""

资源:

-群组:应用程序

资源:

-部署

-组:""

资源:

豆荚

儿科集群在配置上可以分成两部分

集群认证

指定资源收集。规格。资源

集群认证

caData,令牌数据,证书数据,密钥数据字段用于集群的验证。

当前暂时不支持从配置图或者秘密中获取验证相关的信息,不过已经在路标中了。

在设置验证字段时,注意要使用base64后的字符串

在例子目录下提供了生成用于访问子集群的RBAC RBAC同步百科。YAML,来方便的获取子集群的权限令牌。

在子集群中部署该yaml,然后获取对应的代币和加拿大证书。

$#当前库贝特尔连接到子集群中

$ ku bectl应用-f示例/集群儿科_同步_ RBAC。YAML

clusterrole.rbac.authorization.k8s.io/clusterpedia-synchro创造了

服务客户/集群儿科-同步已创建

clusterrolebinding。RBAC。授权。k8s。io/集群百科-同步已创建

$ SYNCHRO _ TOKEN=$(ku bectl get secret $(ku bectl get service account clusterpedia-SYNCHRO-o JSON path=\ ' { .机密[0]。name } \ ')-o JSON path=\ ' {。数据。令牌} \ ')

$ SYNCHRO _ CA=$(ku bectl get secret $(ku bectl get service account clusterpedia-SYNCHRO-o JSON path=\ ' { .机密[0]。name } \ ')-o JSON path=\ ' {。数据。ca \ \ .crt}\ ')

复制. examples/pediacluster.yaml,并修改。spec.apiserverURL和。元数据。名称字段,并且将$同步_令牌和$SYNCHRO_CA填写到令牌数据和caData中。

使用库贝特尔应用创建。

$ kubetlapply-f cluster-1。YAML

pediacluster.clusters.clusterpedia.io/cluster-1创造了

为了方便后续使用,建议再创建一个第二组

资源收集

可以通过设置规格资源字段的组和组下的资源来进行指定收集的资源。

在状态中我们也可以看到资源的收集状态。

状态:

条件:

-最后过渡时间:“2021-12-02t 04:00:45Z”

消息:""

理由:健康

状态:"真"

类型:就绪

资源:

-组:""

资源:

-种类:豆荚

命名空间:真

资源:豆荚

同步条件:

-最后过渡时间:“2021-12-02t 04:00:45Z”

状态:同步

存储版本:v1

版本:v1

-群组:应用程序

资源:

-种类:部署

命名空间:真

资源:部署

同步条件:

-最后过渡时间:“2021-12-02t 04:00:45Z”

状态:同步

存储版本:v1

版本:v1

版本:v1.22.2

04 资源检索

配置好我们需要收集的资源后,我们就可以进行重头戏了—— 集群检索集群百科支持两种资源检索:

兼容Kubernetes OpenAPI的资源检索

集合资源(收藏资源)的检索

$ ku bectl API-资源| grep pedia。集束儿科。超正析象管

收藏资源pedia.clusterpedia.io/v1alpha1假收藏资源

资源pedia.clusterpedia.io/v1alpha1虚假资源

为了方便我们更好的使用库贝特尔来进行检索,我们可以先通过创建gen-集群配置来为子集群创建用于检索的\'快捷方式\'

$makegen-clusterconfigs。/hack/gen-clusterconfigs.sh

当前上下文:kubernetes-admin@kubernetes

当前集群:kubernetes

服务器:https://10.9.11.11:6443

坦克激光瞄准镜(Tank Laser-Sight的缩写)服务器名称:

不安全跳过坦克激光瞄准镜(Tank Laser-Sight的缩写)验证:

证书颁发机构:

证书颁发机构数据:***

群集"群集百科"集。

群集"第一类"集。

使用库贝特尔配置获取-集群可以查看当前支持的集群。

其中集群百科是一个特殊的集群,用于多集群检索,以ku bectl集群集群百科的方式来检索多个集群的资源。

多集群资源检索

我们先看一下我们都收集了哪些资源,只有被收集的资源才可以进行检索。

$ kubectl -集群集群百科API-资源

名字简称a版本命名空间种类

pods po v1真实豆荚

部署部署应用程序/v1trueDeployment

可以看到当前收集并支持分离舱和部署。应用程序两种资源

查看所有集群的库贝系统命名空间下的部署

$ ku bectl-cluster cluster pedia get deployments-n kube-system

集群名称就绪最新可用时间

第一组卡利科-库贝控制器1 1 1 63d

集群一核心dns 2/2 2 2 63d

第2组卡利科-库贝控制器109年1月1日

集群-2核心DNS-核心DNS 2/2 2 109d

第2组大连商品交易所图表-管理器109年1月1日

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

查看所有集群的kube-系统,默认命名空间下的部署

$ ku bectl-cluster集群百科获取部署-搜索。集束儿科。(kube-system,默认)中的io/命名空间

查看第一组,第二组两个集群下的kube-系统,默认命名空间下中的部署

$ ku bectl-cluster集群百科获取部署-搜索。集束儿科。io/clusters in(cluster-1,cluster-2),\

search.clusterpedia.io/namespaces在(kube-system,默认)'

命名空间集群名称就绪最新可用时间

kube-系统集群-1件印花棉布-控制器1963年1月1日

kube-系统集群-1核心DNS 2/2 2 63d

默认群集-1刀-2048-2048 1/1 1 20d

默认集群-1 hello-world-server 1/1 1 1 26d

默认集群-1台my-nginx 1/1 1 39d

默认群集-1 phpldadam 1/1 1 40d

kube-系统集群-2印花布-库贝-控制器109年1月1日

kube-系统集群-2核心DNS-核心dns 2/2 2 2 109d

kube-系统群集-2 DCE-图表-管理器109年1月1日

kube-系统集群-2 dce-clair 1/1 1 1 109d

显示数据有删减,略多查看第一组,第二组两个集群下的kube-系统,默认命名空间下中的部署,并根据资源的名字排序

$ ku bectl-cluster集群百科获取部署-搜索。集束儿科。io/clusters in(cluster-1,cluster-2),\

search.clusterpedia.io/namespaces在(kube-system,默认),\\

search.clusterpedia.io/orderby=name'

kube-系统集群-1件印花棉布-控制器1963年1月1日

kube-系统集群-2印花布-库贝-控制器109年1月1日

kube-系统集群-1核心DNS 2/2 2 63d

kube-系统集群-2核心DNS-核心dns 2/2 2 2 109d

默认群集-1刀-2048-2048 1/1 1 20d

kube-系统群集-2 DCE-图表-管理器109年1月1日

kube-系统集群-2 dce-clair 1/1 1 1 109d

kube-系统群集-2 DCE-注册表109年1月1日

kube-系统群集-两个DCE uds-存储-服务器109年1月1日

默认集群-1 DD-气流-调度程序0/1 1 0 53d

默认集群-1 DD-气流-网络0/1 1 0 53d

kube-系统集群-2指标-服务器109年1月1日

默认集群-1台my-nginx 1/1 1 39d

默认集群-1台nginx-dev 1/1 1 1 14d

默认集群1个openldap 1/1 1 1 40d

默认群集-1 phpldadam 1/1 1 40d

显示数据有删减,略多

指定集群检索

我们如果想要检索指定集群的资源的话,我们可以使用集群来指定具体的集群名称

$ kubectl - cluster集群-1获取部署构成动植物的古名或拉丁化的现代名

命名空间集群名称就绪最新可用时间

kube apps-oidc cluster-1 Apache 2-Apache 1/1 1 1 35d

kube-系统集群-1 calico-kube-控制器1/1 1 1 63d

证书管理器群集-1证书管理器1/1 1 1 42d

证书管理器群集-1证书管理器-证书注入器1/1 1 1 42d

证书管理器群集-1证书管理器-web hook 1/1 1 42d

kube-系统集群-1核心DNS 2/2 2 63d

默认群集-1 Dao-2048-2048 1/1 1 20d

kubernetes-仪表板组-1仪表板-指标-scraper 1/1 1 54d

默认集群-1 dd-airflow-scheduler 0/1 1 0 53d

默认集群-1 DD-气流-网络0/1 1 0 53d

显示数据已删除,略多。

除search.clusterpedia.io/clusters,外,其他复杂查询的支持与多聚类检索相同。

如果我们想要获得资源的细节,那么我们还需要指定一个集群。

$ ku bectl-cluster cluster-1-n kube-system获取部署核心dns

集群名称就绪最新可用时间

第一组Apache 2-Apache 1/1 1 35d

复杂检索

Clusterpedia支持以下复杂检索:

指定一个或多个群集名称。

指定一个或多个命名空间。

指定一个或多个资源名称。

指定多个字段的排序。

可指定分页功能、大小和偏移量。

标签过滤

对于字段的排序,实际效果由存储层决定。默认存储层支持根据群集、名称、命名空间、created _ at和resource _ version进行正向或反向排序。

检索条件的传递方式

在上面的例子中,kubectl用于检索,这些复杂的检索条件通过label传递。事实上,clusterpedia也支持通过url查询直接交付这些检索条件。

标签关键操作符支持==,=,=,in,not in对于size的条件,kubectl其实可以用- chunk-size来指定,不需要使用label key。

馆藏资源

clusterpedia中还有更高级的资源聚合,使用Collection Resource可以一次性获得一组不同类型的资源。

您可以首先检查clusterpedia当前支持哪些集合资源。

$kubectlgetcollectionresources

命名资源

工作负载部署.应用程序,守护集.应用程序,状态集.应用程序

通过获取工作负载,可以得到一组按部署聚合的资源,守护进程集和声明集,集合资源也支持所有复杂的查询。

Kubektl get collection resources工作负载默认会获取所有集群下所有名称空间的对应资源。

$ kubectl获取集合资源工作负载

集群组版本种类命名空间名称年龄

集群1应用v1 daemon set kube-系统VSP here-云-控制器-管理器63d

集群2应用v1部署kube-系统calico-kube-控制器109d

集群2应用v1部署kube-系统核心DNS-核心dns 109d

集群2应用v1部署DCE-ACM-代理DCE-ACM-代理84d

在cluster-1中添加集合Daemonset,输出已被删除,太多。

由于kubectl的限制,在kubectl中不能使用复杂的查询,只能通过url查询进行查询。

自定义收藏资源

集合资源支持存储层提供哪些资源,默认存储层将来会支持自定义组合集合资源。

05更复杂的资源操作。

Clusterpedia不仅仅是用于资源检索,和wiki一样,它还应该对资源有简单的控制,比如观看、创建、删除、更新等等。

对于写操作,实际上使用双写响应警告来完成它。

有兴趣的话可以在下期一起讨论。

06簇的自动发现和收集

clusterpedia中用来表示集群的资源叫做PediaCluster,而不是简单的Cluster。主要原因是clusterpedia的初衷是让clusterpedia建立在现有的多集群管理平台上。

为了遵循初衷,首先的问题是不能与现有多集群平台中的资源冲突,集群是最常见的代表集群的资源名称。此外,为了更好地访问现有的多集群平台,使被访问的集群能够自动收集资源,我们需要另一种集群发现机制。这种发现机制需要解决以下问题:

可以获得接入集群的认证信息。

您可以配置触发PediaCluster生命周期的条件。

设置默认的资源收集策略、名称前缀等。

这一功能将在Q1或Q2详细讨论。

07当前进度

Clusterpedia目前处于早期阶段(v0.0.9-alpha),核心功能刚刚完成,还有很多可以优化的地方。对于这些优化点,也提出了相应的问题,欢迎大家一起探讨。

以下是进入v0.1.0版本前的一些简单优化点:

从具有服务器端应用功能的集群中收集的资源会有一个非常臃肿的managedFields字段,clustersynchro manager模块会增加一个相应的功能门,允许用户在收集时剪切这个字段。

Kubectl.kubernetes.io/last-applied-configuration在同一个臃肿的领域注解也应该允许作物这一领域。

当指定集群获取资源时,如果集群处于异常状态,应该在响应中添加警告以提醒用户。

更准确地更新PediaCluster的状态信息。

弱网络环境下的资源收集优化

对于更多的优化项目,您可以在问题中提出新的想法。

08路线图

目前只是一个暂定的路线图,具体的时间表还要看社区的需求。

2021年第四季度

2021年Q4,完成上述优化事项,完成定制资源的收集。

详细的资源收集状态

自定义资源集合

雌三醇环戊醚

支持插件存储层

实现集群的自动发现和收集。

Q2

支持对群集资源的更多控制,如监视/创建/更新/删除。

默认存储层支持自定义集合资源。

对附属资源的支持请求

使用注意事项

多集群网络连接

Clusterpedia实际上并没有解决多集群环境下的网络连接问题。用户可以使用tower等工具连接和访问子集群,或者使用submariner或skupper解决跨集群网络问题。

当然也可以加入DaoCloud道客云原生交流群参与交流互动:

(企业)微信扫码加盟

DaoCloud公司简介:DaoCloud道客,云原生领域的创新领导者,成立于2014年底。拥有自主知识产权的核心技术,致力于打造开放的云原生操作系统,为企业数字化转型赋能。产品能力覆盖云原生应用开发、交付、运维的全生命周期,提供公有云、私有云、混合云等多种交付方式。公司自成立以来,深耕金融科技、先进制造、智能汽车、零售网点、城市大脑等领域。其标杆客户包括交通银行、浦发银行、上汽集团、东风汽车、海尔集团、屈臣氏、金拱门(麦当劳)等。目前公司已完成超亿元的D轮融资,被誉为科技领域的准独角兽企业。公司在北京、武汉、深圳、成都设立了多家分公司和合资企业,员工总数超过350人。是上海市高新技术企业、上海市“科技巨人”企业、上海市“专业化创新型”企业,并被纳入科技创新板培育企业名单。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3