Container, DOCKER与KUBERNETES :初学者指南

Container, DOCKER与KUBERNETES :初学者指南

随着Kubernetes(简称为K8S)最近因为其程式化在腥风血雨中被加冕为胜利者,但也被恰如其分地命名为“Container战”,Container平台和云原生成为了热门话题。对于管理和编排,现在本机支持Kubernetes的Docker升起了投降的白旗。 Docker仍然是首选的Container引擎。这意味着大多数云原生系统将以互补的方式包含两个平台。

开放网络系列的前3个博客涵盖了开放网络、SDN以及来自ONF的CORD的基础知识。这些都确认为是在基础设施的三大支柱网络领域内。在5月份,随着KubeC​on和CloudNativeCon(这证明Con可以添加到任何地方)在欧洲面世,现在也是时候了解一下开源和开放网络领域的存储和计算。在深入研究之前,我将简要介绍一下云原生的概念,并概述Container和虚拟机之间的基本区别。

 随着Kubernetes(简称为K8S)最近因为其程式化在腥风血雨中被加冕为胜利者,但也被恰如其分地命名为“Container战”,Container平台和云原生成为了热门话题。对于管理和编排,现在本机支持Kubernetes的Docker升起了投降的白旗。 Docker仍然是首选的Container引擎。这意味着大多数云原生系统将以互补的方式包含两个平台。 开放网络系列的前3个博客涵盖了开放网络、SDN以及来自ONF的CORD的基础知识。这些都确认为是在基础设施的三大支柱网络领域内。在5月份,随着KubeC​on和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 – 虚拟机

 

云原生与Container

 

运行云原生项目的云原生计算基金会(CNCF表示,“云原生技术使组织能够在现代动态环境(如公共云、私有云和混合云)中构建和运行可扩展应用程序。Container、服务网格、微服务、不可变基础设施和声明性APIS就是典型的程序。

 

通俗地说,云原生是一个基于Container的环境,其目的是开发和运行带有服务的应用程序,所有程序都装在这些Container中。最近,正如会议线路所示,各组织正以极快的速度接受这一点;其包括降低成本、缩短产品上市时间和简化管理的优势,因此其优势显而易见。

eps-machine-virtualization-7

 

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

containers

 

再次,以上面的图像为例,我们将服务器作为硬件基础设施层,但除此之外我们现在拥有操作系统。虚拟机和Container之间的一个重大区别是Container与所有其他Container共享主机系统的内核。在操作系统层之上,我们有被称为Docker的Container引擎。该引擎可提高灵活性、便携性以及创建和移动Container的速度。最后一层是Container本身。我们介绍完基础知识之后,接下来继续解释Docker在基于Container的环境中所扮演的角色。

 

DOCKER

 

为免生疑惑,我在此声明我们只关注Docker引擎。Docker Inc.拥有许多与之相关的不同技术,但我们将专注于支持构建、运输和运行基于Container的环境所涉及的工作流的引擎。

 

Docker引擎是一个客户端 – 服务器应用程序,它有三个主要组成部分。它们是:

 

服务器 – 它是一个长时间运行的后台进程,被称为守护程序,用于响应对其他服务的请求。在Docker中,这被称为dockerd命令。

 

REST API – 它指定与守护程序通信的接口程序,而守护程序将依次指示它下一步做什么。

 

CLI – 命令行界面。 这是方程客户端。 被称为docker命令。

docker

 

客户端CLI使用REST API来控制守护程序(服务器)并对其执行操作,这可以通过指导CLI命令或脚本来完成。守护程序完成构建、运行和分发DockerContainer所涉及的大部分繁重工作。Dockers Swarm可以用作新创建的DockerContainer的管理和编排系统,但是,正如我之前提到的,由于Kubernetes的广泛应用,我们将为这个特定的任务研究一下。

 

KUBERNETES

既然我们已经创建了DockerContainer,我们希望能够在多台机器上运行多个这样的Container。 我们需要弄明白这些Container是如何相互交流、如何处理存储要求、如何在Container之间分配负载、甚至如何在需求变化时增减新Container。Kubernetes,开始行动!

 

Kubernetes(在希腊语意为“舵手”或“驾驶员”)是首选的开源Container协调器,2014年由谷歌公司创建,但现在由CNCF运营。从本质上来说,它是一个用于跨机器集群运行和协调的Container应用程序系统,提供可扩展性、高可用性和最重要的可预测性。你或许会问它是如何运行的呢?

kubernetes

 

最高抽象层次是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 – 虚拟机

Leave a reply

Your email address will not be published. Required fields are marked *