当前位置: 首页 > 科技观察

Kubernetes如何为应用程序提供网络和存储?

时间:2023-03-14 14:56:04 科技观察

【.com速译】计算、存储和网络是任何基础设施服务的基础。在Kubernetes中,节点代表为集群中运行的Pod提供这些基本网络和存储资源的计算构建块。网络和存储服务由专为Kubernetes设计的软件定义容器原生插件提供。网络组件支持pod到pod、节点到pod、pod到服务以及外部客户端到服务的通信。Kubernetes遵循插件模式来实现网络服务。Kubenet是默认的网络插件,配置方便。它通常与云提供商一起使用,为节点之间或单节点环境中的通信设置路由规则。Kubernetes可以支持许多基于容器网络接口(CNI)规范的插件,该规范定义容器的网络并在删除容器时处理网络资源。CNI有很多实现,包括Calico、Cilium、Contiv和WeaveNet。CNI规范还支持公共云中可用的虚拟网络,从而将网络拓扑和子网扩展到Kubernetes集群。一些CNI兼容的网络插件(例如Calico)通过隔离pod来执行策略,从而执行严格的路由策略。他们将类似防火墙的规则引入到Kubernetes集群的pod和命名空间中。Kubernetes存储持久化存储通过持久卷暴露给Kubernetes。Pod通过持久卷声明使用卷。存储管理员配置存储资源的方式来自现有的网络附加存储(NAS)、存储区域网络(SAN)、直连存储(DAS)、固态硬盘(SSD)、非易失性内存标准(NVMe)或闪存磁盘阵列以创建持久卷。开发人员和DevOps团队通过与Pod关联的持久卷声明获取大量持久卷。Kubernetes带有存储原语,可以从现有节点公开存储。使Pod可以访问底层存储的卷类型就是这样一种原始类型。卷类型的示例包括emptyDir和hostPath。它们用于特定用例:emptyDir用于暂存空间,hostPath使本地卷可用于pod。但由于与节点紧耦合,不具备高可用和容错能力。覆盖存储层聚合来自块设备、NAS和SAN的存储卷,将外部存储暴露给Kubernetes对象。为了提供高可用性和容器原生存储功能,Kubernetes引入了插件,允许存储提供商将他们的平台暴露给容器化的工作负载。来自公共云提供商的块存储、基于NFS和GlusterFS的分布式文件系统以及一些商业存储平台在Kubernetes的上游开源发行版中都有插件。存储管理员根据性能和速度为每种类型的存储引擎创建存储类。可以从这些存储类为不同类型的工作负载创建持久卷和声明。例如,关系数据库管理系统(RDBMS)可以与更高的每秒输入/输出操作数(IOPS)存储类相关联,而内容管理系统(CMS)可以针对具有不同存储类的分布式存储引擎。图1.Kubernetes的叠加存储:将存储暴露给pod和容器。与CNI类似,Kubernetes社区通过容器存储接口(CSI)定义了存储规范,鼓励采用标准、可移植的方法来实现和使用存储服务。为扩展Kubernetes而构建的轻量级网络堆栈源自Borg,专为超大规模工作负载而设计。其现代架构确保基础设施资源的最佳利用。额外的工作节点可以很容易地添加到现有集群中,几乎不需要配置更改。工作负载可以立即利用新节点的CPU、内存和存储资源。将一组相关容器组合成一个pod并将其视为部署和扩展单元的想法可以带来更好的性能。例如,将Web服务器和缓存容器放在同一个pod中可以减少延迟并提高性能。Pod中的容器共享相同的执行上下文,使它们能够使用进程间通信,从而减少开销。属于同一个ReplicaSet和部署的Pod可以快速扩展。在几秒钟内将部署扩展到数百个pod。节点上的Pod可以根据资源能力和所需的配置状态进行调度。如果配置Horizo??ntalPodAutoscaler(HPA),Kubernetes可以自动扩展部署规模。在弹性基础设施环境中运行时,Kubernetes可以使用ClusterAutoscaler在集群中添加节点和从集群中删除节点。结合HPA,该技术可以有效地管理工作负载和基础设施的动态自动扩展。Kubernetes的轻量级网络堆栈和服务发现专为大规模环境而设计。它们可以处理数以万计的服务公开的端点,供内部和外部使用。Kubernetes生态系统和社区不断创新,使该平台适合超大规模工作负载。原标题:HOWKUBERNETESPROVIDESNETWORKINGANDSTORAGETOAPPLICATIONS,作者:JanakiramMSV