浅谈容器网络

1.什么是容器网络

容器网络是一种新兴的应用程序沙箱机制,用于家庭桌面和网络规模的 企业网络 解决方案,其概念与虚拟机类似。容器内部与主机和所有其他容器隔离的是一个功能齐全的 Linux 环境,具有自己的用户、文件系统、进程和网络堆栈。容器内的所有应用程序都只能访问或修改容器内可用的文件或资源。

可以同时运行多个容器,每个容器都有自己的安装和依赖项。当应用程序的较新版本可能需要升级依赖项,这可能会导致与服务器上运行的其他应用程序依赖项发生冲突时,这特别有用。与虚拟机不同,容器共享主机资源,而不是完全模拟计算机上的所有硬件,这使得容器比虚拟机更小、更快,并减少了开销。特别是在网络规模应用程序的背景下,容器被设计为虚拟机的替代品,作为微服务架构的部署平台。

容器还具有可移植性的特点,例如Docker这个容器引擎,允许开发者将一个容器及其所有依赖项打包在一起。然后可以下载该容器包。下载后,容器可以立即在主机上运行。

容器网络允许容器与其他容器或主机通信以共享资源和数据。

现代容器网络旨在标准化和优化容器数据流,创建隔离区域,允许大量容器以高效、安全的方式进行通信。已经提出了多个标准来管理容器网络,包括容器网络模型(CNM)和容器网络接口(CNI)。

Docker 和 Kubernetes 等流行的容器平台使用以下网络模型:

  • 无 –最简单的网络模式是环回接口,其中容器不与外部网络通信。
  • 网桥 –内部主机网络,允许同一主机上的容器之间进行通信。
  • 主机 –允许容器与主机共享其网络命名空间,从而实现高速网络。
  • 覆盖 –确保连接到两个不同覆盖网络的容器彼此隔离,并且无法通过本地网桥进行通信。
  • 底层 –将主机接口公开给主机上运行的虚拟机或容器。

2.容器网络如何工作

容器网络是一种虚拟化形式,其概念与虚拟机 (VM) 类似,但也有显着差异。首先,容器方法是操作系统虚拟化的一种形式,而虚拟机是硬件虚拟化的一种形式。

在虚拟机管理程序上运行的每个虚拟机都有自己的操作系统、应用程序和库,并且能够封装持久数据、安装新操作系统、使用与主机不同的文件系统或使用不同的内核版本。

相反,容器是镜像的“运行实例”,是短暂的操作系统虚拟化,它会旋转起来执行一些任务,然后被删除和遗忘。由于容器的短暂性,与需要更大地址空间的虚拟机相比,系统用户运行的容器实例要多得多。

为了创建隔离,容器依赖于两个 Linux 内核功能:命名空间和 cgroup。为了让容器拥有自己的系统视图,并将其与其他资源隔离,为每个资源创建一个命名空间,并且不与其余系统共享。然后,控制组 (Cgroup) 用于监视和限制系统资源,如 CPU、内存、磁盘 I/O、网络等。

3.容器网络的好处

容器正在迅速被采用,取代虚拟机作为微服务平台。

容器有几个主要优点:

  • 与现有工作负载一起运行容器化应用程序: 机器可以在同一基础设施上与传统虚拟机一起运行容器化应用程序,从而提供灵活性和速度。
  • 将可移植性与安全性、可见性和管理相结合: 由于容器的固有设计,它可以通过沙箱、主机资源透明度、任务管理和执行环境可移植性来实现更高的安全性。
  • 轻松利用现有的基础设施和规模: 使用现有的 SDDC 可以避免对基础设施进行成本高昂且耗时的重新架构,从而导致孤岛 - 当不同部门在同一组织内维护自己的 IT 基础设施时,就会出现孤岛。由于每个部门的技术配置存在差异,这种“筒仓效应”在实施组织范围内的 IT 策略和升级时会产生问题。重新集成孤岛是一个成本高昂且耗时的过程,可以通过容器网络来避免。
  • 为开发人员提供与 Docker 兼容的接口: 已经熟悉 Docker 的开发人员可以通过与 Docker 兼容的接口在容器中开发应用程序,然后通过自助管理门户或 UI 进行配置。

4.容器网络模型

容器网络模型(CNM)是Docker提出的一个标准。它已被许多项目(例如 libnetwork)采用,并提供与各种产品的集成,包括Project Calico(Calico 开源)、Cisco Contiv、开放虚拟网络 (OVN)、VMware、Weave 和 Kuryr。

以下是通过实施 CNM 实现的 libnetwork 的主要功能:

  • 网络沙箱 –包含容器网络配置的隔离环境。它作为容器内的网络堆栈工作。
  • 端点 –成对构建的网络接口。它允许您将接口的一端放置在网络沙箱中,另一端放置在指定网络中。它确保端点仅加入一个网络,而多个端点存在于一个网络沙箱中。
  • 网络 –允许相互通信的唯一可识别端点的集合。
  • 用户定义的标签 – CNM 允许您使用标签标志定义标签。这些标签作为元数据在驱动程序和 libnetwork 之间传递。标签使运行时能够通知驱动程序的行为。

 图 1:Libnetwork 提供 Docker 守护进程和网络驱动程序之间的接口。

