摘要:Karmada v1.2 版本对调度器能力做了较大增强,初步提供了分布式搜索引擎支持,此外还借助聚合API提供了诸如 logs, watch等实用的命令行工具,资源解释器(Resource Interpreter)开始支持状态收集定制。

本文分享自华为云社区《Karmada v1.2发布:开启全文本搜索新纪元》,作者: 云容器大未来。

与之前的版本一样,v1.2与前面的版本仍然保持兼容。

新特性

全局全文搜索K8s资源

该版本提供了一个名为”karmada-search”的组件,用于缓存集群中部署的资源对象和事件,并通过搜索API对外提供检索服务。

与聚合API提供的查询服务所不同的是,缓存检索不需要访问目标集群,定位于需要经常进行数据搜索和分析的场景,比如构建实时的资源、事件看板。

用户可以使用ResourceRegistry API来指定缓存的资源类型以及数据源(目标集群),例如以下配置指示从member1 和member2两个集群中缓存Deployment资源:

apiVersion: search.karmada.io/v1alpha1
kind: ResourceRegistry
metadata:
name: foo
spec:
resourceSelectors:
- apiVersion: apps/v1
kind: Deployment
targetCluster:
clusterNames:
- member1
- member2

将该配置提交给karmada-apiserver,便可使用search API 进行检索,例如查询缓存的deployment:

# kubectl get --raw /apis/search.karmada.io/v1alpha1/search/cache/apis/apps/v1/deployments
{
"apiVersion": "v1",
"kind": "List",
"metadata": {},
"items": [{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {
"cluster.karmada.io/name": "member1",
},
}
},
]
}

该URL中,/apis/search.karmada.io/v1alpha1/search/cache为固定前缀,后面部分与Kubernetes原生API路径完全一致。

此外,`karmada-search`还支持第三方存储,如搜索引擎(Elasticsearch或OpenSearch)以及关系型数据库(MySQL)、图数据库等,当前版本仅支持搜索引擎。

借助搜索引擎强大的数据搜索和分析能力,可以对资源对象和事件进行随意组合形成各种报表,比如镜像拉取情况,节点OOM情况等。

Karmada聚合API大放异彩

聚合API能力首次在v1.0版本中提供,它提供聚合多个集群API入口的能力,用户仅通过Karmada控制面即可实时查询集群中的资源对象。

在v1.2版本中,我们借助该能力提供了多个运程过程中常用的命令行工具。

karmadactl get:跨集群查询资源

# karmadactl get deployment -n default
NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION
nginx member1 2/2 2 2 33h N
nginx member2 1/1 1 1 4m38s Y
podinfo member3 2/2 2 2 27h N

在v1.2版本中使用聚合API重新实现了get命令,并支持了Pull模式的集群查询。

karmadactl logs: 跨集群查询容器日志

# ./karmadactl logs nginx-6799fc88d8-9mpxn -c nginx  -C member1
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
...

容器日志的现在也可以在Karmada控制面进行查询。

除了logs, get还新增了watch命令进行跨集群监听资源变化和exec命令在远程容器中执行命令。

Karmada资源解释器支持状态收集定制化

自Karmada v0.10版本中新增资源解释器特性以来,社区不断地丰富该特性所支持的功能。在v1.2版本中,我们新加入了对InterpretStatus操作的支持。InterpretStatus操作支持用户自定义收集Kubernetes资源的状态信息,包括自定义资源CustomResourceDefinition(CRD)。

Karmada支持多集群资源以及资源状态管理 。在用户通过分发策略将指定资源分发到不同成员集群中之后,Karmada会将相应资源在不同成员集群上的状态信息经过层层收集,最终汇聚到控制面中的资源模板上,从而方便用户查看。比如说Deployment的状态信息:

# kubectl get deployments.apps nginx -oyaml
apiVersion: apps/v1
kind: Deployment
metadata:

labels:
app: nginx
propagationpolicy.karmada.io/name: nginx-propagation
propagationpolicy.karmada.io/namespace: default
name: nginx
namespace: default
spec:

status:
availableReplicas: 2
readyReplicas: 2
replicas: 2
updatedReplicas: 2

在资源状态收集过程中,Karmada原有的策略是收集资源的整个Status,这样带来的直接问题就是会收集到很多冗余的资源状态信息,这样会导致Karmada消耗更多的内存与存储资源,进而限制Karmada资源管理的规模。

InterpretStatus操作的引入,可以很好的解决上述问题。Karmada通过调用由用户自定义的资源状态收集钩子,就能够收集到经过处理后,不含冗余信息的资源状态。这对于CRD资源来说,尤其具有意义。因为对于CRD资源来说,Karmada并不清楚其Status定义,这意味着我们不能通过build-in的方式来处理状态信息。此时,用户可以借助该能力定制状态收集行为。

调度器能力增强:重平衡和故障驱逐

新的组件: karmada-descheduler

