随着Kubernetes(简称为K8S)最近因为其程式化在腥风血雨中被加冕为胜利者,但也被恰如其分地命名为“Container战”,Container平台和云原生成为了热门话题。对于管理和编排,现在本机支持Kubernetes的Docker升起了投降的白旗。 Docker仍然是首选的Container引擎。这意味着大多数云原生系统将以互补的方式包含两个平台。
开放网络系列的前3个博客涵盖了开放网络、SDN以及来自ONF的CORD的基础知识。这些都确认为是在基础设施的三大支柱网络领域内。在5月份,随着KubeCon和CloudNativeCon(这证明Con可以添加到任何地方)在欧洲面世,现在也是时候了解一下开源和开放网络领域的存储和计算。在深入研究之前,我将简要介绍一下云原生的概念,并概述Container和虚拟机之间的基本区别。

云原生与Container
运行云原生项目的云原生计算基金会(CNCF)表示,“云原生技术使组织能够在现代动态环境(如公共云、私有云和混合云)中构建和运行可扩展应用程序。Container、服务网格、微服务、不可变基础设施和声明性APIS就是典型的程序。
通俗地说,云原生是一个基于Container的环境,其目的是开发和运行带有服务的应用程序,所有程序都装在这些Container中。最近,正如会议线路所示,各组织正以极快的速度接受这一点;其包括降低成本、缩短产品上市时间和简化管理的优势,因此其优势显而易见。

要解释Container,我们首先需要了解虚拟机是什么。以上面的图像为例,我们将服务器作为基础设施层,除此之外我们有一个虚拟机管理程序,它从该服务器硬件中添加了一个抽象层。管理程序层之上的任何程序都不会发现服务器。 在虚拟机管理程序之上,我们有虚拟机。每个虚拟机都有围绕其应用程序的自己的客户操作系统。在这一方面利弊共存,因为它不仅意味着每个虚拟机可以使用不同的操作系统,也意味着这将会产生大量运营费用。

再次,以上面的图像为例,我们将服务器作为硬件基础设施层,但除此之外我们现在拥有操作系统。虚拟机和Container之间的一个重大区别是Container与所有其他Container共享主机系统的内核。在操作系统层之上,我们有被称为Docker的Container引擎。该引擎可提高灵活性、便携性以及创建和移动Container的速度。最后一层是Container本身。我们介绍完基础知识之后,接下来继续解释Docker在基于Container的环境中所扮演的角色。
DOCKER
为免生疑惑,我在此声明我们只关注Docker引擎。Docker Inc.拥有许多与之相关的不同技术,但我们将专注于支持构建、运输和运行基于Container的环境所涉及的工作流的引擎。
Docker引擎是一个客户端 – 服务器应用程序,它有三个主要组成部分。它们是:
服务器 – 它是一个长时间运行的后台进程,被称为守护程序,用于响应对其他服务的请求。在Docker中,这被称为dockerd命令。
REST API – 它指定与守护程序通信的接口程序,而守护程序将依次指示它下一步做什么。
CLI – 命令行界面。 这是方程客户端。 被称为docker命令。

客户端CLI使用REST API来控制守护程序(服务器)并对其执行操作,这可以通过指导CLI命令或脚本来完成。守护程序完成构建、运行和分发DockerContainer所涉及的大部分繁重工作。Dockers Swarm可以用作新创建的DockerContainer的管理和编排系统,但是,正如我之前提到的,由于Kubernetes的广泛应用,我们将为这个特定的任务研究一下。
KUBERNETES
既然我们已经创建了DockerContainer,我们希望能够在多台机器上运行多个这样的Container。 我们需要弄明白这些Container是如何相互交流、如何处理存储要求、如何在Container之间分配负载、甚至如何在需求变化时增减新Container。Kubernetes,开始行动!
Kubernetes(在希腊语意为“舵手”或“驾驶员”)是首选的开源Container协调器,2014年由谷歌公司创建,但现在由CNCF运营。从本质上来说,它是一个用于跨机器集群运行和协调的Container应用程序系统,提供可扩展性、高可用性和最重要的可预测性。你或许会问它是如何运行的呢?

