---
title: 组件原理
description: "Kubernetes是Google开源的容器集群部署和管理系统，是PaaS领域实施的行业标准。它构建在容器技术之上，为容器化的应用提供资源调度，部署运行，服务发现，扩容缩容等一整套功能，本质上是基于容器技术的调度平台，架构图如图1所示。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0015.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0015.html
indexId: b32127451e793e48cc125e7b229db6def1066712ac97203fe991ebd59a78963851
---
# 组件原理

#### Kubernetes

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

Kubernetes主要功能：

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

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

图1 Kubernetes组件架构图


#### 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网络。
