Porter 进入 CNCF 云原生全景图,新版本即将发布!
近日,KubeSphere 社區(qū)子項(xiàng)目面向物理機(jī)環(huán)境的負(fù)載均衡器 Porter 正式進(jìn)入 CNCF Landscape。CNCF Landscape 在云原生實(shí)踐過程中的每個環(huán)節(jié)幫助用戶了解有哪些具體的軟件和產(chǎn)品選擇,Porter 進(jìn)入 CNCF Landscape,意味著 Porter 正式成為了 CNCF 認(rèn)可的構(gòu)建云原生最佳實(shí)踐中的一環(huán)。
云原生計算基金會(CNCF, Cloud Native Computing Foundation)致力于云原生技術(shù)的普及和可持續(xù)發(fā)展。在每年的 CNCF 年度報告中都會提及 CNCF Landscape,CNCF Landscape 是 CNCF 中的一個重要項(xiàng)目,幫助企業(yè)和開發(fā)人員快速了解云原生體系的全貌,同時,也受到廣大開發(fā)者和使用者對該項(xiàng)目的關(guān)注和重視。CNCF Landscape 意圖從云原生的層次結(jié)構(gòu),以及不同的功能組成上,讓用戶了解云原生體系的全貌,并幫助用戶在不同組件層次去選擇恰當(dāng)?shù)能浖凸ぞ哌M(jìn)行支持。
新晉 CNCF Landscape 的 Porter,解決什么問題?
在 Kubernetes 集群中可以使用 “LoadBalancer” 類型的服務(wù)將后端工作負(fù)載暴露在外部。云廠商通常為 Kubernetes 提供云上的 LoadBalancer 插件,但這需要將集群部署在特定 IaaS 平臺上。然而,許多企業(yè)用戶通常都將 Kubernetes 集群部署在物理機(jī)上,尤其是用于生產(chǎn)環(huán)境或數(shù)據(jù)敏感的環(huán)境。而且對于本地物理機(jī)集群,Kubernetes 不提供 LoadBalancer 的解決方案。Porter 是 KubeSphere 社區(qū)開源的專為物理機(jī) Kubernetes 集群暴露服務(wù)而設(shè)計的開源的負(fù)載均衡器,為用戶提供在物理環(huán)境暴露服務(wù)和在云上暴露服務(wù)一致性體驗(yàn)的插件。
Porter 主要特性
面向物理機(jī)環(huán)境的 Kubernetes 開源負(fù)載均衡器 Porter 主要特性有:
基于路由器 ECMP 的負(fù)載均衡
基于 Layer 2 的負(fù)載均衡
基于 BGP 路由動態(tài)配置
支持 VIP 管理
支持在 Kubernetes Service 中指定 LoadBalancerIP (v0.3.0)
支持通過 Helm Chart 安裝(v0.3.0)
支持通過 CRD 動態(tài)配置 BGP 服務(wù)端(v0.3.0)
支持通過 CRD 動態(tài)配置 BGP 對等體(v0.3.0)
與 MetalLB 的區(qū)別
優(yōu)點(diǎn)
對 Kubernetes 用戶友好。基于 CRD-Controller 模式,使用 kubectl 控制 Porter 的一切
配置文件動態(tài)更新,無需重啟,自動更新 BGP 配置。根據(jù)網(wǎng)絡(luò)環(huán)境靈活配置 BGP,動態(tài)啟用各種 BGP 特性
更友好地處理與 Calico 的沖突,提供 Passive 模式和端口轉(zhuǎn)發(fā)模式
缺點(diǎn)
無法跨平臺,目前僅支持 Linux
Kubernetes 服務(wù)
在 Kubernetes 集群中,網(wǎng)絡(luò)是非常重要的基礎(chǔ)設(shè)施。對于大規(guī)模的節(jié)點(diǎn)和容器來說,要保證網(wǎng)絡(luò)的連通性、網(wǎng)絡(luò)轉(zhuǎn)發(fā)的高效,同時能做的 IP 和 Port 自動化分配和管理,并提供給用戶非常直觀和簡單的方式來訪問需要的應(yīng)用,這是非常復(fù)雜且細(xì)致的設(shè)計。
Kubernetes 本身在這方面下了很大的功夫,它通過 CNI、Service、DNS、Ingress 等一系列概念,解決了服務(wù)發(fā)現(xiàn)、負(fù)載均衡的問題,也大大簡化了用戶的使用和配置。其中的 Service 是 Kubernetes 微服務(wù)的基礎(chǔ),Kubernetes 是通過 kube-proxy 這個組件來實(shí)現(xiàn)服務(wù)的。kube-proxy 運(yùn)行在每個節(jié)點(diǎn)上,監(jiān)聽 API Server 中服務(wù)對象的變化,通過管理 iptables 來實(shí)現(xiàn)網(wǎng)絡(luò)的轉(zhuǎn)發(fā)。用戶可以創(chuàng)建多種形式的 Service,比如基于 Label Selector 、Headless 或者 ExternalName 的 Service,kube-proxy 會為 Service 創(chuàng)建一個虛擬的 IP(即 Cluster IP),用于集群內(nèi)部訪問服務(wù)。
暴露服務(wù)的三種方式
如果需要從集群外部訪問服務(wù),即將服務(wù)暴露給用戶使用,Kubernetes Service 本身提供了兩種方式,一種是 NodePort,另外一種是 LoadBalancer。另外 Ingress 也是一種常用的暴露服務(wù)的方式。
NodePort
如果將服務(wù)的類型設(shè)置為 NodePort,kube-proxy 就會為這個服務(wù)申請一個 30000 以上的端口號(默認(rèn)情況下),然后在集群所有主機(jī)上配置 IPtables 規(guī)則,這樣用戶就能通過集群中的任意節(jié)點(diǎn)加上這個分配的端口號訪問服務(wù)了,如下圖
NodePort 是最方便的暴露服務(wù)的方式,缺點(diǎn)也很明顯:
基于 SNAT 進(jìn)行訪問,Pod 無法看到真正的 IP。
NodePort 是將集群中的一個主機(jī)作為跳板訪問后端服務(wù),所有的流量都會經(jīng)過跳板機(jī),很容易造成性能瓶頸和單點(diǎn)故障,難以用于生產(chǎn)環(huán)境。
NodePort 端口號一般都是用大端口,不容易記憶。
NodePort 設(shè)計之初就不是用于生產(chǎn)環(huán)境暴露服務(wù)的方式,所以默認(rèn)端口都是一些大端口。
LoadBalancer
LoadBalancer 是 Kubernetes 提倡的將服務(wù)暴露給外部的一種方式。但是這種方式需要借助于云廠商提供的負(fù)載均衡器才能實(shí)現(xiàn),這也要求了 Kubernetes 集群必須在云廠商上部署。在物理機(jī)部署的 Kubernetes 環(huán)境則需要 Porter 來解決服務(wù)暴露的問題。
LoadBalancer 的原理如下:
LoadBalancer 通過云廠商的 LB 插件實(shí)現(xiàn),LB 插件基于 Kubernetes.io/cloud-provider 這個包實(shí)現(xiàn),這個包會自動選擇合適的后端暴露給 LB 插件,然后 LB 插件由此創(chuàng)建對應(yīng)的負(fù)載均衡器,網(wǎng)絡(luò)流量在云服務(wù)端就會被分流,就能夠避免 NodePort 方式的單點(diǎn)故障和性能瓶頸。LoadBalancer 是 Kubernetes 設(shè)計的對外暴露服務(wù)的推薦方式,但是這種方式僅僅限于云廠商提供的 Kubernetes 服務(wù)上,對于物理部署或者非云環(huán)境下部署的 Kubernetes 集群,這一機(jī)制就存在局限性而無法使用。
Ingress
Ingress 并不是 Kubernetes 服務(wù)本身提供的暴露方式,而是借助于軟件實(shí)現(xiàn)的同時暴露多個服務(wù)的一種類似路由器的插件。Ingress 通過域名來區(qū)分不同服務(wù),并且通過 annotation 的方式控制服務(wù)對外暴露的方式。其原理如下圖:
快速部署和體驗(yàn) Porter
完全開源
Porter 的所有代碼和文檔已在 Github 開源,歡迎大家關(guān)注 (Star) 和貢獻(xiàn):https://github.com/kubesphere/porter
快速部署
Porter 目前已在如下三種環(huán)境下進(jìn)行過部署和測試,并將部署測試與使用步驟的詳細(xì)文檔記錄在 GitHub,可以通過以下鏈接查看和部署實(shí)踐:
使用 Helm Chart 在 Kubernetes 部署 Porter:https://github.com/kubesphere/porter/blob/master/doc/zh/porter-chart.md
在物理機(jī)部署的 Kubernetes 部署 Porter:https://github.com/kubesphere/porter/blob/master/doc/zh/deploy_baremetal.md
在云平臺用模擬路由器的方式測試:https://github.com/kubesphere/porter/blob/master/doc/zh/simulate_with_bird.md
最新動態(tài)
Porter 將在本月中旬發(fā)布新版本 v0.3.0,新版本由青云QingCloud、本來生活和北京吉恒科技三家公司聯(lián)合開發(fā),由社區(qū)定義與貢獻(xiàn),非常感謝非青云的社區(qū)貢獻(xiàn)者 @k0ngk0ng 和 @chinazj。新版本的主要功能已在文中 Porter 介紹中標(biāo)注,歡迎大家安裝體驗(yàn)!
延伸閱讀
Porter-面向物理機(jī)環(huán)境的 Kubernetes 開源負(fù)載均衡器:https://kubesphere.com.cn/conferences/porter/
Porter 如何幫助本來生活在 K8s 物理環(huán)境暴露集群服務(wù):https://mp.weixin.qq.com/s/Us6DZbf_GhRT69-dL1GD4g
Porter 官網(wǎng):https://porterlb.io/
關(guān)于 KubeSphere
KubeSphere 是在 Kubernetes 之上構(gòu)建的以應(yīng)用為中心的開源容器平臺,提供全棧的 IT 自動化運(yùn)維的能力,簡化企業(yè)的 DevOps 工作流。
KubeSphere 已被 Aqara 智能家居、本來生活、新浪、安暢網(wǎng)絡(luò)、華夏銀行、極視角、云智匯、微眾銀行、VNG Corporation、Radore 等海內(nèi)外數(shù)千家企業(yè)采用。KubeSphere 提供了運(yùn)維友好的向?qū)讲僮鹘缑婧拓S富的企業(yè)級功能,包括 Kubernetes 資源管理、DevOps (CI/CD)、應(yīng)用生命周期管理、微服務(wù)治理 (Service Mesh)、多租戶管理、監(jiān)控日志、告警通知、存儲與網(wǎng)絡(luò)管理、GPU support 等功能,幫助企業(yè)快速構(gòu)建一個強(qiáng)大和功能豐富的容器云平臺。
KubeSphere 官網(wǎng):https://kubesphere.io/
KubeSphere GitHub:https://github.com/kubesphere/kubesphere
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!
總結(jié)
以上是生活随笔為你收集整理的Porter 进入 CNCF 云原生全景图,新版本即将发布!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 踩iviewui中Tabs 标签页数据绑
- 下一篇: set集合