最高抽象层次是Kubernetes集群。这是一组运行Kubernetes的服务器。每个集群都需要有一个可以在集群中进行命令和控制的服务器,这被称为主服务器。就像在Highlander一样,只能有一个主服务器。主服务器充当集群的大脑,决定如何分配资源以及进行健康检查,并且进行调度以及最重要的协调通信。剩余的服务器被称为节点,由于主服务器的存在,它们可以自由专注于接受和运行工作负载、创建或销毁Container等等。
如果我们想深入挖掘节点,可以了解一下pods。它们是可以被创建的最基本的Kubernetes对象,由一个或多个Container组成。但对于初学者而言,我认为我们应该暂时不用研究它。
最后的见解
仅用一千字很难详述类似基于Container一样复杂的环境,但我们将在未来几个月内为其专门写一篇博客。描述环境如何在裸机、开放网络的白盒世界和SDN中运作尤其不易。我还将介绍SnapRoute最新发布的云原生网络操作系统(CN-NOS),它利用了这种有着嵌入式Kubernetes的Container化的微服务架构。正如我们在Container世界中看到的那样,该NOS也许会能将脆弱静态的网络转换为敏捷动态的网络。
与往常一样,我非常乐意与您分享更多资源或获取有关产品或SDN的更多技术信息。只要你需要,你也可以在这里浏览我们的开放网络产品。
Slán go fóill,
Barry
专业术语
| IoT – 物联网
5G – 第5代蜂窝移动通信 Linux – 一系列免费的开源操作系统 ONF – 开放网络基金会 OCP – 开放计算项目 SDN – 软件定义网络 Edgecore – 白盒ODM Quanta – 白盒OEM Data Plane(数据平面) – 处理数据包转发 Control Plane(控制平面) – 网络配置的管理界面 ODM – 原始设计制造商 OEM – 原始设备制造商 Cumulus Linux – 开放式网络操作系统 Pluribus – 提供无控制器SDN结构的白盒操作系统 Pica8 – 基于开放标准的操作系统 Big Switch Networks – 云和数据中心网络公司 IP Infusion – 白盒网络操作系统 OS – 操作系统 White Box(白盒) – 脱离商业芯片运行的裸金属装置 ASIC – 专用集成电路-应用 CAPEX – 资本支出 OPEX – 运营支出 MAC – 媒体访问控制 Virtualization(虚拟化) – 创建包括硬件在内的虚拟版本 Load Balancing (负载平衡 )- 将传入网络流量高效分配到后端服务器 Vendor Neutral (供应商中立) – 标准化、非专有方法以及无偏见的业务实践 CORD – 中央办公室重新设计为数据中心 SD-WAN – 软件定义的广域网 NFV – 网络功能虚拟化 RTBrick – Web规模的网络操作系统 Snap Route – 云原生网络操作系统 MPLS – 多协议标签交换 DoS – 拒绝服务攻击 ONOS – –ONF控制器平台 Linux基金会 – MEC – 多访问边缘计算 Distributed Cloud–分布式云 COMAC – 融合多路访问和核心 SEBA – SDN支持宽带接入 TRELLIS – 用于中心办公室的主干和枝干交换结构 VOLTHA – 虚拟OLT硬件抽象 R-CORD—住宅CORD M-CORD – 移动CORD E-CORD – 企业CORD PON – 无源光网络 G.FAST – 用于短于500米的本地环路的DSL协议 DOCSIS – 有线数据传输服务接口规范 BGP – 边界网关巡检协议 OSPF – 开放最短路径优先协议 DSL – 数字用户线路 Container –Linux主机上的隔离执行环境 Kubernetes – 开源Container编排系统 Docker – 执行操作系统层级虚拟化的程序 Cloud Native – 用于描述基于Container的环境的术语CNCF – 云原生计算基金会 API – 应用程序接口 REST API – 代表性状态转移应用程序编程接口 CLI – 命令行界面 VM – 虚拟机 |
