Containers(容器):
容器是镜像的运行实例 。我们可以通过docker命令进行如下操作:
- 创建、运行、停止、移动或者删除容器
- 将容器连接到一个或多个网络(Network)
- 向容器添加存储(Volume)
- 根据容器的当前状态创建新的镜像(Image)
Docker Registries用来保存和管理容器镜像 。Docker Hub是任何人都可以使用的公共的Docker Register , 默认情况下Docker被配置为在Docker Hub上寻找镜像 。当我们使用docker pull或docker run命令时 , 所需的镜像就会从我们配置的Docker Register拉取到本地 。当我们使用docker push命令时 , 我们自己的镜像会被推到我们配置的Docker Register 。
1.4 Docker的优势
(1)可以在云平台之间无缝迁移你的应用
(2)消除环境的不一致
(3)高效的分发你的应用
(4)易于扩展应用程序
(5)轻量级
(6)启动速度快
(7)易于维护
正是docke的以上特性和优势 , docker获得了越来越多的开发者的青睐 。然而 , 随着应用程序越来越复杂 , 单个应用程序跨越和使用多个容器越发平常 , 如何协调和管理这些容器成为一个棘手的问题:
- 多个容器之间如何协调和调度?
- 应用程序中的不同的容器之间如何彼此通讯?
- 多个容器执行个体的规模如何调整?
二、kubernetes2.1 Kubernetes简介
Kubernetes是由google在2014年开源的生产级别的容器编排系统 。Kubernetes不仅是一个容器编排系统 , 还是一个微服务或者云原生(弹性伸缩)的平台 , Kubernetes提供了服务注册与发现、负载均衡、服务自愈、横向扩展、日志监控、集群自愈和容错、弹性伸缩、存储卷挂载的能力 。
2.2 Kubernetes的架构
一个 Kubernetes 集群由一组被称作节点的机器组成 。节点分为主节点和工作节点 。每个集群至少要有一个主节点和工作节点 。
主节点管理集群中的工作节点和 Pod。多个主节点用于为集群提供故障转移和高可用性 。工作节点负责托管应用程序组件中的 Pod 。
这张图表展示了包含所有相互关联组件的 Kubernetes 集群 。

文章插图
Control Plane Components(控制平面组件): Control Plane Components组件提供了集群的控制平面 , 它们负责集群的全局活动 , 包括:调度、检测和响应集群事件等功能(例如 , 当不满足部署的replicas字段时 , 启动新的pod)
- kube-apiserver: kube-apiserver是主节点上负责提供 Kubernetes API 服务的组件 , 它是 Kubernetes 控制面的前端 。kube-apiserver用于控制集群的所有REST命令的入口点 。它处理REST请求、验证它们并执行相应的业务逻辑 。kube-apiserver 在设计上考虑了水平扩缩的需要 。换言之 , 通过部署多个实例可以实现扩缩 。
- etcd: etcd 是兼具一致性和高可用性的key-value数据库 , 可以作为保存 Kubernetes 所有集群数据的后台数据库 。
- Controller-manager: Controller-manager运行Contrller来处理集群中的常规任务 。这些控制器包括:节点控制器(Node Controller): 负责在节点出现故障时进行通知和响应 。副本控制器(Replication Controller): 负责为系统中的每个副本控制器对象维护正确数量的 Pod 。端点控制器(Endpoints Controller): 填充端点(Endpoints)对象(即加入 Service 与 Pod) 。服务帐户和令牌控制器(Service Account & Token Controllers): 为新的namespace创建默认帐户和 API 访问令牌
- Scheduler: 该组件负责监视那些新创建的未指定运行节点的 Pod , 并选择节点让 Pod 在上面运行 。Scheduler组件的调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置等 。
- cloud-controller-manager:cloud-controller-manager是 kubernetes 1.8 的 alpha 特性 。在未来的kubernetes版本中 , 这是将 Kubernetes 与任何其他云集成的最佳方式 。cloud-controller-manager允许您将集群链接到cloud provider的API中 , 并将与云平台交互的组件与仅与集群交互的组件分离开来 。当然了 , 如果你在自己的环境中运行 Kubernetes , 或者在本地计算机中运行学习环境 , 所部署的环境中不需要cloud-controller-manager 。
推荐阅读
- 苹果12和12pro参数对比表,苹果12和12pro参数对比尺寸?
- 华为mate40pro+对比荣耀magic3至臻版,华为mate40pro和荣耀Magic3?
- 麻黑茶功效与作用,倚邦与麻黑熟茶的对比
- IT工程师都需要掌握的容器技术之Docker基本用法
- 发型|?“化妆、发型”对女人来说有多重要?看完这些对比照后,我悟了
- 柏翠面包机各款对比 柏翠面包机性价比最高的是哪一款
- 谏逐客书对比论证举例分析,分析《谏逐客书》的论证结构?
- iPhone|对比苹果13!iPhone 14 Pro新外形曝光:边角设计更圆 打孔屏扎眼
- 项目推荐:利器—一个开源工具探究Docker 镜像的世界
- 使用Docker来构建、运行、发布微服务
