• docker和k8s


    1、docker不是容器,而是创建容器的工具;

    容器和虚拟机

    clip_image001

    clip_image002

    镜像、仓库、容器

    clip_image003

    clip_image004

    clip_image005

    2、k8s

    一个K8S系统,通常称为一个K8S集群(Cluster)

    这个集群主要包括两个部分:

    • 一个Master节点(主节点)
    • 一群Node节点(计算节点)

    一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

    深入来看这两种节点。

    首先是Master节点。

    Master节点包括API Server、Scheduler、Controller manager、etcd。

    API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

    Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

    Controller manager负责管理控制器,相当于“大总管”。

    然后是Node节点

    Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod

    Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

    Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

    Kube-proxy,主要负责为Pod对象提供代理。

    Fluentd,主要负责日志收集、存储与查询。

    3、

    Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。

    k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

    与传统技术对比:
         接下来我们看两张经典的图:

    一、从虚拟化角度:

    image

    图1

            上图是Docker容器(可用k8s管理的玩意儿)与传统虚拟化方式的不同之处,传统的虚拟技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。而Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。 每个集群有多个节点,每个节点可,我们的kuberbete就是管理这些应用程序所在的小运行环境(container)而生。
    二、从部署角度

    image

    图2

            注意,大家别把这幅图与上面Docker的那张图混淆了,图1是从虚拟化角度,说明了为应用提供必要的运行环境所需要做的虚拟化操作(即:传统:虚拟出的虚拟机装操作系统、Docker:容器引擎管理下的容器)。

            而图2是在这些具体运行环境上进行真实应用部署时的情况,传统方式是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,无法做到App之间隔离,当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中(就像图1上半部分那样),但这样太过繁重,故比虚拟机更轻便的Docker技术出现,现在我们通过部署Container容器的技术来部署应用,全部Container运行在容器引擎上即可。既然嫌弃虚拟机繁重,想用Docker,那好,你用吧,怎么用呢?手动一个一个创建?当然不,故kubernetes技术便出现了,以kubernetes为代表的容器集群管理系统,这时候就该上场表演了。

            说白了,我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。希望我这篇文章中简单的描述能让你对两者有所理解和认识。
    ————————————————
    原文链接:https://blog.csdn.net/yanghaolong/article/details/86680282

  • 相关阅读:
    MAC OSX 下 使用openssl 命令 生成RSA公钥和私钥
    iOS 高效开发-----延时执行用GCD
    iOS 高效开发-----实现description 方法 (续)
    iOS 高效开发-----实现description 方法
    ios 高效开发-----字面量
    利用脚本打包的动态库 在打包发布时出现得问题解析 ERROR ITMS-90362等
    打包framework 涉及到得架构问题
    XCode 6 制作framework
    【Mac软件推荐】终端常用者的萌物Go2Shell
    项目总结吧
  • 原文地址:https://www.cnblogs.com/yukarin/p/12259467.html
Copyright © 2020-2023  润新知