本發明專利技術提供了一種實現集群的服務拓撲感知的方法、裝置、設備及介質,方法包括:為集群中的每個節點添加預設標簽;在集群中創建監聽服務的程序并在集群中創建ebpf程序的Map;響應于監聽服務的程序監聽到集群服務發生變化,獲取服務的詳細信息并根據服務的拓撲感知規則篩選后端容器,并將容器存儲到Map中;將ebpf程序掛載到集群內節點內核的預設位置,在訪問集群的數據包進入內核網絡協議棧前通過查詢Map選擇服務對應的后端容器。通過使用本發明專利技術的方案,能夠在數據包進入內核協議棧之前通過讀取Map完成服務對應的后端容器的選擇,提高了網絡轉發效率。了網絡轉發效率。了網絡轉發效率。
【技術實現步驟摘要】
一種實現集群的服務拓撲感知的方法、裝置、設備及介質
[0001]本專利技術涉及計算機領域,并且更具體地涉及一種實現集群的服務拓撲感知的方法、裝置、設備及可讀介質。
技術介紹
[0002]當前容器云平臺大部分基于kubernetes(容器云平臺使用量最多的開源容器編排架構,能夠實現容器的自動調度、擴展、故障恢復等)框架,面向用戶提供以應用管理為核心的功能體系。通過k8s為某一具體業務創建一組Pod(kubernetes調度的最小管理單元,由1個或多個容器組成,這些容器共享進程、網絡等命名空間),并通過service提供對外服務。Service(服務,k8s中的一種資源,通過service可以訪問一組特定的Pod,并且提供了負載均衡功能)負載均衡主要是通過節點上的kube
?
proxy進程從API Server獲取service對應的Pod,再通過iptables(Linux操作系統內核中的信息包過濾系統,可以根據特定的匹配條件實現數據包的接收、轉發、刪除等操作)或ipvs(運行于Linux內核網絡協議棧的第四層,提供負載均衡能力)規則來實現。當客戶端通過service訪問具體業務時,訪問流量有可能被路由至service對應的任一后端pod,因此雖然 service 轉發做了負載均衡,但如果轉發到的Pod距離比較遠,流量轉發過去網絡時延就相對比較高,相應的就會影響網絡性能,在某些情況下甚至還可能會付出額外的流量費用,所以需要一種方案能實現 service 就近轉發,即根據訪問發起點的位置確定負載均衡后的Pod,此方法被稱為service topology(服務拓撲感知)。在原生k8s的service中,可以通過指定topologyKeys標簽實現拓撲感知。當創建含有topologyKeys標簽的service時,kube
?
proxy會根據篩選條件選出一部分符合當前拓撲域的Pod生成iptables或ipvs規則,將后端設置為符合topologykey標簽要求的k8s節點上的pod,從而實現就近訪問。但是iptables或ipvs規則要經過冗長的linux操作系統內核網絡協議棧,其效率相對較低,會造成一定的網絡延遲,無法全部滿足高帶寬、低延遲的應用訪問需求。
技術實現思路
[0003]有鑒于此,本專利技術實施例的目的在于提出一種實現集群的服務拓撲感知的方法、裝置、設備及可讀介質,通過使用本專利技術的技術方案,能夠在數據包進入內核協議棧之前通過讀取Map完成服務對應的后端容器的選擇,提高了網絡轉發效率。
[0004]基于上述目的,本專利技術的實施例的一個方面提供了一種實現集群的服務拓撲感知的方法,包括以下步驟:為集群中的每個節點添加預設標簽;在集群中創建監聽服務的程序并在集群中創建ebpf程序的Map;響應于監聽服務的程序監聽到集群服務發生變化,獲取服務的詳細信息并根據服務的拓撲感知規則篩選后端容器,并將容器存儲到Map中;將ebpf程序掛載到集群內節點內核的預設位置,在訪問集群的數據包進入內核網
絡協議棧前通過查詢Map選擇服務對應的后端容器。
[0005]根據本專利技術的一個實施例,響應于監聽服務的程序監聽到集群服務發生變化,獲取服務的詳細信息并根據服務的拓撲感知規則篩選后端容器,并將容器存儲到Map中包括:響應于監聽服務的程序監聽到集群創建或更新服務,解析服務對應的后端容器的具體信息,并獲取容器所在節點的信息;將容器所在節點的標簽信息與當前節點的標簽信息進行比較,并基于比較結果將容器存儲到Map中。
[0006]根據本專利技術的一個實施例,標簽信息包括節點名稱的標簽、節點所處的可用區的標簽以及節點所處的域的標簽。
[0007]根據本專利技術的一個實施例,將容器所在節點的標簽信息與當前節點的標簽信息進行比較,并基于比較結果將容器存儲到Map中包括:將容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽進行比較;響應于容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽相同,將容器存儲到Map中。
[0008]根據本專利技術的一個實施例,還包括:響應于容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽不相同,將容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽進行比較;響應于容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽相同,將容器存儲到Map中。
[0009]根據本專利技術的一個實施例,還包括:響應于容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽不相同,將容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽進行比較;響應于容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽相同,將容器存儲到Map中。
[0010]根據本專利技術的一個實施例,還包括:響應于容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽不相同,將所有容器存儲到Map中以保證服務的可用性。
[0011]根據本專利技術的一個實施例,基于比較結果將容器存儲到Map中包括:將容器存儲到Map的鍵值對中的值中。
[0012]根據本專利技術的一個實施例,將ebpf程序掛載到集群內節點內核的預設位置包括:將ebpf程序掛載到集群內節點內核的socket層。
[0013]根據本專利技術的一個實施例,在訪問集群的數據包進入內核網絡協議棧前通過查詢Map選擇服務對應的后端容器包括:響應于集群內節點或容器通過服務發起訪問,根據數據包的目的地址讀取Map以獲取到服務對應的后端容器。
[0014]根據本專利技術的一個實施例,將ebpf程序掛載到集群內節點內核的預設位置包括:將ebpf程序掛載到集群內節點內核的XDP位置。
[0015]根據本專利技術的一個實施例,在訪問集群的數據包進入內核網絡協議棧前通過查詢Map選擇服務對應的后端容器包括:響應于集群外部客戶通過nodeprot發起訪問,根據數據包的目的地址讀取Map以獲取到服務對應的后端容器。
[0016]根據本專利技術的一個實施例,為集群中的每個節點添加預設標簽包括:為集群中每個節點添加節點名稱的標簽、節點所處的可用區的標簽以及節點所處的域的標簽。
[0017]根據本專利技術的一個實施例,在集群中創建監聽服務的程序包括:在集群中編寫API服務監聽程序用于監聽集群中的服務。
[0018]根據本專利技術的一個實施例,在集群中創建ebpf程序的Map包括:在集群中創建ebpf程序的Map,其中Map的鍵為服務的IP和端口,值為服務對應的后端容器的信息。
[0019]根據本專利技術的一個實施例,還包括:響應于監聽服務的程序監聽到集群刪除服務,刪除對應Map中服務的信息。
[0020]根據本專利技術的一個實施例,集群為k8s集群。
[0021]本專利技術的實施例的另一個方面,還提供了一種實現集群的服務拓撲感知的裝置,裝置包括:添加模塊,添加模塊配置成為集群中的每個節點添加預設標簽;創建模塊,創建模塊配置為在集群中創建監聽服務的程序并在集群中本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種實現集群的服務拓撲感知的方法,其特征在于,包括以下步驟:為集群中的每個節點添加預設標簽;在集群中創建監聽服務的程序并在集群中創建ebpf程序的Map;響應于監聽服務的程序監聽到集群服務發生變化,獲取服務的詳細信息并根據服務的拓撲感知規則篩選后端容器,并將容器存儲到Map中;將ebpf程序掛載到集群內節點內核的預設位置,在訪問集群的數據包進入內核網絡協議棧前通過查詢Map選擇服務對應的后端容器。2.根據權利要求1所述的方法,其特征在于,響應于監聽服務的程序監聽到集群服務發生變化,獲取服務的詳細信息并根據服務的拓撲感知規則篩選后端容器,并將容器存儲到Map中包括:響應于監聽服務的程序監聽到集群創建或更新服務,解析服務對應的后端容器的具體信息,并獲取容器所在節點的信息;將容器所在節點的標簽信息與當前節點的標簽信息進行比較,并基于比較結果將容器存儲到Map中。3.根據權利要求2所述的方法,其特征在于,標簽信息包括節點名稱的標簽、節點所處的可用區的標簽以及節點所處的域的標簽。4.根據權利要求3所述的方法,其特征在于,將容器所在節點的標簽信息與當前節點的標簽信息進行比較,并基于比較結果將容器存儲到Map中包括:將容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽進行比較;響應于容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽相同,將容器存儲到Map中。5.根據權利要求4所述的方法,其特征在于,還包括:響應于容器所在節點的節點名稱的標簽與當前節點的節點名稱的標簽不相同,將容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽進行比較;響應于容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽相同,將容器存儲到Map中。6.根據權利要求5所述的方法,其特征在于,還包括:響應于容器所在節點的節點所處的可用區的標簽與當前節點的節點所處的可用區的標簽不相同,將容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽進行比較;響應于容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽相同,將容器存儲到Map中。7.根據權利要求6所述的方法,其特征在于,還包括:響應于容器所在節點的節點所處的域的標簽與當前節點的節點所處的域的標簽不相同,將所有容器存儲到Map中以保證服務的可用性。8.根據權利要求2所述的方法,其特征在于,基于比較結果將容器存儲到Map中包括:將容器存儲到Map的鍵值對中的值中。9.根據權利要求1所述的方法,其特征在于,將ebpf程序掛載到集群內節點內核的預設位置包括:
將ebpf程序掛載到集群內節...
【專利技術屬性】
技術研發人員:彭彬彬,黃吉旺,
申請(專利權)人:蘇州浪潮智能科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。