---
title: 架构
description: "Kubernetes+Docker方案用于容器云场景。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/twp/kunpengcpfs_19_0013.html
sourcePath: /source/zh/kunpengcpfs/twp/kunpengcpfs_19_0013.html
indexId: a8d0d6d782a83801ef5e4b50a4ba2fa8cec24a1d245c0a3bf5614b0eb722038251
---
# 架构

Kubernetes+Docker方案用于容器云场景。

Linux container技术是通过与主机共用内核，结合内核的cgroup和namespace实现的一种虚拟化技术，极大的减少了对主机资源的占用且具有较快的启动速度。Docker就是一个Linux container引擎技术，实现应用的打包、快速部署等。Docker通过Linux Container技术将App变成一个标准化的、可移植的、自管理的组件，实现了应用的build once，run everywhere。Docker技术特点是：应用快速发布、应用部署和扩容简单、更高的应用密度、应用管理更简单。

Kubernetes将Docker容器宿主机组成集群，统一进行资源调度，自动管理容器生命周期，提供跨节点服务发现和负载均衡；更好地支持微服务理念，划分、细分服务之间的边界，比如Label、Pod等概念的引入。

Kubernetes集群由Master和Node组成，其架构轻量，迁移方便，部署快捷，插件化，可扩展。架构图如图1所示。

图1 Kubernetes和Docker容器场景架构


**表1 Kubernetes和Docker容器场景各类节点说明**

| 名称 | 说明 |
| --- | --- |
| Pod | Pod是能够创建、调度和管理的最小部署单元，是一组容器的集合，而不是单独的应用容器。Pod对应于合设在一起的一组应用，它们运行在一个共享的应用上下文中，同一个Pod里的容器共享同一个网络命名空间，IP地址及端口空间和卷。从生命周期来说，Pod是短暂的而不是长久的应用。Pod被调度到节点，保持在这个节点上直到被销毁。 |
| API服务器 | 负责暴露Kubernetes API，不管是kubectl还是API调用来操作Kubernetes集群各种资源，都是通过kube\-apiserver提供的接口进行操作的。 |
| kube\-控制器和管理器 | 负责整个Kubernetes的管理工作，保证集群中各种资源的状态处于期望状态，当监测到集群中某个资源状态不正常时，管理控制器会触发对应的调度操作，主要由以下几部分组成： 节点控制器（Node Controller） 副本控制器（Replication Controller） 端点控制器（Endpoints Controller） 命名空间控制器（Namespace Controller） 身份认证控制器（Service Accounts Controller） |
| 调度器 | 负责Kubernetes集群的具体调度工作，接收来自于管理控制器（kube\-controller\-manager）触发的调度操作请求，然后根据请求规格、调度约束、整体资源情况等因素进行调度计算，最后将任务发送到目标节点的kubelet组件执行。 |
| etcd | etcd是一款用于共享配置和服务发现的高效KV存储系统，具有分布式、强一致性等特点。etcd用于存储Kubernetes所有需要持久化的数据。 |
| kubelet | kubelet是Node节点上最重要的核心组件，负责Kubernetes集群具体的计算任务，具体功能包括： 监测Scheduler组件的任务分配。 挂载Pod所需Volume。 下载Pod所需Secrets。 通过与docker daemon的交互运行docker容器。 定期执行容器健康检查。 监测、报告Pod状态到kube\-controller\-manager组件。 监测、报告Node状态到kube\-controller\-manager组件。 |
| kube\-proxy | kube\-proxy主要负责Service到Pod实例的请求转发及负载均衡的规则管理。 |
