本技術(shù)實施例涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于dpu的k8s集群部署方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、當(dāng)前dpu網(wǎng)卡上通常使用基于開放虛擬網(wǎng)絡(luò)(open?virtual?network,ovn)的云原生網(wǎng)絡(luò)流量卸載方法。在該方法中,當(dāng)用戶在創(chuàng)建容器pod或虛擬機vm實例后,kubernetes首先會調(diào)用單根虛擬化設(shè)備插件(sriov?device?plugin,sriov-dp?cni),從用戶定義的sriov資源池中選取一個符合要求的虛擬功能vf接口,然后再將所選擇的vf?device?id傳遞給ovn?k8s軟件定義網(wǎng)絡(luò)的控制器插件(ovn-kubernetes?cni)。ovn-kubernetes?cni將vf設(shè)備添加到新創(chuàng)建的pod或虛擬機實例中。與此同時,部署在dpu?soc側(cè)的兩個組件ovn的dpu片上部署于dpu上的片上系統(tǒng)組件(ovn?soc?module)和ovn控制組件(ovn?controller)響應(yīng)實例調(diào)度的事件。ovn?soc?module將vf對應(yīng)的代表口vfr添加到ovs網(wǎng)橋。ovncontroller會從開放虛擬網(wǎng)絡(luò)數(shù)據(jù)庫(ovn?db)獲取相關(guān)的流表并下發(fā)給ovs實例。ovs轉(zhuǎn)發(fā)與該pod或vm實例相關(guān)的網(wǎng)絡(luò)流量。
2、然而,當(dāng)前解決方案中,sriov-dp和ovn-kubernetes?cni只為每一個pod或vm分配一個vf。當(dāng)這個vf接口或其所屬的pf接口出現(xiàn)軟硬件問題導(dǎo)致vf接口失效時,pod或vm實例無法使kubernetes感知到這個接口實例失效;或感知到接口失效后向kubernetes告警觸發(fā)錯誤處理error?handling事件,kubernetes可以通過調(diào)度新的pod實例等措施將流量轉(zhuǎn)移到新的pod實例。但在此過程中——kubernetes探活發(fā)現(xiàn)實例流量出現(xiàn)故障、新的pod實例創(chuàng)建成功前,舊有的故障實例仍然會承擔(dān)上下行流量的轉(zhuǎn)發(fā),如果cni不能夠在這個過程中為pod實例提供高可靠性的支持,會導(dǎo)致業(yè)務(wù)出現(xiàn)明顯的斷流,尤其是在開啟硬件卸載特性的dpu網(wǎng)卡上,高帶寬、高吞吐、極低時延敏感的網(wǎng)絡(luò)中,哪怕是極短時間的斷流都會導(dǎo)致海量丟包以及重傳,不僅影響業(yè)務(wù)本身,還會由于丟包重傳加劇網(wǎng)絡(luò)的擁塞情況,帶來極大的損失。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供了一種基于dpu的k8s集群部署方法,用以提高云原生集群中容器實例網(wǎng)絡(luò)通信的可靠性。
2、第一方面,本技術(shù)實施例提供一種基于dpu的k8s集群部署方法,包括:
3、接收用戶部署的容器實例,并確定兩個虛擬功能口;
4、獲取所述兩個虛擬功能口對應(yīng)設(shè)備的第一標(biāo)識符,所述兩個虛擬功能口屬于不同的物理功能口,并調(diào)用容器網(wǎng)絡(luò)接口插件,所述容器網(wǎng)絡(luò)接口插件用于創(chuàng)建邏輯綁定虛擬功能口,所述創(chuàng)建邏輯綁定虛擬功能口工作模式為主從模式;
5、根據(jù)所述第一標(biāo)識符將所述兩個虛擬功能口添加到所述邏輯綁定虛擬功能口中;將所述邏輯綁定虛擬功能口添加到容器的內(nèi)核命名空間中,所述邏輯綁定虛擬功能口為容器的網(wǎng)絡(luò)接口;
6、通過軟件定義網(wǎng)絡(luò)的控制器插件為所述容器的網(wǎng)絡(luò)接口分配ip地址和mac地址;
7、發(fā)送所述第一標(biāo)識符,所述第一標(biāo)識符用于創(chuàng)建邏輯綁定虛擬功能代表口;
8、根據(jù)所述第一標(biāo)識符和所述物理功能口對應(yīng)的第二標(biāo)識符,將對應(yīng)的兩個虛擬功能代表口作為子接口添加到所述邏輯綁定虛擬功能代表口,所述邏輯綁定虛擬功能代表口工作模式設(shè)置為主從模式;
9、創(chuàng)建邏輯綁定上行接口,并根據(jù)所述第一標(biāo)識符和所述第二標(biāo)識符將所述兩個物理功能接口對應(yīng)的兩個上行接口作為子接口添加到所述邏輯綁定上行接口,所述邏輯綁定上行接口工作模式設(shè)置為主從模式;
10、將所述邏輯綁定虛擬功能代表口和所述邏輯綁定上行接口添加到ovs網(wǎng)橋上;
11、獲取所述容器相關(guān)的流表、所述邏輯綁定虛擬功能代表口和所述邏輯綁定上行接口的ovs配置信息;
12、將所述容器相關(guān)的流表和所述ovs配置信息下發(fā)到ovs實例。
13、在一種可能的實現(xiàn)方式中,所述兩個虛擬功能口包括第一虛擬功能口和第二虛擬功能口,所述第一虛擬功能口和所述第二虛擬功能口對應(yīng)的資源池不同。
14、在一種可能的實現(xiàn)方式中,所述第一標(biāo)識符包括第三標(biāo)識符和所述第四標(biāo)識符,所述第三標(biāo)識符與所述第一虛擬功能口對應(yīng),所述第四標(biāo)識符與所述第二虛擬功能口對應(yīng)。
15、在一種可能的實現(xiàn)方式中,所述容器網(wǎng)絡(luò)接口插件用于在所述容器實例在被工作節(jié)點調(diào)度時,根據(jù)crd資源定義為所述容器實例創(chuàng)建所述邏輯綁定虛擬功能口。
16、第二方面,本技術(shù)實施例提供一種基于dpu的k8s集群部署裝置,包括:
17、接收模塊,用于接收用戶部署的容器實例,并確定兩個虛擬功能口;
18、第一獲取模塊,用于獲取所述兩個虛擬功能口對應(yīng)設(shè)備的第一標(biāo)識符,所述兩個虛擬功能口屬于不同的物理功能口,并調(diào)用容器網(wǎng)絡(luò)接口插件,所述容器網(wǎng)絡(luò)接口插件用于創(chuàng)建邏輯綁定虛擬功能口,所述創(chuàng)建邏輯綁定虛擬功能口工作模式為主從模式;
19、第一添加模塊,根據(jù)所述第一標(biāo)識符將所述兩個虛擬功能口添加到所述邏輯綁定虛擬功能口中;將所述邏輯綁定虛擬功能口添加到容器的內(nèi)核命名空間中,所述邏輯綁定虛擬功能口為容器的網(wǎng)絡(luò)接口;
20、分配模塊,用于通過軟件定義網(wǎng)絡(luò)的控制器插件為所述容器的網(wǎng)絡(luò)接口分配ip地址和mac地址;
21、第一發(fā)送模塊,用于發(fā)送所述第一標(biāo)識符,所述第一標(biāo)識符用于創(chuàng)建邏輯綁定虛擬功能代表口;
22、第二添加模塊,用于根據(jù)所述第一標(biāo)識符和所述物理功能口對應(yīng)的第二標(biāo)識符,將對應(yīng)的兩個虛擬功能代表口作為子接口添加到所述邏輯綁定虛擬功能代表口,所述邏輯綁定虛擬功能代表口工作模式設(shè)置為主從模式;
23、創(chuàng)建模塊,用于創(chuàng)建邏輯綁定上行接口,并根據(jù)所述第一標(biāo)識符和所述第二標(biāo)識符將所述兩個物理功能接口對應(yīng)的兩個上行接口作為子接口添加到所述邏輯綁定上行接口,所述邏輯綁定上行接口工作模式設(shè)置為主從模式;
24、第三添加模塊,用于將所述邏輯綁定虛擬功能代表口和所述邏輯綁定上行接口添加到ovs網(wǎng)橋上;
25、第二獲取模塊,用于獲取所述容器相關(guān)的流表、所述邏輯綁定虛擬功能代表口和所述邏輯綁定上行接口的ovs配置信息;
26、第二發(fā)送模塊,用于將所述容器相關(guān)的流表和所述ovs配置信息下發(fā)到ovs實例。
27、在一種可能的實現(xiàn)方式中,所述兩個虛擬功能口包括第一虛擬功能口和第二虛擬功能口,所述第一虛擬功能口和所述第二虛擬功能口對應(yīng)的資源池不同。
28、在一種可能的實現(xiàn)方式中,所述第一標(biāo)識符包括第三標(biāo)識符和所述第四標(biāo)識符,所述第三標(biāo)識符與所述第一虛擬功能口對應(yīng),所述第四標(biāo)識符與所述第二虛擬功能口對應(yīng)。
29、在一種可能的實現(xiàn)方式中,所述容器網(wǎng)絡(luò)接口插件用于在所述容器實例在被工作節(jié)點調(diào)度時,根據(jù)crd資源定義為所述容器實例創(chuàng)建所述邏輯綁定虛擬功能口。
30、第三方面,本技術(shù)實施例還提供了一種電子設(shè)備,該電子設(shè)備包括:
31、至少一個處理器;
32、以及與至少一個處理器通信連接的存儲器;
33、其中,存儲器存儲有可被至少一個處理器執(zhí)行的指令,指令被至少一個處理器執(zhí)行,以使電子設(shè)備執(zhí)行如本技術(shù)實施例第一方面中任一實施例對應(yīng)的k8s集群部署方法。
34、第四方面,本技術(shù)實施例還提供了一種計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)中存儲有計算機執(zhí)行指令,計算機執(zhí)行指令被處理器執(zhí)行時用于實現(xiàn)如本技術(shù)實施例第一方面任一的k8s集群部署方法。
35、第五方面,本公開還提供了一種計算機程序產(chǎn)品,該程序產(chǎn)品包含計算機執(zhí)行指令,計算機執(zhí)行指令被處理器執(zhí)行時用于實現(xiàn)如本公開第一方面對應(yīng)的任意實施例的k8s集群部署方法。
36、綜上,本技術(shù)實施例所示的方法,當(dāng)單一的虛擬化sriov虛擬接口失效時,云原生網(wǎng)絡(luò)中容器實例的網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)將會中斷,將兩個分屬于不同物理接口的虛擬接口綁定成為主從模式的接口,可以在主設(shè)備虛擬功能失效時切換到從設(shè)備以提高容災(zāi)容錯能力。能夠解決現(xiàn)有方案中僅為pod分配單個vf接口出現(xiàn)軟硬件問題失效時的斷流問題,從而提高云原生集群中pod實例網(wǎng)絡(luò)通信的可靠性。