体系办理员共同以为:布置和办理大型分布式体系十分复杂。假如您稀有百个应用程序,则很难手动履行一切操作。为了战胜这个问题,容器技能已被广泛应用于各种职业的大规模分布式体系中。
容器是打包应用程序及其依存联系的软件布置单元。容器技能关于数据分发服务(Data Distribution Service™)体系或许很有用,尤其是在您具有大型体系而且需求长途布置、更新和扩展它的情况下。在这方面,RTI公司现已探究Docker和Kubernetes已有适当一段时刻了。
作为RTI研讨团队内作业的一部分,咱们还一直在评价Kubernetes集群内DDS的功用,以协助确认客户是否应该留意任何问题。在我的两部分博客的榜首部分中,这儿将评论什么是Kubernetes,以及它与DDS的联系。
什么是Kubernetes?
Kubernetes(k8s)是用于容器化应用程序的编列渠道。什么是业务流程渠道?编列渠道是一组服务,可协助布置和办理分布式节点和应用程序。具体来说,它经过向上和向下缩放、履行更新和回滚,自我修正等办法来协助办理分布式应用程序。现在,k8s是容器编列的实践规范,它是Google开发的一个开源项目,而且现在由Cloud Native Computing Foundation(CNCF)办理。
您或许听说过Docker。k8与Docker有何联系?k8和Docker是互补技能。Docker是当时运用最广泛的容器引擎技能,因而运用Docker开发和打包然后运用k8来办理这些容器是很常见的。
Kubernetes体系结构
要运用k8s,首要需求设置k8s集群,不然,假如现已有一个集群,则需求拜访该集群。假如您没有集群,请签出kubeadm来设置分布式集群,或许检查minikube来本地设置。运用这些东西十分简单。
k8s集群是什么样的?如图1所示,每个k8s集群至少由一个主节点和多个作业节点组成。主服务器充任集群的操控平面。每个作业程序节点办理一个容器运转时,例如Docker;它处理容器的生命周期操作,例如拉容器图画,发动和中止容器。每个作业节点还具有一个称为kubelet的署理,该署理与主服务器进行通讯以进行容器编列。
一旦您的k8s集群发动并运转,就能够经过k8s命令行东西kubectl将k8s清单文件发送到主服务器来布置容器。
图1. Kubernetes的概念和架构
Kubernetes网络
现在,让我解释一下k8的网络模型,由于这将是与DDS最为相关的主题。K8s运用Docker作为默许的容器引擎,可是其联网办法不同于Docker的默许办法。
k8s引入了一个称为“ pod”的新概念作为其可布置单元。容器是具有同享存储/网络的一个或多个容器的调集。每个Pod都有自己直接可拜访的IP地址,因而,您无需像处理Docker那样处理容器与主机之间的映射端口。
该网络模型创立了一个洁净的,向后兼容的模型,在其间能够将Pod视为物理主机。Kubernetes的网络模型具有以下基本要求:
一切容器无需网络地址转化(NAT)即可与一切其他容器通讯。
● 一切节点都能够在没有NAT的情况下与一切容器通讯(反之亦然)。
● 容器所看到的IP与其别人所看到的IP是相同的。
从中咱们得到的启示
与独自运用Docker比较,k8s网络模型更适合DDS。DDS参与者交流其IP地址以进行点对点通讯,因而DDS在没有NAT的网络上能够更好地作业。
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应用程序的特定阐明和装备。假如您对此主题感爱好,请检查一下!
关于作者
Kyoungho An是Real-Time Innovations(RTI)的高档研讨工程师。他在分布式实时嵌入式体系方面具有10年的经历。他的研讨爱好包含发布/订阅中间件,以及分布式体系的布置和监督。他曾担任首席研讨员,领导过多个由DOD和DOE赞助的研讨项目。他在期刊和会议上宣布了针对分布式根据事情的体系,中间件和网络物理体系的研评论文。他具有博士学位。范德比尔特大学计算机科学博士学位。