新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Kubernetes:如何改善大型DDS系統中的軟件交付

        Kubernetes:如何改善大型DDS系統中的軟件交付

        作者: 時間:2020-05-28 來源:電子產品世界 收藏

        系統管理員一致認為:部署和管理大型分布式系統非常復雜。如果您有數百個應用程序,則很難手動執行所有操作。為了克服這個問題,容器技術已被廣泛應用于各種行業的大規模分布式系統中。

        本文引用地址:http://www.104case.com/article/202005/413643.htm

         容器是打包應用程序及其依存關系的軟件部署單元。容器技術對于數據分發服務(Data Distribution Service?)系統可能很有用,尤其是在您擁有大型系統并且需要遠程部署、更新和擴展它的情況下。在這方面,RTI公司已經探索Docker和Kubernetes已有相當一段時間了。

         作為RTI研究團隊內工作的一部分,我們還一直在評估Kubernetes集群內的性能,以幫助確定客戶是否應該注意任何問題。在我的兩部分博客的第一部分中,這里將討論什么是Kubernetes,以及它與的關系。

         什么是Kubernetes?

        Kubernetes(k8s)是用于容器化應用程序的編排平臺。什么是業務流程平臺?編排平臺是一組服務,可幫助部署和管理分布式節點和應用程序。具體來說,它通過向上和向下縮放、執行更新和回滾,自我修復等方法來幫助管理分布式應用程序。目前,k8s是容器編排的實際標準,它是Google開發的一個開源項目,并且目前由Cloud Native Computing Foundation()管理。

        您可能聽說過Docker。k8與Docker有何關系?k8和Docker是互補技術。Docker是當前使用最廣泛的容器引擎技術,因此使用Docker開發和打包然后使用k8來管理這些容器是很常見的。

        Kubernetes體系結構

        要使用k8s,首先需要設置k8s集群,否則,如果已經有一個集群,則需要訪問該集群。如果您沒有集群,請簽出kubeadm來設置分布式集群,或者查看minikube來本地設置。使用這些工具非常容易。

         k8s集群是什么樣的?如圖1所示,每個k8s集群至少由一個主節點和多個工作節點組成。主服務器充當集群的控制平面。每個工作程序節點管理一個容器運行時,例如Docker;它處理容器的生命周期操作,例如拉容器圖像,啟動和停止容器。每個工作節點還具有一個稱為kubelet的代理,該代理與主服務器進行通信以進行容器編排。

         一旦您的k8s集群啟動并運行,就可以通過k8s命令行工具kubectl將k8s清單文件發送到主服務器來部署容器。

        image.png

        圖1. Kubernetes的概念和架構

         Kubernetes網絡

        現在,讓我解釋一下k8的網絡模型,因為這將是與最為相關的主題。K8s使用Docker作為默認的容器引擎,但是其聯網方法不同于Docker的默認方法。

         k8s引入了一個稱為“ pod”的新概念作為其可部署單元。容器是具有共享存儲/網絡的一個或多個容器的集合。每個Pod都有自己直接可訪問的IP地址,因此,您無需像處理Docker那樣處理容器與主機之間的映射端口。

         該網絡模型創建了一個干凈的,向后兼容的模型,在其中可以將Pod視為物理主機。Kubernetes的網絡模型具有以下基本要求:

         所有容器無需網絡地址轉換()即可與所有其他容器通信。

        ●   所有節點都可以在沒有的情況下與所有容器通信(反之亦然)。

        ●   容器所看到的IP與其他人所看到的IP是相同的。

        從中我們得到的啟發

        與單獨使用Docker相比,k8s網絡模型更適合DDS。DDS參與者交換其IP地址以進行點對點通信,因此DDS在沒有的網絡上可以更好地工作。

         DDS發現服務對于k8s非常有用。Pod的IP地址不可靠,因為它們的IP地址是在創建時動態分配的。因此,通常將Pod縫合到具有可靠IP地址和DNS名稱的“ k8s服務”中。然后,k8s服務負載平衡了縫合后端后端的網絡流量。使用DDS發現服務,您不需要k8s服務,因為DDS窗格可以通過主題發現并建立彼此的連接,從而抽象出基于IP的通信。這將允許DDS Pod在無需k8s服務的情況下進行發現和通信,從而解決了IP不可靠性問題。

         k8s提供了一組不錯的功能,用于部署,更新,擴展和自我修復分布式應用程序。盡管這是事實,但可能難以完全理解和利用所有功能。我們真的需要k8來管理DDS應用程序嗎?我會說并不是每個系統都需要它。但是,如果您的系統是:

        1. 大規模的數百個節點和應用程序。

        2. 利用容器包裝應用程序。

        3. 需要自動縮放和自我修復功能。

        使用k8s的自我修復功能的一個問題是,檢測和啟動新容器可能要花費一分鐘或更長時間。此恢復時間不會影響群集的無狀態應用程序,但是會嚴重影響有狀態的應用程序。作為RTI研究團隊當前工作的一部分,我們一直在研究為關鍵應用程序支持自我修復的機制,這些機制有可能將恢復時間縮短到100毫秒以下。

         在本博客的下一部分中,我將以RTI PerfTest為例,分享在k8s集群中部署DDS應用程序的特定說明和配置。如果您對此主題感興趣,請檢查一下!

         關于作者

        image.png

        Kyoungho An是Real-Time Innovations(RTI)的高級研究工程師。他在分布式實時嵌入式系統方面擁有10年的經驗。他的研究興趣包括發布/訂閱中間件,以及分布式系統的部署和監視。他曾擔任首席研究員,領導過多個由DOD和DOE資助的研究項目。他在期刊和會議上發表了針對分布式基于事件的系統,中間件和網絡物理系統的研究論文。他擁有博士學位。范德比爾特大學計算機科學博士學位。



        關鍵詞: DDS CNCF NAT

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 清流县| 洞口县| 昭苏县| 双城市| 阿城市| 丹江口市| 绥德县| 政和县| 潜山县| 剑河县| 永德县| 天水市| 盐山县| 休宁县| 永清县| 鸡泽县| 蓝田县| 临洮县| 宣恩县| 赣州市| 同心县| 永福县| 淮南市| 察哈| 津市市| 凤山市| 宜黄县| 平罗县| 泉州市| 洱源县| 丹阳市| 阳西县| 体育| 石台县| 鹿邑县| 忻城县| 信宜市| 大英县| 都江堰市| 太仆寺旗| 当涂县|