新增加了karmada-descheduler组件进行平衡调度结果,比如随着时间推移,集群中的Pod或许会因为集群资源变化(如Node故障)而变得无法运行,此时karmada-descheduler可以对该类资源进行驱逐,进而触发Karmada 调度器进行二次调度,重新为该工作负载分配新的可用集群。

新的插件

新加了名为ClusterLocality 的打分插件,该插件会根据调度约束和集群位置进行打分,便于调度器进行精准调度。

新加了名为SpreadConstraint 的过滤插件,该插件会过滤掉不满足约束的集群。

在这两个插件基础上,还增加了对spread-by-region的调度支持,借此可支持用户方便地根据region进行部署。

故障迁移和驱逐

该版本还启动了故障迁移和驱逐的优化工作,社区计划在下个版本中完成,部分优化工作已经在本版本中完成,比如更合理的故障判定规则和故障超期启动驱逐等。

控制器中新增加了--cluster-failure-threshold参数用于指定集群故障容忍周期,只有故障时间超过该周期,Karmada才将该集群判定为故障,避免因网络波动造成的误判。

控制器中还增加了--failover-eviction-timeout 参数指定故障驱逐容忍时间,一旦集群故障超过该周期,Karmada即启动故障驱逐(当前版本仅会对集群设置污点,驱逐能力将在下个版本提供)。

借助原生API集成周边生态:安全合规治理、helm chart跨集群分发

在Karmada 1.2版本中,Karmada借助Kubernetes原生API集成了Kubernetes周边生态,为用户提供了在Karmada中使用安全合规治理策略以及helm chart跨集群分发的实践案例。

安全合规治理

在生产环境中应用 Karmada时,出于安全、合规等管控目的,经常需要对工作负载进行审计、校验以及变更,例如下列场景:

  1. 为了便于在监控和日志中识别特定集群的应用,我们希望某个业务应用的 Pod 具备合适的标签结构,标识本 Pod 所在集群位置及业务角色。
  2. 为了防范供应链攻击或是加速特定集群的镜像加载,我们限制特定集群的应用只能从特定仓库中拉取镜像,且拉取策略总是“Always”。
  3. Karmada在提升多集群的运维能力的同时也需要限制恶意用户对集群的破坏行为,或是运维人员在运维过程中的误操作,例如删除一个仍有工作负载工作的命名空间。

基于以上种种,Karmada需要一个安全策略引擎以满足多集群的安全合规治理。借助于原生API,Karmada可以无侵入地集成CNCF主流的安全策略引擎项目,当前社区已提供了Gatekeeper以及Kyverno的集成实践,用户可以基于上述实践以及生产需求生成自有的Karmada安全合规策略。

Helm chart跨集群分发

当前Karmada已实现对Kubernetes原生资源的跨集群分发,然而在生产环境中,应用通常包含不止一个工作负载,还包括RBAC资源、configmap、secret等,这就要求Karmada跨集群分发应用的能力。通常,用户选择Helm chart来进行应用的打包,在跨集群场景下,Karmada可以通过集成Flux的方式轻松实现helm chart跨集群分发的能力,不只于此,借助Karmada的OverridePolicy,用户可以定制针对特定集群的应用,在统一的Karmada控制面上管理跨集群的应用。

致谢贡献者

Karmada v1.2 版本包含了来自48位贡献者的数百次代码提交,在此对各位贡献者表示由衷的感谢:

贡献者GitHub ID:

@AllenZMC

@anu491

@carlory

@CharlesQQ

@chaunceyjiang

@chinmaym07

@CuiDengdeng

@dddddai

@duanmeng

@duanmengkk

@ErikJiang

@fanzhihai0215

@fleeto

@Garrybest

@gf457832386

@gy95

@hanweisen

@huiwq1990

@huntsman-li

@huone1

@ikaven1024

@jameszhangyukun

@kerthcet

@learner0810

@lfbear

@likakuli

@liys87x

@lonelyCZ

@lvyanru8200

@mikeshng

@mrlihanbo

@my-git9

@pangsq

@pigletfly

@Poor12

@prodanlabs

@RainbowMango

@sayaoailun

@snowplayfire

@stingshen

@Tingtal

@wuyingjun-lucky

@wwwnay

@XiShanYongYe-Chang

@xyz2277

@YueHonghui

@zgfh

@zirain

参考链接

添加小助手微信putong3333,回复Karmada进入交流群

华为伙伴暨开发者大会2022火热来袭,重磅内容不容错过!

【精彩活动】

勇往直前·做全能开发者→12场技术直播前瞻,8大技术宝典高能输出,还有代码密室、知识竞赛等多轮神秘任务等你来挑战。即刻闯关,开启终极大奖!点击踏上全能开发者晋级之路吧!

【技术专题】

未来已来,2022技术探秘→华为各领域的前沿技术、重磅开源项目、创新的应用实践,站在智能世界的入口,探索未来如何照进现实,干货满满点击了解

点击关注,第一时间了解华为云新鲜技术~