Libnetwork 是 CNM 规范的规范实现。Libnetwork 提供了 Docker 守护进程和网络驱动程序之间的接口。网络控制器负责将驱动程序与网络配对。每个驱动程序负责管理其拥有的网络,包括向该网络提供的服务,例如 IPAM。每个网络一个驱动程序,多个驱动程序可以与连接到多个网络的容器同时使用。驱动程序被定义为本地驱动程序(内置于 libnetwork 或支持 Docker)或远程驱动程序(第三方插件)。本机驱动程序有 none、bridge、overlay 和 MACvlan。远程驱动程序可以带来任意数量的功能。驱动程序也被定义为具有本地作用域(单主机)或全局作用域(多主机)。

5.容器网络接口

容器网络接口(CNI)是CoreOS提出的标准。它是作为一个最小规范创建的,作为网络插件和容器运行时之间的简单契约。CNI 已被许多项目采用,包括 Apache Mesos、Kubernetes 和 rkt。

以下是 CNI 的主要特征:

  • CNI 使用 JSON 模式来定义 CNI 网络插件所需的输入和输出。
  • CNI 使您能够使用一个容器运行多个插件,该容器连接由不同插件驱动的网络。
  • CNI 在配置 JSON 文件中描述网络,并在调用 CNI 插件后将它们实例化为新的命名空间。
  • CNI 插件可以支持两个命令,用于向网络添加和删除容器网络接口。

图 2:CNI 是向网络添加和删除容器的最小规范。

CNI 是作为一个最小规范创建的,与许多网络供应商工程师一起构建,作为容器运行时和网络插件之间的简单契约。JSON 模式定义了 CNI 网络插件的预期输入和输出。

多个插件可以同时运行,容器加入由不同插件驱动的网络。网络在配置文件中以 JSON 格式进行描述,并在调用 CNI 插件时实例化为新的命名空间。CNI 插件支持两个命令来向网络添加和删除容器网络接口。Add 在创建容器时由容器运行时调用。当删除容器实例时,容器运行时会调用删除。

6.容器网络的类型

目前使用的容器网络有五种类型:它们的特征集中在每个容器的 IP 与每个 Pod 的 IP 模型以及需要网络地址转换 (NAT) 与不需要转换的情况。

  • None: 容器接收网络堆栈;然而,它缺乏外部连接。此模式对于测试容器、为以后的网络连接暂存容器以及分配给不需要外部通信的容器非常有用。
  • Bridge: 在内部主机网络上桥接的容器,并允许与同一主机上的其他容器进行通信。无法从主机外部访问容器。桥接网络是 Docker 容器的默认网络。
  • Host: 此配置允许创建的容器共享主机的网络命名空间,从而授予容器对主机所有网络接口的访问权限。外部网络配置最不复杂,这种类型由于共享网络接口而容易发生端口冲突。
  • Underlay:  Underlay 直接向主机上运行的容器开放主机接口,并且无需端口映射,使其比桥接器更高效。
  • Overlay: 覆盖使用网络隧道在主机之间进行通信,允许容器在托管在不同主机上时就像在同一台计算机上一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/51340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

标题:探索对称二叉树的奥秘

二叉树 题目连接 在计算机科学领域,二叉树是一种常见的数据结构,其灵活性和广泛的应用使得研究不断深入。其中,LeetCode 题目 "101. 对称二叉树" 提供了一个非常有趣且具有挑战性的问题,涉及到二叉树的对称性判断。通…

汽车制造业外发文件时 如何阻断泄密风险?

汽车制造业是我国国民经济发展的支柱产业之一,具有产业链长、关联度高、就业面广、消费拉动大等特性。汽车制造行业景气度与宏观经济、居民收入水平和固定资产投资密切相关。 汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工…

https 的ssl证书过期处理解决方案(lighthttpd)

更换证书:lighthttpd 配置文件位置:/opt/vmware/etc/lighttpd/lighttpd.conf (配置文件的最底部 G快速来到底部) 方案一:阿里云申请免费的证书 这里公司内网环境没有配置域名,可以创建一个临时域名&…

MySQL 触发器

目录 一、触发器概述 二、触发器操作 1、创建触发器 2、查看触发器 3、删除触发器 三、触发器应用 一、触发器概述 MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由时间来触发某个操作,这些时间包括INSERT、UPDATE和DELETE语…

