更新时间:2021-08-05 GMT+08:00
分享

组件原理

Kubernetes

Kubernetes(K8s)是Google开源的容器集群部署和管理系统,是PaaS领域实施的行业标准。它构建在容器技术之上,为容器化的应用提供资源调度,部署运行,服务发现,扩容缩容等一整套功能,本质上是基于容器技术的调度平台,架构图如图1所示。

K8s主要功能:

  • 基于容器的应用部署、维护和滚动升级。
  • 负载均衡和服务发现。
  • 跨机器和跨地区的集群调度。
  • 自动伸缩。
  • 无状态服务和有状态服务。
  • 广泛的Volume支持。
  • 插件机制保证扩展性。

K8s发展非常迅速,已经成为容器编排领域的领导者。

图1 K8s组件架构图

Docker

Docker容器本质上是HostOS主机上的进程,Docker通过namespace和Cgroups实现了资源隔离及限制。Linux内核实现namespace的一个目的就是实现轻量级虚拟化服务,在同一个namespace下的进程可以感知彼此的变化,而对外界的进程一无所知。在同一namespace内可实现用户、主机名与域名、信号量、网络、文件系统及进程的隔离。Cgroups可以限制、记录任务组使用的物理资源(包括CPU、Memory和IO),为容器实现虚拟化提供基础。Cgroups提供四大功能:

  • 资源限制:Cgroups可以对任务使用的资源总额进行限制。如设定运行时使用内存的上限。
  • 优先级分配:通过分配的CPU时间片和IO带宽,控制任务对资源优先级的分配。
  • 资源统计:Cgroups可以统计系统的资源使用量,如CPU使用时长、内存使用量等。
  • 任务控制:Cgroups可以对任务执行挂起、恢复等操作。
图2 Docker容器架构图

Docker使用典型C-S架构模式,用户通过Docker Client与Docker Daemon建立通信并将请求发送给后者,Docker Client是一个泛称,用来向Docker Daemon发起请求,执行相应的容器管理操作。它既可以是命令行工具Docker,也可以是Docker API客户端。Docker daemon是Docker最核心的后台进程,它负责响应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。Docker镜像管理模块统称为Image Management,支持从Docker Registry中下载镜像,并将镜像文件存储于文件系统中。Docker网络支持Host物理网络、虚拟网桥以及Overlay网络。

分享:

    相关文档

    相关产品

close