本技術(shù)涉及資源調(diào)度處理技術(shù),尤其涉及一種資源調(diào)度方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)和產(chǎn)品。
背景技術(shù):
1、容器編排平臺(tái)(kubernetes,k8s)實(shí)現(xiàn)了簡(jiǎn)化容器化應(yīng)用程序的部署、擴(kuò)展和管理,并支持自動(dòng)負(fù)載均衡、服務(wù)發(fā)現(xiàn)、水平擴(kuò)展和滾動(dòng)更新等功能,被廣泛應(yīng)用于云原生應(yīng)用開(kāi)發(fā)和部署。k8s域名解析技術(shù)(domain?name?system,dns)是一種服務(wù)發(fā)現(xiàn)機(jī)制,k8sdns為k8s集群內(nèi)每個(gè)上層服務(wù)(service)分配唯一的域名,當(dāng)集群內(nèi)一個(gè)pod與其他上層服務(wù)進(jìn)行通信時(shí),k8s?dns基于訪問(wèn)的服務(wù)名稱解析得到對(duì)應(yīng)的ip地址,實(shí)現(xiàn)根據(jù)服務(wù)名稱與上層服務(wù)建立通信。
2、k8s集群內(nèi)的服務(wù)類(lèi)型包括集群地址服務(wù)(cluster?ip?service)和無(wú)頭服務(wù)(headless?service)。集群地址服務(wù)為默認(rèn)類(lèi)型服務(wù),集群地址服務(wù)會(huì)分配一個(gè)虛擬ip地址,該服務(wù)對(duì)應(yīng)的pod通常不會(huì)被k8s集群內(nèi)的其他pod直接訪問(wèn),而是通過(guò)訪問(wèn)虛擬ip地址的方式來(lái)訪問(wèn)該服務(wù)對(duì)應(yīng)的pod,具體地,服務(wù)請(qǐng)求pod基于虛擬ip地址訪問(wèn)該集群地址服務(wù)時(shí),該集群地址服務(wù)基于設(shè)定的負(fù)載均衡策略,確定此次被訪問(wèn)的對(duì)應(yīng)的pod。無(wú)頭服務(wù)不會(huì)分配虛擬ip地址,而是直接將k8s?dns解析指向?qū)?yīng)的pod的ip地址,無(wú)頭服務(wù)通常用于需要對(duì)每個(gè)對(duì)應(yīng)的pod進(jìn)行直接通信或需要進(jìn)行復(fù)雜的服務(wù)發(fā)現(xiàn)的應(yīng)用程序。相關(guān)技術(shù)中,當(dāng)集群地址服務(wù)被請(qǐng)求時(shí),基于負(fù)載均衡策略,服務(wù)請(qǐng)求可能發(fā)送至距離服務(wù)請(qǐng)求pod較遠(yuǎn)的節(jié)點(diǎn)上的服務(wù)實(shí)例,顯然增加了網(wǎng)絡(luò)延遲和帶寬損耗,且基于負(fù)載均衡策略分配流量至上層服務(wù)對(duì)應(yīng)的pod的過(guò)程中涉及到網(wǎng)絡(luò)層的轉(zhuǎn)發(fā)和數(shù)據(jù)包處理,會(huì)產(chǎn)生性能損耗;當(dāng)無(wú)頭服務(wù)被請(qǐng)求時(shí),無(wú)頭服務(wù)不支持負(fù)載均衡策略且沒(méi)有相應(yīng)的資源調(diào)度方法。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本技術(shù)實(shí)施例提供了一種資源調(diào)度方法、裝置、設(shè)備、存儲(chǔ)介質(zhì)和產(chǎn)品,旨在減少k8s集群內(nèi)服務(wù)資源調(diào)度時(shí)產(chǎn)生的網(wǎng)絡(luò)流量,且實(shí)現(xiàn)對(duì)無(wú)頭服務(wù)兼容。
2、本技術(shù)實(shí)施例的技術(shù)方案是這樣實(shí)現(xiàn)的:
3、第一方面,本技術(shù)實(shí)施例提供了一種資源調(diào)度方法,應(yīng)用于k8s集群,所述方法包括:
4、接收服務(wù)請(qǐng)求方發(fā)送的服務(wù)請(qǐng)求,所述服務(wù)請(qǐng)求用于請(qǐng)求訪問(wèn)上層服務(wù);
5、基于預(yù)先獲取的集群資源映射表和所述服務(wù)請(qǐng)求,確定所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn);
6、基于所述集群資源映射表和所述k8s集群內(nèi)各節(jié)點(diǎn)之間的距離,確定所述上層服務(wù)對(duì)應(yīng)的第一服務(wù)提供方,所述第一服務(wù)提供方為所述上層服務(wù)對(duì)應(yīng)的各服務(wù)提供方中距離所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)最近的服務(wù)提供方,所述各節(jié)點(diǎn)之間的距離基于所述k8s集群內(nèi)各節(jié)點(diǎn)的網(wǎng)絡(luò)坐標(biāo)確定;
7、指示所述服務(wù)請(qǐng)求方訪問(wèn)所述第一服務(wù)提供方。
8、上述方案中,所述方法還包括:
9、獲取所述集群資源映射表,所述集群資源映射表包括第一映射表、第二映射表和第三映射表;
10、其中,所述第一映射表指示pod信息和pod地址之間之間的對(duì)應(yīng)關(guān)系,所述pod信息包括節(jié)點(diǎn)名稱;所述第二映射表指示上層服務(wù)的服務(wù)信息和服務(wù)名稱之間的對(duì)應(yīng)關(guān)系;所述第三映射表指示上層服務(wù)的服務(wù)名稱和pod地址之間的關(guān)系;所述pod為所述服務(wù)請(qǐng)求方和所述服務(wù)提供方的資源單元。
11、上述方案中,所述基于預(yù)先獲取的集群資源映射表和所述服務(wù)請(qǐng)求,確定所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn),包括:
12、基于所述服務(wù)請(qǐng)求攜帶的所述服務(wù)請(qǐng)求方對(duì)應(yīng)的pod地址,查詢所述第一映射表,確定所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)的節(jié)點(diǎn)名稱。
13、上述方案中,所述基于所述集群資源映射表和所述k8s集群內(nèi)各節(jié)點(diǎn)之間的距離,確定所述上層服務(wù)對(duì)應(yīng)的第一服務(wù)提供方,包括:
14、基于所述服務(wù)請(qǐng)求攜帶的所述上層服務(wù)的服務(wù)名稱,查詢所述第三映射表,得到所述上層服務(wù)對(duì)應(yīng)的各服務(wù)提供方的pod地址,并生成第一子列表;
15、基于所述第一子列表,查詢所述第一映射表,得到所述上層服務(wù)對(duì)應(yīng)的各服務(wù)提供方的pod地址和所在的節(jié)點(diǎn)的節(jié)點(diǎn)名稱,并生成第二子列表;
16、基于所述第二子列表,查詢所述各節(jié)點(diǎn)之間的距離,得到距離所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)最近的各所述服務(wù)提供方的pod地址,并生成第三子列表;
17、從所述第三子列表中選擇第一pod地址,并確定所述第一pod地址對(duì)應(yīng)的服務(wù)提供方為所述第一服務(wù)提供方,所述第一pod地址為所述第三子列表中任一pod地址。
18、上述方案中,所述基于預(yù)先獲取的集群資源映射表和所述服務(wù)請(qǐng)求,確定所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)之前,所述方法還包括:
19、基于所述服務(wù)請(qǐng)求攜帶的所述上層服務(wù)的服務(wù)名稱,查詢所述第二映射表;
20、基于查詢到的對(duì)應(yīng)的服務(wù)信息,若確定所述k8s集群內(nèi)存在所述上層服務(wù),則獲取所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn);
21、若確定所述k8s集群內(nèi)不存在所述上層服務(wù),則返回表征無(wú)法解析所述服務(wù)名稱的指示信息至所述服務(wù)請(qǐng)求方。
22、上述方案中,所述指示所述服務(wù)請(qǐng)求方訪問(wèn)所述第一服務(wù)提供方,包括:
23、指示所述服務(wù)請(qǐng)求方基于所述第一pod地址訪問(wèn)所述第一服務(wù)提供方。
24、上述方案中,所述方法還包括:
25、在所述k8s集群內(nèi)各節(jié)點(diǎn)創(chuàng)建坐標(biāo)實(shí)例,所述坐標(biāo)實(shí)例用于得到所述k8s集群內(nèi)各節(jié)點(diǎn)之間的距離。
26、上述方案中,所述方法還包括:
27、對(duì)所述各節(jié)點(diǎn)的坐標(biāo)實(shí)例設(shè)置初始網(wǎng)絡(luò)坐標(biāo);
28、基于所述各坐標(biāo)實(shí)例之間通信的往返時(shí)間,更新所述各坐標(biāo)實(shí)例的網(wǎng)絡(luò)坐標(biāo);
29、基于所述更新后的各坐標(biāo)實(shí)例的網(wǎng)絡(luò)坐標(biāo),得到所述各節(jié)點(diǎn)之間的距離。
30、上述方案中,所述方法還包括:
31、在所述k8s集群內(nèi)創(chuàng)建一個(gè)或多個(gè)無(wú)頭服務(wù);
32、其中,所述無(wú)頭服務(wù)為不分配對(duì)應(yīng)的服務(wù)地址的上層服務(wù);所述服務(wù)請(qǐng)求具體用于請(qǐng)求訪問(wèn)所述無(wú)頭服務(wù)。
33、第二方面,本技術(shù)實(shí)施例提供了一種資源調(diào)度裝置,應(yīng)用于k8s集群,所述裝置包括:
34、接收模塊,用于接收服務(wù)請(qǐng)求方發(fā)送的服務(wù)請(qǐng)求,所述服務(wù)請(qǐng)求用于請(qǐng)求訪問(wèn)上層服務(wù);
35、第一確定模塊,用于基于預(yù)先獲取的集群資源映射表和所述服務(wù)請(qǐng)求,確定所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn);
36、第二確定模塊,用于基于所述集群資源映射表和所述k8s集群內(nèi)各節(jié)點(diǎn)之間的距離,確定所述上層服務(wù)對(duì)應(yīng)的第一服務(wù)提供方,所述第一服務(wù)提供方為所述上層服務(wù)對(duì)應(yīng)的各服務(wù)提供方中距離所述服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)最近的服務(wù)提供方,所述各節(jié)點(diǎn)之間的距離基于所述k8s集群內(nèi)各節(jié)點(diǎn)的網(wǎng)絡(luò)坐標(biāo)確定;
37、指示模塊,用于指示所述服務(wù)請(qǐng)求方訪問(wèn)所述第一服務(wù)提供方。
38、第三方面,本技術(shù)實(shí)施例提供了一種資源調(diào)度設(shè)備,包括:處理器和用于存儲(chǔ)能夠在處理器上運(yùn)行的計(jì)算機(jī)程序的存儲(chǔ)器,其中,所述處理器,用于運(yùn)行計(jì)算機(jī)程序時(shí),執(zhí)行如第一方面所述方法的步驟。
39、第四方面,本技術(shù)實(shí)施例提供了一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)如第一方面所述方法的步驟。
40、第五方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí),實(shí)現(xiàn)如第一方面所述方法的步驟。
41、本技術(shù)實(shí)施例提供了一種應(yīng)用于k8s集群的資源調(diào)度方法,該方法包括:接收服務(wù)請(qǐng)求方發(fā)送的服務(wù)請(qǐng)求,服務(wù)請(qǐng)求用于請(qǐng)求訪問(wèn)上層服務(wù);基于預(yù)先獲取的集群資源映射表和服務(wù)請(qǐng)求,確定服務(wù)請(qǐng)求方所在的節(jié)點(diǎn);基于集群資源映射表和k8s集群內(nèi)各節(jié)點(diǎn)之間的距離,確定上層服務(wù)對(duì)應(yīng)的第一服務(wù)提供方,第一服務(wù)提供方為上層服務(wù)對(duì)應(yīng)的各服務(wù)提供方中距離服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)最近的服務(wù)提供方,各節(jié)點(diǎn)之間的距離基于k8s集群內(nèi)各節(jié)點(diǎn)的網(wǎng)絡(luò)坐標(biāo)確定;指示服務(wù)請(qǐng)求方訪問(wèn)第一服務(wù)提供方。如此,本技術(shù)實(shí)施例基于網(wǎng)絡(luò)坐標(biāo)系統(tǒng),預(yù)測(cè)k8s集群內(nèi)各節(jié)點(diǎn)的距離,當(dāng)k8s集群內(nèi)的上層服務(wù)被請(qǐng)求時(shí),基于集群資源映射表,將服務(wù)請(qǐng)求發(fā)送至距離服務(wù)請(qǐng)求方所在的節(jié)點(diǎn)最近的服務(wù)提供方,從而減少網(wǎng)絡(luò)延遲和帶寬消耗,且本技術(shù)實(shí)施例的服務(wù)請(qǐng)求直接指向服務(wù)提供方,無(wú)需獲取上層服務(wù)的虛擬地址,兼容無(wú)頭服務(wù)。