• 如何使用Kubevious进行Kubernetes多集群搜索与救援!

    云和安全管理服务专家新钛云服 祝祥翻译

    Kubernetes其实并不简单。尤其是在应用程序因崩溃而需要救援,用户正在执行日常审核校验操作,管理员更新集群配置或负载均衡器配置以及工作负载相关的权限,又或者需要安全地停用微服务的时候,你首先要做的就是寻找匹配需求的 YAML文件。

    一旦确定了确切的资源,kubectl 就可以让用户查看和编辑配置。固然kubectl可以让您执行精确的标签过滤器,但这有时候用起来并不是那么简单。

    其实,更大的挑战是要在应用程序和相关 YAML 的上下文中查找配置,例如,在使用 Ingress 公开的服务中搜索特定的 AWS ELB 负载均衡器注释?或者搜索加载到使用超过 4GB 内存并被授予集群 API 写入权限的工作负载的Configmap。

    跨多个集群执行此操作会使 Kubernetes 操作人员(用户)的工作更加复杂。本文将介绍我们如何解决这个问题、Kubevious 搜索引擎所涉及的功能以及如何使用它。

    Kubevious 搜索

    Kubevious (
    https://github.com/kubevious/kubevious) 是一个开源的 Kubernetes Dashboard,但是和我们主流的 Dashboard 却不太一样,可以说非常有特色,他将应用程序相关的所有配置都集中在一起,这可以大大节省操作人员的时间,其实这都不是最主要的,主要的是他具有一个 TimeMachine(时光机)功能,允许我们回到之前的时间去查看应用的错误信息。

    我们研究了旅游、租赁和汽车销售网站的应用场景,然后针对对应的场景去解决这个问题。这通常涉及基允许部分和模糊匹配的文本的搜索。然后,使用预定义的过滤器缩小搜索结果的范围。最后,我们添加了任意程序化过滤器的功能(见下面的标记)。

    您可能已经猜到了,所有这些都适用于在 Kubevious 中注册的所有集群。

    Context-Aware Text Search——上下文感知文本搜索

    顾名思义,这是一个类似于 Google 的搜索,用于扫描 YAML 配置。Kubevious 浏览器中可见的任何术语都可以用于搜索条件。搜索操作是层次结构和应用程序感知的,因此deployment、pod、service、configmap等应用活服务的名称都可用于返回上下文结果。部分和近似结果也是可以接受的。

    在下面的示例中,我们正在搜索“redis”。搜索引擎从“test-cluster-6”返回 16 个结果,从“saas-prod”集群返回84个结果。

    单击任何搜索结果将导航到集群浏览器屏幕以进行进一步检查。

    我们可以使用诸如“redis port master”之类的附加术语来扩展搜索查询,以查找 redis master 节点正在侦听哪些端口:

    或者使用“redis pvc”搜索条件搜索附加到所有 redis 节点的持久卷:

    Kubevious Search 允许使用左侧的附加过滤器缩小搜索结果的范围。一次可以使用多个过滤器来帮助您找到需要关注的资源。

    Kind Filter——Kind过滤器

    您可能已经注意到,只要存在文本匹配,结果就包括各种资源。Kind Fileter有助于将结果减少到特定Kind的对象,例如Cluster Role、Configmap,甚至合成对象Kind,例如应用程序、初始化容器等。

    下面我们正在搜索所有与“redis”相关的Config Maps。

    可以在不提供搜索词的情况下使用Kind Filter。例如,我们可以搜索所有以 Init Containers 开头的应用程序。

    Label Filter——标签过滤器

    标签过滤器是不言自明的。它可以像kubectl一样过滤配置。但与kube control不同,标签过滤器带有标签自动完成功能(是的,部分和使用近似字符串匹配!)。

    同时也重视自动补全。请注意,标签值自动完成结果与提供的标签相关。

    就像在文本搜索结果中包含各种条目一样。

    您可以使用其他标签过滤器、种类过滤器或搜索词进一步缩小范围。下面我们搜索具有
    addonmanager.kubernetes.io/mode=Reconcile”
    标签集的“heapster”相关工作负载。

    Annotation Filter——注释过滤器

    Annotation 过滤器的工作方式与 Label 过滤器完全相同,包括键和值自动完成功能,不同之处在于搜索是跨注释条目执行的。注释过滤器可以与其他过滤器结合使用。

    在下面的示例中,我们正在寻找具有
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol=http”
    注释集的资源。

    Warning and Error Filters——警告和错误过滤器

    Kubevious 识别错误配置、冲突和违反最佳实践的行为,并用警告和错误标记资源。Kubevious 还配备了规则引擎,它允许编写自定义规则以在资源上引发自定义错误和警告。

    Kubevious Search 还允许将结果过滤到有(或没有)错误和/或警告的资源。

    单击搜索结果将导航到集群浏览器,在那里可以进一步检查错误的其他详细信息。

    就像其他过滤器一样,警告和错误过滤器可以与文本条件和其他条件结合使用。

    Markers Filter——标记过滤器

    标记过滤器可能是查找需要注意的 YAML 的最强大方法。在进入按标记过滤之前,我们应该退后一步,快速介绍一下“标记”。使用规则引擎,用户可以编写自己的自定义脚本来关联用户定义的图标(标记)。

    在下面的示例规则中,如果相应地关联了
    ingress-network-policy-not-defined”
    ,我们会检查是否为应用程序定义了任何网络策略。

    这些标记在集群浏览器中可见。它本身是一个完全独立的主题,因此您可以在此处(
    https://github.com/kubevious/kubevious/blob/master/docs/rules-engine.md)了解有关规则引擎的更多信息(https://github.com/kubevious/kubevious/blob/master/docs/rules-engine.md)。

    回到标记过滤器。搜索引擎还允许按标记进行额外过滤。在下面的示例中,我们正在寻找没有应用任何网络策略(标记过滤器)的 redis(标签过滤器)应用程序(种类过滤器)。可以选择多个标记过滤器。

    最后的想法

    这一类搜索功能在kubectl或其他工具中不可用的。但这对于在 Kubernetes 上成功部署和管理应用程序至关重要。Kubevious 有助于快速识别需要紧急关注的资源。当应用程序健康状况下降时,这非常重要,尤其是在用户需要跨多个集群执行搜索和救援的时候。

    * 原文:
    https://kubevious.io/blog/post/kubernetes-multi-cluster-search-and-rescue

    * 本文部分图片来源于网络,如有侵权请联系删除

    «
    »
以专业成就每一位客户,让企业IT只为效果和安全买单

以专业成就每一位客户,让企业IT只为效果和安全买单