共计 3631 个字符,预计需要花费 10 分钟才能阅读完成。
KubeSphere 社区开源负载均衡器 Porter 进入 CNCF 云原生全景图注释:
近日,KubeSphere 社区子项目面向物理机环境中的负载均衡器 Porter(https:porterlb.io)正式进入 CNCF Landscape。CNCF Landscape 在云原生实际过程中的每个环节帮忙用户理解有哪些具体的软件和产品抉择,Porter 进入 CNCF Landscape,意味着 Porter 正式成为了 CNCF 认可的构建云原生最佳实际中的一环。
云原生计算基金会(CNCF ,Cloud Native Computing Foundation)致力于云原生技术的遍及和可继续倒退。在每年的 CNCF 年度报告中都会提及 CNCF Landscape,CNCF Landscape 是 CNCF 中的一个重要我的项目,帮忙企业和开发人员疾速理解云原生体系的全貌,同时,也受到宽广开发者和使用者对该项目标关注和器重。CNCF Landscape 用意从云原生的层次结构,以及不同的性能组成上,让用户理解云原生体系的全貌,并帮忙用户在不同组件档次去抉择失当的软件和工具进行反对(https:landscape.cncf.io)。
.png)
CNCF Landscape 全景图
新晋 CNCF Landscape 的 Porter,解决什么问题?
在 Kubernetes 集群中能够应用 Load Balancer 类型的服务将后端工作负载裸露在内部。云厂商通常为 Kubernetes 提供云上的 Load Balancer 插件,但这须要将集群部署在特定 IaaS 平台上。
然而,许多企业用户通常都将 Kubernetes 集群部署在物理机上,尤其是用于生产环境或数据敏感的环境。而且对于本地物理机集群,Kubernetes 不提供 LoadBalancer 的解决方案。
Porter 是 KubeSphere 社区开源的专为物理机 Kubernetes 集群裸露服务而设计的开源的负载均衡器,为用户提供在物理环境裸露服务和在云上裸露服务一致性体验的插件。
Porter 次要个性
面向物理机环境的 Kubernetes 开源负载均衡器 Porter 次要个性有:
- 基于路由器 ECMP 的负载平衡
- 基于 Layer 2 的负载平衡
- 基于 BGP 路由动静配置
- 反对 VIP 治理
- 反对在 Kubernetes Service 中指定 LoadBalancerIP(v0.3.0)
- 反对通过 Helm Chart 装置(v0.3.0)
- 反对通过 CRD 动静配置 BGP 服务端(v0.3.0)
- 反对通过 CRD 动静配置 BGP 对等体(v0.3.0)
与 MetalLB 的区别长处- 对 Kubernetes 用户敌对。基于 CRD-Controller 模式,应用 kubectl 管制 Porter 的所有
- 配置文件动静更新,无需重启,自动更新 BGP 配置。依据网络环境灵便配置 BGP,动静启用各种 BGP 个性
- 更敌对的解决与 Calico 的抵触,提供 Passive 模式和端口转发模式
毛病- 无奈跨平台,仅反对 Linux
Kubernetes 服务
在 Kubernetes 集群中,网络是十分重要的基础设施。对于大规模的节点和容器来说,要保障网络的连通性、网络转发的高效,同时能做的 IP 和 Port 自动化调配和治理,并提供给用户十分直观和简略的形式来拜访须要的利用,这是非常复杂且粗疏的设计。
Kubernetes 自身在这方面下了很大的功夫,它通过 CNI、Service、DNS、Ingress 等一系列概念,解决了服务发现、负载平衡的问题,也大大简化了用户的应用和配置。其中的 Service 是 Kubernetes 微服务的根底,Kubernetes 是通过 kube-proxy 这个组件来实现服务的。kube-proxy 运行在每个节点上,监听 API Server 中服务对象的变动,通过治理 iptables 来实现网络的转发。用户能够创立多种形式的 Service,比方基于 Label Selector、Headless 或者 ExternalName 的 Service,kube-proxy 会为 Service 创立一个虚构的 IP(即 Cluster IP),用于集群外部拜访服务。
裸露服务的三种形式
如果须要从集群内部拜访服务,行将服务裸露给用户应用,Kubernetes Service 自身提供了两种形式,一种是 NodePort,另外一种是 LoadBalancer。另外 Ingress 也是一种罕用的裸露服务的形式。
NodePort
如果将服务的类型设置为 NodePort,kube-proxy 就会为这个服务申请一个 30000 以上的端口号(默认状况下),而后在集群所有主机上配置 IPtables 规定,这样用户就能通过集群中的任意节点加上这个调配的端口号拜访服务了,如下图
.png)
NodePort 是最不便的裸露服务的形式,毛病也很显著:
- 基于 SNAT 进行拜访,Pod 无奈看到真正的 IP。
- NodePort 是将集群中的一个主机作为跳板拜访后端服务,所有的流量都会通过跳板机,很容易造成性能瓶颈和单点故障,难以用于生产环境。
- NodePort 端口号个别都是用大端口,不容易记忆。
NodePort 设计之初就不是用于生产环境裸露服务的形式,所以默认端口都是一些大端口。
LoadBalancer
LoadBalancer 是 Kubernetes 提倡的将服务裸露给内部的一种形式。然而这种形式须要借助于云厂商提供的负载均衡器能力实现,这也要求了 Kubernetes 集群必须在云厂商上部署。在物理机部署的 Kubernetes 环境则须要 Porter 来解决服务裸露的问题。
LoadBalancer 的原理如下:
.png)
LoadBalancer 通过云厂商的 LB 插件实现,LB 插件基于 Kubernetes.iocloud-provider 这个包实现,这个包会主动抉择适合的后端裸露给 LB 插件,而后 LB 插件由此创立对应的负载均衡器,网络流量在云服务端就会被分流,就可能防止 NodePort 形式的单点故障和性能瓶颈。LoadBalancer 是 Kubernetes 设计的对外裸露服务的举荐形式,然而这种形式仅仅限于云厂商提供的 Kubernetes 服务上,对于物理部署或者非云环境下部署的 Kubernetes 集群,这一机制就存在局限性而无奈应用。
Ingress
Ingress 并不是 Kubernetes 服务自身提供的裸露形式,而是借助于软件实现的同时裸露多个服务的一种相似路由器的插件。Ingress 通过域名来辨别不同服务,并且通过 annotation 的形式管制服务对外裸露的形式。其原理如下图:
.png)
KubeSphere 开源实际
作为云原生畛域的生态平台,KubeSphere 保持齐全开源和凋谢的迭代思路,联合国内、国内企业与开源社区,独特打造了以 KubeSphere 容器平台为外围的开源我的项目。
除了将 Porter 奉献到 CNCF 云原生全景图之外,KubeSphere 还开源了 OpenPitrix 多云利用治理、KubeKey 装置向导包、Kube-events、Fluent-bit Operator、Notification Manager、CSI 插件等 80 余个开源我的项目。
疾速部署和体验 Porter齐全开源Porter 的所有代码和文档已在 Github 开源,欢送大家关注 (Star) 和奉献:https:github.comkubesphereporter
疾速部署Porter 目前已在如下三种环境下进行过部署和测试,并将部署测试与应用步骤的具体文档记录在 GitHub,能够通过以下链接查看和部署实际:
- 应用 Helm Chart 在 Kubernetes 部署 Porter:https:github.comkubesphereporterblobmasterdoczhporter-chart.md
- 在物理机部署的 Kubernetes 部署 Porter:https:github.comkubesphereporterblobmasterdoczhdeploy_baremetal.md
- 在云平台用模仿路由器的形式测试:https:github.comkubesphereporterblobmasterdoczhsimulate_with_bird.md
最新动静
Porter 将在本月中旬公布新版本 v0.3.0,新版本由 青云 QingCloud、原本生存和北京吉恒科技 三家公司联合开发,由社区定义与奉献,新版本的次要性能已在文中 Porter 介绍中标注,欢送大家装置体验!
延长浏览- Porter- 面向物理机环境的 Kubernetes 开源负载均衡器:https:kubesphere.com.cnconferencesporter
- Porter 如何帮忙原本生存在 K8s 物理环境裸露集群服务:https:mp.weixin.qq.comsUs6DZbf_GhRT69-dL1GD4g
- Porter 官网:https:porterlb.io
更多内容能够拜访 www.qingcloud.com
CNCF Landscape 全景图
- 对 Kubernetes 用户敌对。基于 CRD-Controller 模式,应用 kubectl 管制 Porter 的所有
- 配置文件动静更新,无需重启,自动更新 BGP 配置。依据网络环境灵便配置 BGP,动静启用各种 BGP 个性
- 更敌对的解决与 Calico 的抵触,提供 Passive 模式和端口转发模式
- 无奈跨平台,仅反对 Linux
- 基于 SNAT 进行拜访,Pod 无奈看到真正的 IP。
- NodePort 是将集群中的一个主机作为跳板拜访后端服务,所有的流量都会通过跳板机,很容易造成性能瓶颈和单点故障,难以用于生产环境。
- NodePort 端口号个别都是用大端口,不容易记忆。
- 应用 Helm Chart 在 Kubernetes 部署 Porter:https:github.comkubesphereporterblobmasterdoczhporter-chart.md
- 在物理机部署的 Kubernetes 部署 Porter:https:github.comkubesphereporterblobmasterdoczhdeploy_baremetal.md
- 在云平台用模仿路由器的形式测试:https:github.comkubesphereporterblobmasterdoczhsimulate_with_bird.md
- Porter- 面向物理机环境的 Kubernetes 开源负载均衡器:https:kubesphere.com.cnconferencesporter
- Porter 如何帮忙原本生存在 K8s 物理环境裸露集群服务:https:mp.weixin.qq.comsUs6DZbf_GhRT69-dL1GD4g
- Porter 官网:https:porterlb.io
更多内容能够拜访 www.qingcloud.com
最新动静
Porter 将在本月中旬公布新版本 v0.3.0,新版本由 青云 QingCloud、原本生存和北京吉恒科技 三家公司联合开发,由社区定义与奉献,新版本的次要性能已在文中 Porter 介绍中标注,欢送大家装置体验!
延长浏览
NodePort 设计之初就不是用于生产环境裸露服务的形式,所以默认端口都是一些大端口。
LoadBalancer
LoadBalancer 是 Kubernetes 提倡的将服务裸露给内部的一种形式。然而这种形式须要借助于云厂商提供的负载均衡器能力实现,这也要求了 Kubernetes 集群必须在云厂商上部署。在物理机部署的 Kubernetes 环境则须要 Porter 来解决服务裸露的问题。
LoadBalancer 的原理如下:
.png)
LoadBalancer 通过云厂商的 LB 插件实现,LB 插件基于 Kubernetes.iocloud-provider 这个包实现,这个包会主动抉择适合的后端裸露给 LB 插件,而后 LB 插件由此创立对应的负载均衡器,网络流量在云服务端就会被分流,就可能防止 NodePort 形式的单点故障和性能瓶颈。LoadBalancer 是 Kubernetes 设计的对外裸露服务的举荐形式,然而这种形式仅仅限于云厂商提供的 Kubernetes 服务上,对于物理部署或者非云环境下部署的 Kubernetes 集群,这一机制就存在局限性而无奈应用。
Ingress
Ingress 并不是 Kubernetes 服务自身提供的裸露形式,而是借助于软件实现的同时裸露多个服务的一种相似路由器的插件。Ingress 通过域名来辨别不同服务,并且通过 annotation 的形式管制服务对外裸露的形式。其原理如下图:
.png)
KubeSphere 开源实际
作为云原生畛域的生态平台,KubeSphere 保持齐全开源和凋谢的迭代思路,联合国内、国内企业与开源社区,独特打造了以 KubeSphere 容器平台为外围的开源我的项目。
除了将 Porter 奉献到 CNCF 云原生全景图之外,KubeSphere 还开源了 OpenPitrix 多云利用治理、KubeKey 装置向导包、Kube-events、Fluent-bit Operator、Notification Manager、CSI 插件等 80 余个开源我的项目。
疾速部署和体验 Porter
齐全开源
Porter 的所有代码和文档已在 Github 开源,欢送大家关注 (Star) 和奉献:https:github.comkubesphereporter
疾速部署
Porter 目前已在如下三种环境下进行过部署和测试,并将部署测试与应用步骤的具体文档记录在 GitHub,能够通过以下链接查看和部署实际:
Kubernetes 服务
在 Kubernetes 集群中,网络是十分重要的基础设施。对于大规模的节点和容器来说,要保障网络的连通性、网络转发的高效,同时能做的 IP 和 Port 自动化调配和治理,并提供给用户十分直观和简略的形式来拜访须要的利用,这是非常复杂且粗疏的设计。
Kubernetes 自身在这方面下了很大的功夫,它通过 CNI、Service、DNS、Ingress 等一系列概念,解决了服务发现、负载平衡的问题,也大大简化了用户的应用和配置。其中的 Service 是 Kubernetes 微服务的根底,Kubernetes 是通过 kube-proxy 这个组件来实现服务的。kube-proxy 运行在每个节点上,监听 API Server 中服务对象的变动,通过治理 iptables 来实现网络的转发。用户能够创立多种形式的 Service,比方基于 Label Selector、Headless 或者 ExternalName 的 Service,kube-proxy 会为 Service 创立一个虚构的 IP(即 Cluster IP),用于集群外部拜访服务。
裸露服务的三种形式
如果须要从集群内部拜访服务,行将服务裸露给用户应用,Kubernetes Service 自身提供了两种形式,一种是 NodePort,另外一种是 LoadBalancer。另外 Ingress 也是一种罕用的裸露服务的形式。
NodePort
如果将服务的类型设置为 NodePort,kube-proxy 就会为这个服务申请一个 30000 以上的端口号(默认状况下),而后在集群所有主机上配置 IPtables 规定,这样用户就能通过集群中的任意节点加上这个调配的端口号拜访服务了,如下图
.png)
NodePort 是最不便的裸露服务的形式,毛病也很显著:
毛病