一、容器技术

一、容器介绍

        运行在那些虚拟机里的应用程序会执行虚拟机操作系统的系统调用, 然后虚 拟机内核会通过管理程序在宿主机上的物理来CPU执行x86指令。
        多个容器则会完全执行运行在宿主机上的同一个内核的系统调用, 此内核是唯 一一个在宿主机操作系统上执行x86指令的内核。 CPU也不需要做任何对虚拟机能 做那样的虚拟化。
1、 容器实现隔离机制
        有两个机制可用:第一个是 Linux 命名空间, 它使每个进程只看到它自 己的系统视图(文件、进程、网络接口、主机名等);第二个是 Linux 控制组 (cgroups), 它限制了进程能使用的资源量 (CPU 、 内存、 网络带宽等)。
常见的命名空间:
• Mount Cmnt)
• Process ID (pid)
• Network (net)
• Inter-process communicaion (ipd)
• UTS
• User ID (user)
        命名空间主要是限制进程可以见到的资源信息,而 cgroups Linux 内核功能, 它被用来限制 个进程或者 组进程的资源使用。 个进程的资源(CPU、 内存、 网络带宽等)使用量不能超出被分配的量。
2、 Docker容器平台
        Docker是第一个使容器能在不同机器之间移植的系统。 它不仅简化了打包应用的流 程, 也简化了打包应用的库和依赖, 甚至整个操作系统的文件系统能被打包成一个 简单的可移植的包, 这个包可以被用来在任何其他运行 Docker 的机器上使用。
        
        与在虚拟机中安装操作系统得到一个虚拟机镜像, 再将应用程序打包到镜像里, 通过分发整个虚拟机镜像到主机, 使应用程序能够运行起来类似, Docker 也能够 达到相同的效果, 但不是使用虚拟机来实现应用隔离, 而是使用 Linux 容器技术来达到和虚拟机相同级别的隔离。 容器也不使用庞大的单个虚拟机 镜像, 它使用较小的容器镜像。
        基于 Docker 容器的镜像和虚拟机镜像的一个很大的不同是容器镜像是由多层构 成, 它能在多个镜像之间共享和征用。 如果某个已经被下载的容器镜像已经包含了 后面下载镜像的某些层, 那么后面下载的镜像就无须再下载这些层。
        Docker 是一个打包、 分发和运行应用程序的平台。 正如我们所说, 它允许将你 的应用程序和应用程序所依赖的整个环境打包在一起。三个主要概念:
(1) 镜像 : Docker镜像里包含了你打包的应用程序及其所依赖的环境。 它包含 应用程序可用的文件系统和其他元数据, 如镜像运行时的可执行文件路径。
(2) 镜像仓库 : Docker镜像仓库用于存放Docker镜像, 以及促进不同人和不同 电脑之间共享这些镜像。
(3) 容器:  Docker容器通常是 个Linux容器, 它基于Docker镜像被创建。 个运行中的容器是 个运行在Docker主机上的进程, 但它和主机, 以及所有 运行在主机上的其他进程都是隔离的。 这个进程也是资源受限的, 意味着它 只能访问和使用分配给它的资源(CPU、 内存等)
镜像层:
        Docker镜像由多层构成。 不同镜像可能包含完全相同的层, 因 为这些Docker镜像都是基于另一个镜像之上构建的, 不同的镜像都能使用相同的父 镜像作为它们的基础镜像。 这提升了镜像在网络上的分发效率, 当传输某个镜像时, 因为相同的层已被之前的镜像传输, 那么这些层就不需要再被传输。
        层不仅使分发更高效, 也有助于减少镜像的存储空间。 每一层仅被存一 次, 当 基于相同基础层的镜像被创建成两个容器时, 它们就能够读相同的文件。 但是如果 其中一个容器写入某些文件, 另外一个是无法看见文件变更的。 因此, 即使它们共 享文件, 仍然彼此隔离。 这是因为容器镜像层是只读的。 容器运行时, 一个新的可 写层在镜像层之上被创建。 容器中进程写入位于底层的一个文件时, 此文件的一个 拷贝在顶层被创建, 进程写的是此拷贝。