IDEA启动Tomcat两个端口的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录 引出IDEA启动Tomcat两个端口的方式1.编辑配置2.添加新的端口-Dserver.port80833.service里面管理4.启动后进行测试 使用nginx进行反向代理反向代理多个端口运行日志查看启动关闭重启 分布式情况下synchronized失效synchronized锁代码启动tomcat两个端口nginx反向代理JMete…

木叶飞舞之【机器人ROS2】篇章_第二节、turtlebot3安装

没有真实小车的情况下,利用gazebo的仿真,操作小乌龟来学习ros2。废话不多说,直接上命令。 Install Gazebo sudo apt install ros-humble-gazebo-*Install Cartographer 假如前一节未安装源码版本的cartographer,那就安装apt版本…

5.8 汇编语言:汇编高效除法运算

通常情况下计算除法会使用div/idiv这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但…

uniapp 实现切换tab锚点定位到指定位置

1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…

macOS - 安装 Python 及地址

文章目录 Python 官方安装包Pip3Applications - PythonMiniconda多个python环境有多种方式安装 python,比如 Python 官方包、anaconda、miniconda、brew 等 这里记录使用 Python 官方包进行安装,和 miniconda 安装方式,以及安装后 各执行文件、安装包的地址。 明确这些地址后…

Ceph入门到精通-大流量10GB/s LVS+OSPF 高性能架构

LVS 和 LVSkeepalived 这两种架构在平时听得多了&#xff0c;最近才接触到另外一个架构LVSOSPF。这个架构实际上是LVSKeepalived 的升级版本&#xff0c;我们所知道LVSKeepalived 架构是这样子的&#xff1a; 随着业务的扩展&#xff0c;我们可以对web服务器做水平扩展&#xf…

Redis工具类(缓存操作,Object转换成JSON数据)

依赖spring-data-redis-2.4.1.jar Component Data public class RedisUtils {Autowiredprivate RedisTemplate<String, Object> redisTemplate;Resource(name "stringRedisTemplate")private ValueOperations<String, String> valueOperations;/*** 默…

有线耳机插入电脑没声音

有线耳机插入电脑没声音 首先确保耳机和电脑都没问题&#xff0c;那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。

MySQL回表是什么?哪些情况下会回表

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责…

一个滚动框高度动态计算解决方案

需求描述&#xff0c;一个嵌套了很多层div或者其他标签的内容框&#xff0c;而它的外层没有设置高度&#xff0c;或者使用百分比&#xff0c;而本容器需要设置高度来实现滚动&#xff0c;要么写死px高度&#xff0c;但是不能自适应&#xff0c;此时需要一个直系父容器&#xff…

iview时间控件 动态不可选日期 可选择24小时范围内 时间往后退24小时

演示 html 设定 起始时间 触发on-change 方法结束时间 options 动态设置不可选择的日期。 <!-- 起始时间 --> <FormItem :label"$t(startTime)" prop"startTime"><DatePickertransfertype"datetime":placeholder"$t(pleas…

php 系列题目,包含查看后端源代码

一、弱类型比较问题 原则&#xff1a; 1.字符串和数字比较&#xff0c;字符串回被转换成数字。 "admin" 0&#xff08;true) admin被转换成数字&#xff0c;由于admin是字符串&#xff0c;转换失败&#xff0c;变成0 int(admin)0,所以比较结果是ture 2.混合字符串转…

LA@向量组线性相关性

文章目录 向量组线性相关性线性相关线性无关多向量向量组线性相关单向量向量组的线性相关性单位向量向量组线性相关性双向量向量组的线性相关性双向量线性相关的几何意义三向量线性相关的几何意义包含零向量的向量组线性相关概念迁移:线性方程组和线性相关齐次线性方程组和向量…

『C语言入门』分支和循环语句

文章目录 引言一、什么是语句&#xff1f;1.1表达式语句1.2赋值语句1.3函数调用语句1.4复合语句1.5空语句1.6控制语句 二、分支语句2.1 if语句2.1.1基本语法2.1.2使用else语句2.1.3嵌套if语句2.1.4多层if-else语句 2.2 switch语句2.2.1基本语法2.2.2示例2.2.3穿透 三、循环语句…

RD35M22AT、RD35M22BL、RD35M22DL插装式泄压阀

RD28M22AL、RD28M22BL、RD28M22CL、RD28M22DT、RD28M22AT、RD35M22AT、RD35M22BL、RD35M22DL、RD35M22WL插装式泄压阀 此结构在泄压时的压力非常稳定&#xff0c;若使用在低压时,请注意通过流量,不可超过35LPM。结构最大内漏量约(5滴/分, 设定压力的85%) 压力设定达到 210 ba…

数据库——redis过期时间

文章目录 Redis 给缓存数据设置过期时间有啥用&#xff1f;Redis是如何判断数据是否过期的呢&#xff1f;过期的数据的删除策略了解么&#xff1f; Redis 给缓存数据设置过期时间有啥用&#xff1f; 一般情况下&#xff0c;我们设置保存的缓存数据的时候都会设置一个过期时间。…