
Meshery 部署设计解析使用 loxilb 云原生负载均衡器为 Kubernetes 提供高性能负载均衡【免费下载链接】mesheryMeshery, the cloud native manager项目地址: https://gitcode.com/GitHub_Trending/me/meshery本篇文章围绕 Meshery Catalog 中发布的loxilb-0.1.0.tgz部署设计deployment 类型展开讲解如何借助 Meshery 的可视化建模与mesheryctl命令行将 LoxiLB 这一面向 Kubernetes 与容器环境的高性能云原生负载均衡器一键部署到集群。读完本文你将掌握该设计内 RBAC、Service、DaemonSet 与 Deployment 等全部组件的作用、关键配置参数的含义以及导入、部署与后续校验的完整实战路径。LoxiLB 是什么面向 Kubernetes 的云原生负载均衡器LoxiLB 是一款面向 Kubernetes 和容器化环境设计的高性能云原生负载均衡器本仓库中的 Catalog 条目在patternInfo字段中给出了其官方定位描述。它通过旁路out-of-path数据路径与内核级优化为集群提供高吞吐的四层负载均衡能力常被用于替代或补充基于用户态代理的负载均衡方案。与一般的 Service 类型负载均衡方案不同LoxiLB 采用 eBPF/XDP 与 DPDK 等内核加速技术实现报文处理其数据平面既可以运行在控制平面节点以 BGP 方式对外发布服务地址也可以以 peer 模式运行在工作节点上。本文所分析的 Meshery 设计正是围绕这一“主从lb peer协作”架构展开的。该 Catalog 条目的基本信息来自 catalog 元数据文档字段值nameloxilb-0.1.0.tgztypedeploymentpublishedVersion0.0.1compatibilityloxilbpatternId4fb7a134-d048-4db4-a556-c1e2c834c995createdAt2025-10-08T17:10:53Z这条 Catalog 条目的原始清单manifest位于 design.yml配套的发布元数据位于 artifacthub-pkg.yml。如果你需要创建类似的 Catalog 条目可以参考 Catalog 模板 了解字段约定。设计整体结构一套完整的 Kubernetes 部署拓扑Meshery 设计Design是 Meshery 对基础设施进行可视化建模的载体它将一个完整的部署拆解为若干组件Components及其关系Relationships。该设计的 schemaVersion 为designs.meshery.io/v1beta1共包含 8 个 Kubernetes 组件全部归属于kubernetes模型版本 v1.32.0-alpha.3覆盖了 LoxiLB 控制面与数据面的全部所需资源组件类型名称命名空间作用ServiceAccountkube-loxilbkube-system为控制面组件提供运行身份ClusterRolekube-loxilb集群级授予 watch/list/patch 等集群资源权限ClusterRoleBindingkube-loxilb集群级将 ServiceAccount 绑定到 ClusterRoleServiceloxilb-lb-servicekube-system暴露 lb 模式的对外端口11111/179Serviceloxilb-peer-servicekube-system暴露 peer 模式的对外端口11111/179DaemonSetloxilb-lbkube-system在控制平面节点运行主负载均衡实例DaemonSetloxilb-peerkube-system在工作节点运行 peer 实例Deploymentkube-loxilbkube-system运行 kube-loxilb 控制器负责与 Kubernetes API 交互从源码结构看这些组件遵循典型的“控制器 数据平面”分离架构kube-loxilbDeployment 充当控制平面监听 Kubernetes Service/Endpoints 变化并下发配置loxilb-lb与loxilb-peer两个 DaemonSet 则承载实际的数据平面。RBAC 设计LoxiLB 控制面需要的最小权限集设计的第一组组件是访问控制相关资源它们共同定义了 kube-loxilb 控制器读取集群状态所需的权限。Catalog 条目的 Caveats 中特别强调“需要合适的 Kubernetes 权限ClusterRole/ServiceAccount才能完成配置”因此这组 RBAC 资源是整个设计能否正常运行的前提。ServiceAccountkube-loxilb被创建于kube-system命名空间ClusterRoleBinding 将其与同名 ClusterRole 绑定。ClusterRolekube-loxilb的规则如下与 design.yml 中 ClusterRole 组件配置完全一致API 组资源操作corenodesget, watch, list, patchcorepodsget, watch, list, patchcoreendpoints, services, services/statusget, watch, list, patch, updatediscovery.k8s.ioendpointslicesget, watch, listauthentication.k8s.iotokenreviewscreateauthorization.k8s.iosubjectaccessreviewscreate这些权限的用途可以结合 LoxiLB 的控制器行为理解services / endpoints / endpointslices的读取权限用于发现 LoadBalancer 类型 Service 与后端 Pod 端点这是负载均衡器控制面的核心数据来源nodes / pods的读取与 patch 权限用于感知节点拓扑、为 DaemonSet 调度与 BGP 对端发现提供依据tokenreviews / subjectaccessreviews的 create 权限通常用于 webhook 式的身份校验场景是控制器在安全上下文中验证请求身份所需。该设计以patch、update等写权限替代了*通配权限从权限模型上体现了最小化授权原则。Service 资源对外暴露负载均衡服务端口设计创建了两个clusterIP: None的无头服务分别对应主负载均衡实例与 peer 实例loxilb-lb-serviceselectorapploxilb-app端口名端口协议targetPortloxilb-app11111TCP11111loxilb-app-bgp179TCP179loxilb-peer-serviceselectorapploxilb-peer-app端口名端口协议targetPortloxilb-peer-app11111TCP11111loxilb-peer-bgp179TCP179两个服务均使用clusterIP: None即无头服务Headless Service。这种模式下 Service 不分配集群内虚拟 IP而是直接暴露各 Pod 的端点地址非常契合 LoxiLB 使用 hostNetwork 直接占用节点网络的部署方式——集群内外的客户端与 BGP 对端可以直接通过节点 IP 访问 179BGP与 11111LoxiLB 管理/数据端口端口。数据平面DaemonSet 双角色架构数据平面由两个 DaemonSet 组成它们加载相同的容器镜像ghcr.io/loxilb-io/loxilb:latest但通过不同的启动参数与调度约束承担不同角色。loxilb-lb控制平面节点上的主实例loxilb-lbDaemonSet 通过节点亲和性nodeAffinity限定在控制平面节点node-role.kubernetes.io/control-plane标签存在上运行其关键配置如下hostNetwork: true直接使用宿主机网络栈保证负载均衡报文路径不被 CNI 网络二次转发dnsPolicy: ClusterFirstWithHostNet在使用宿主机网络的同时保留集群 DNS 解析能力privileged SYS_ADMIN capability特权容器以获取创建 Veth、配置路由等所需的底层网络能力启动命令/root/loxilb-io/loxilb/loxilb --bgp --egr-hooks --blacklistcni[0-9a-z]|veth.|flannel.|eni.启动参数的含义如下参数作用--bgp启用 BGP 能力使 LoxiLB 能够将 LoadBalancer 服务地址通过 BGP 通告给上游路由器实现外部流量接入--egr-hooks启用出口egress钩子用于对出方向流量施加策略--blacklistcni[0-9a-z]\|veth.\|flannel.\|eni.将 CNI 生成的虚拟网卡如 veth、flannel、eni 等前缀加入黑名单避免 LoxiLB 误接管非业务网卡loxilb-peer工作节点上的对等实例loxilb-peerDaemonSet 的节点亲和性条件与主实例相反node-role.kubernetes.io/control-plane标签不存在即调度到所有非控制平面节点。它以--peer参数启动与主实例通过 11111 端口建立对等会话负责在节点本地提供负载均衡数据路径。同样采用hostNetwork: true与特权容器配置两个端口11111、179保持开放。这种“控制平面节点跑 lb、工作节点跑 peer”的部署拓扑使流量能够在每个节点就近转发同时由控制平面节点统一对外发布服务地址。控制面kube-loxilb Deploymentkube-loxilb是设计的控制面组件一个apps/v1Deployment副本数为 1镜像为ghcr.io/loxilb-io/kube-loxilb:latest运行在kube-system命名空间并通过serviceAccountName: kube-loxilb使用前述 RBAC 身份。其容器启动参数是最值得关注的配置点args: - --externalCIDR123.123.123.1/24 - --setBGP64512 - --setRoles0.0.0.0参数值含义与调整建议--externalCIDR123.123.123.1/24分配给 LoadBalancer 服务的外部 IP 网段kube-loxilb 会从此网段中为 LoadBalancer 类型的 Service 分配外部地址。需按实际网络规划修改否则服务拿到的地址无法路由--setBGP64512本端 BGP AS 号自治系统号。若上游路由器/交换机与集群建立 BGP 对等需与对端协商一致--setRoles0.0.0.0BGP 对端peer地址0.0.0.0表示接受任意对端围绕这些参数的其他部署细节同样关键hostNetwork: true dnsPolicy: ClusterFirstWithHostNet控制器直接使用节点网络同时保留集群 DNS 解析securityContextprivileged: true并添加NET_ADMIN、NET_RAWcapabilities用于配置网络规则与原始套接字资源配额limits 与 requests 均为cpu: 100m、memory: 50Mi是一个相当精简的控制面进程调度容忍容忍所有NoSchedule/NoExecute污点与CriticalAddonsOnly并设置priorityClassName: system-node-critical确保作为关键插件在任何节点上都能被调度terminationGracePeriodSeconds: 0允许快速终止缩短滚动更新期间的停机窗口。这一组件承担的是“Kubernetes 事件 → LoxiLB 数据面配置”的翻译工作它 watch 集群中的 LoadBalancer Service 与 Endpoints将externalCIDR网段中的地址绑定到服务并通过 BGP 或对等通道把转发规则下发到 lb/peer 实例。通过 Meshery 使用该设计方式一使用 mesheryctl 命令行导入该 Catalog 条目的发布元数据artifacthub-pkg.yml中明确给出了安装命令mesheryctl design import -f该命令从指定的设计文件导入 Meshery 设计。可以将design.yml下载到本地后执行# 从仓库中获取设计清单文件 curl -O https://raw.githubusercontent.com/meshery/meshery.io/master/catalog/4fb7a134-d048-4db4-a556-c1e2c834c995/0.0.1/design.yml # 导入到当前连接的 Meshery 实例 mesheryctl design import -f design.yml导入成功后可通过mesheryctl查看已导入的设计列表确认loxilb-0.1.0.tgz已进入 Meshery 的设计库。方式二通过 Meshery UI 可视化部署Meshery 的 Catalog 页面直接展示了本设计对应 Catalog 条目文档 loxilb-0.1.0.tgz你也可以在 Meshery UI 中按以下步骤操作打开 Meshery UI进入Catalog页面搜索loxilb-0.1.0.tgz点击条目进入详情页阅读patternInfo设计说明与patternCaveats注意事项点击Deploy按钮将设计加载到可视化画布在画布中检查 8 个组件的配置尤其确认--externalCIDR是否匹配你的网络规划点击部署Meshery 会将各组件作为原生 Kubernetes 资源下发到已连接的集群。部署前的必要检查清单基于该设计的 Caveats 与组件配置部署前建议逐项确认集群权限当前 kubeconfig 对应的身份具备创建 ClusterRole/ClusterRoleBinding 的集群级权限Caveats 明确提示“需要合适的 Kubernetes 权限ClusterRole/ServiceAccount”外部网段--externalCIDR123.123.123.1/24为示例网段必须替换为可路由到你集群的外部 IP 段BGP 配置--setBGP64512需与网络侧设备协商若不用 BGP需评估主实例--bgp参数的去留节点角色loxilb-lb依赖控制平面节点存在node-role.kubernetes.io/control-plane标签loxilb-peer依赖其不存在请确认节点标签符合预期内核与硬件前提Caveats 明确指出“内核旁路kernel bypass与 DPDK 优化可能需要特定的硬件与内核模块”普通虚拟化环境可能无法获得完整的加速收益端口占用两个 DaemonSet 均使用 hostNetwork179BGP与 11111 端口会在节点上直接监听需确认未被其他进程占用。部署后的验证思路部署完成后可以通过以下方式验证负载均衡链路是否就绪检查组件状态kubectl -n kube-system get ds loxilb-lb loxilb-peer kubectl -n kube-system get deploy kube-loxilb kubectl -n kube-system get sa,clusterrole,clusterrolebinding | grep kube-loxilb查看控制器日志kubectl -n kube-system logs deploy/kube-loxilb确认其成功 watch 到集群资源、没有 RBAC 拒绝Forbidden报错创建测试 LoadBalancer Service新建一个type: LoadBalancer的 Service观察 kube-loxilb 是否为其分配externalCIDR网段内的外部 IP并通过 BGP 或直连方式访问验证转发网络连通性由于clusterIP: None可从节点侧直接验证 11111/179 端口的可达性再通过 LB 地址访问后端应用验证完整数据路径。如果出现 RBAC 报错优先检查 ClusterRole 规则与设计中的规则表是否一致如果 LB 地址无法路由则优先检查--externalCIDR与实际网络规划的匹配情况。小结loxilb-0.1.0.tgz这个 Meshery Catalog 部署设计完整呈现了 LoxiLB 在 Kubernetes 上的推荐部署拓扑kube-loxilb控制器负责集群事件感知与地址分配loxilb-lb主实例在控制平面节点上以 hostNetwork BGP 方式对外发布服务loxilb-peer实例在工作节点上提供就近数据路径RBAC 与无头 Service 则串联起整个系统的安全与暴露模型。通过 Meshery 的导入与可视化部署能力你可以把这套拓扑从一份 JSON 设计清单快速落地为真实集群资源再结合本文的参数说明完成网络侧适配。该设计的完整清单与发布元数据分别位于 design.yml 与 artifacthub-pkg.yml可随时对照查阅。【免费下载链接】mesheryMeshery, the cloud native manager项目地址: https://gitcode.com/GitHub_Trending/me/meshery创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考