容器镜像可移植性的限制
        理论上, 一个容器镜像能运行在任何一个运行Docker的机器上。 但有一个小警 告 一—一个关于运行在一台机器上的所有容器共享主机Linux内核的警告。 如果一 个容器化的应用需要一个特定的内核版本, 那它可能不能在每台机器上都工作
        和Docker一样, rkt也是一个运行容器的平台, 它强调安全性、 可构建性并遵 从开放标准。 它使用OCI容器镜像, 甚至可以运行常规的Docker容器镜像。容器平台并非docker一家。
二、k8s介绍
1、k8s概念
        Kubernetes 个软件系统,它允许你在其上很容易地 部署 管理容器 化的应 它依赖于 Linux 容器 的特性 来运行异 应用, 无须知道这些应用 的内 部详情 也不需要手动将这些应用部署到 每台 机器
        Kubernetes 使你在数以千计的电脑节点上 运行软 件时 就像 有这些 点是单个 大节点一样。它将底层基础设施抽象,这样做同时简化了应用的开发、部署, 对开发和运维团队的管理。
        整 个系统由 个主节点和若干 个工作节点组成 开发者把 个应用列表提 交到主节点,k ub ernetes 会将它们部署 到集群的工作节点。
        Kubernetes 可以被 当作集群的一 个操作系统来 看待。它降 低了开发者不得 不在他们的应用里实现 些和基础设施相关服务的心智负担。他们现在依赖于 ub emetes 来提供这些服务,包括服务发现、扩容、负载均衡、自恢复,甚至领导者的选举
2、 Kubernetes 集群架构
        在硬件级 别, Kubernetes 集群由很多节点组成,主节点和工作节点:
        主节点 ,它 承载 Kubernetes 控制和管理整个集群系统的控制面板
        工作节点,它们运行用户实际部署的应用
控制面板
控制面板用于控制集群并使它工作。它包含 个组件,组件可以运行在单个主 节点上或者通过副本分别部署在多个主 以确 保高可用性 , 这些组件是
Kubernetes API 服务器,你和其他控制面板组件都要和它通信
Scheculer ,它 调度你的应用(为应用的每个可部署组件分配一 个工作节 点〕
Controller Manager ,它执行 群级别的功能,如复制组件、持续跟踪工作节点 处理节点失败
etcd ,一个可靠的分布式数据存储,它能持久化存储集群配置
制面板的组件持有 井控 集群 状态,但是它们 不运行 你的应用程 序。这是由工作节点完成的
工作节点
工作节点是运行容器化应用的机器。运行、监控和 理应用服务的任务是由以
下组件完成的
Docker 、时 :gjG 他的 容器类型
Kubelet ,它与 API 务器通信,并管理它 所在节点的容器
Kubernetes Service Proxy (kube proxy ) ,它负责组件之间的负载均衡网络流量
3、在k8s中运行应用
        为了在 Kubernetes 中运行应用,首先需要将应用打包进 个或多个容器镜像, 再将那些镜 像推送到 镜像仓库,然后将应用的描述发布到 Kubemetes API 服务器。
         该描述 包括诸如容器 镜像或者包含应用程序组 件的容器镜像、这些组件如何相 互关联,以及 哪些组件 需要同 时运行在同 一个节点上和哪些组 件不需要同时运行 信息。此外,该描述还包括哪些组件为内部或外部客户提供服务且应该通过单个 IP 地址 暴露 ,并使其他组件可以发现。
        当API 服务器处理 应用的描述 时,调度器调度指定组的容器到可用的工作节点 上,调度是基于每组所需的计算资源,以及调度时每个节点未分配的资源。然后, 那些节点上的 ubelet 指示容器运行时(例如 Docker )拉取所需的镜像并运行容器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值