zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    基于分布式锁解决定时任务重复问题
    基于Redis的Setnx实现分布式锁
    基于数据库悲观锁的分布式锁
    使用锁解决电商中的超卖
  • 原文地址:https://www.cnblogs.com/yukarin/p/12259467.html
Copyright © 2011-2022 走看看