Karmada v1.2发布:开启全文本搜索新纪元的更多相关文章

  1. 【转】MYSQL入门学习之三:全文本搜索

    转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索   www.2cto.com   1.MyISAM支持全文本搜索,而Inn ...

  2. MySQL(十)操纵表及全文本搜索

    一.创建表 MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 创建表一般有如下两种方式: ①使用具有交互式创建和管理表的工具: ②直接使用MySQL语句操纵表 ...

  3. MySQL全文本搜索

    启用全文本搜索支持 create table text( -> id int not null auto_increment, -> texts text null, -> prim ...

  4. 《mysql必知必会》笔记2(子查询、联接、组合查询、全文本搜索)

    十四:使用子查询 1:子查询是嵌套在其他查询中的查询. 2:需要列出订购TNT2的所有客户信息,需要下面几步: a:从orderitems表中检索出包含物品TNT2的所有订单号: b:根据上一步得出的 ...

  5. Karmada v1.5发布:多调度组助力成本优化

    摘要:在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群. 本文分享自华为云社区& ...

  6. mysql 文本搜索

    全文本搜索 MySQL支持几种基本的数据库引擎,但并非所有的引擎都支持全文本搜索.两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,后者就不支持. 理解全文本搜索 在前面的学习中,我 ...

  7. ElasticStack学习(九):深入ElasticSearch搜索之词项、全文本、结构化搜索及相关性算分

    一.基于词项与全文的搜索 1.词项 Term(词项)是表达语意的最小单位,搜索和利用统计语言模型进行自然语言处理都需要处理Term. Term的使用说明: 1)Term Level Query:Ter ...

  8. Karmada v1.3:更优雅 更精准 更高效

    摘要:最新发布的1.3版本中,Karmada重新设计了应用跨集群故障迁移功能,实现了基于污点的故障驱逐机制,并提供平滑的故障迁移过程,可以有效保障服务迁移过程的连续性(不断服). 本文分享自华为云社区 ...

  9. 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器

    系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...

  10. [linux] grep 文本搜索工具

    grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...

随机推荐

  1. Go 常用标准库之 fmt 介绍与基本使用

    Go 常用标准库之 fmt 介绍与基本使用 目录 Go 常用标准库之 fmt 介绍与基本使用 一.介绍 二.向外输出 2.1 Print 系列 2.2 Fprint 系列 2.3 Sprint 系列 ...

  2. 苹果电脑开不了机,mac时间机器备份加速,以及识别不到u盘的方法

    平淡无奇的一天,上班后,我按照正常流程,揭开我亲爱的mac的盖子.屏幕没有如昨天一样照亮我的脸庞,擦,电用完了吗? 我充上电,半小时后,电池都热了,依然开不了机.打售后电话,售后姐姐亲切的指导各种我使 ...

  3. webgoat _v8.1全流程通关

    1.1 (A1)SQL Injection (intro) 概念 本课程介绍了什么是结构化查询语言(SQL),以及如何操纵它以执行开发人员原始意图之外的任务. 目标 用户将对SQL的工作原理和用途有基 ...

  4. mysql 表级锁之一lock table

    1.lock table t1 read: 1.1.当前线程: 读/写当前表/其他表: unlock tables; lock table t1 read; select * from t1; INS ...

  5. picgo+GitHub搭建图床

    picgo+GitHub 搭建图床 目录 picgo+GitHub 搭建图床 图床的概念 使用 GitHub 创建图床服务器 在 GitHub 上面新建仓库 生成 token 令牌 创建 img 分支 ...

  6. 使用 LCM LoRA 4 步完成 SDXL 推理

    LCM 模型 通过将原始模型蒸馏为另一个需要更少步数 (4 到 8 步,而不是原来的 25 到 50 步) 的版本以减少用 Stable Diffusion (或 SDXL) 生成图像所需的步数.蒸馏 ...

  7. 海量电商数据与用友YS系统数据对接案例

    案例背景 客户是历史比较悠久的企业.企业内部用的系统多达十几套,专门成立信息化公司进行数字化转型,第一期需求系统旺店通的ERP以及旺店通的WMS并且启用京东的沧海外仓. 在选型ERP用友ERP和金蝶E ...

  8. execl表格if函数and和or的使用方法?

    当在Excel中处理数据时,IF函数是非常有用的函数之一.它允许您根据指定的条件执行不同的操作.在IF函数中,AND和OR函数可以帮助您组合多个条件以实现更复杂的逻辑判断.接下来,我将详细描述IF函数 ...

  9. 用EXCEL VBA 做的学生成绩分析系统

    标题:基于EXCEL VBA的学生成绩分析系统--详细介绍与说明导言:学生成绩分析对于教育机构和学生个体来说具有重要意义.本文将详细介绍基于EXCEL VBA的学生成绩分析系统的设计与实现.通过该系统 ...

  10. 关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)

    当在Git中有多个开发者在同一个分支上工作时,可能会发生分支冲突.分支冲突指的是多个开发者在同一时间修改相同的代码文件,导致Git无法自动合并这些更改. 比如说:我在github上进行了md文件的修改 ...