English | 中文
Porter
是一款适用于物理机部署 Kubernetes 的负载均衡器,该负载均衡器使用物理交换机实现,利用 BGP 和 ECMP 从而达到性能最优和高可用性。我们知道在云上部署的 Kubernetes 环境下,通常云服务厂商会提供 cloud LB 插件暴露 Kubernetes 服务到外网,但在物理机部署环境下由于没有云环境,服务暴露给外网非常不方便,Porter 是一个提供用户在物理环境暴露服务和在云上暴露服务一致性体验的插件。该插件提供两大功能模块:
Porter 是 KubeSphere 的一个子项目。
下图是物理部署架构图,假设有一个服务部署在 node1 (192.168.0.2) 和 node2 (192.168.0.6) 上,需要通过公网 IP 1.1.1.1 访问该服务,服务部署人员按照示例部署该服务后,Porter 会自动同步路由信息到 leaf 交换机,进而同步到 spine,border 交换机,互联网用户就可以通过 EIP 1.1.1.1 直接访问该服务了。
插件通过一个Manager
监控集群中的Service的变化,广播相关路由。同时集群中所有节点都部署有一个Agent,每当有一个EIP被使用时,就会在主机上添加一条主机路由规则,将发往这个EIP的IP报文引流到本地。
该插件以服务的形式部署在 Kubernetes 集群中时,会与集群的边界路由器(三层交换机)建立 BGP 连接。每当集群中创建了带有特定注记(一个 annotation 为 lb.kubesphere.io/v1apha1: porter,见示例)的服务时,就会为该服务动态分配 EIP (用户也可以自己指定 EIP),LB controller 创建路由,并通过 BGP 将路由传导到公网(私网)中,使得外部能够访问这个服务。
Porter LB controller 是基于 Kubernetes controller runtime 实现的 custom controller,通过 watch service 的变化自动变更路由信息。
docker login
git clone https://github.com/kubesphere/porter.git
, 进入代码目录config/bgp/
下)config/manager
下)hack/test.sh
中的BirdIP,然后运行make e2e-test
进行e2e测试make release
,最终的 yaml 文件在 deploy
目录下kubectl apply -f deploy/release.yaml
部署插件Porter is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )