没有合适的资源?快使用搜索试试~ 我知道了~
1. 提交请求 2. 资源分配 3. 新建容器 4. 资源状态同步
资源详情
资源评论
资源推荐
容器编排
容器编排平台简介
集群化、弹性化和敏捷化是容器应用的显著特点,如何有效地对容器集群进行管理,
是容器技术落地应用的一个重要方面。集群管理工具(编排工具)能够帮助用户以集群的
方式在主机上启动容器,并能够实现相应的网络互联,同时提供负载均衡、可扩展、容错
和高可用等保障。当前关注度和使用率比较高的几种容器编排平台主要包括 Kubernetes、
Apache Mesos、Docker Swarm、Openshift、Rancher 等,其中还不乏有许多公有云厂商均
各自建立了 Kubernetes 服务托管云平台。
Kubernetes
Kubernetesl 是由 Google 基于其内部大规模集群管理系统 Borg
1
发布的开源分布式容
器管理平台, 简称 K8S。Kubernetes 为用户提供了集群管理能力、多租户应用支撑能力、
透明的服务注册和服务发现机制、负载均衡能力以及故障发现和自修复等能力。
Kubernetes 架构如图 所示,主要由一个或多个 Master 节点和一个或多个 Node 节点
组成。
1
https://en.wikipedia.org/wiki/Borg_(cluster_manager)
图 1 Kubernetes 架构图
Master 节点包含多个重要组件,例如和存储相关的 Etcd 组件、和调度相关的
Scheduler 组件、集群控制高可用组件 Controller Manager、与外部通讯协调整个集群的组
件 API Server 、与 Kubernetes 集群 DNS 解析相关的 CoreDNS 组件等。
Node 节点含有两个重要的组件,分别为管理集群中 Pod 生命周期的 Kubelet 组件 和
负责 Kubernetes 中网络配置的 Kube-proxy 组件。
Kubernetes 中有一些重要单元,本书后续会涉及:
Pod:Kubernetes 中运行应用或服务的最小单元,其设计理念是支持多个容器在一个
Pod 中共享网络地址和文件系统。
Service:访问 Pod 的代理抽象服务,主要用于集群内部的服务发现和负载均衡。
Deployment:用于管理 Pod 对象, 集成了上线部署、滚动升级、创建副本、暂停 /
恢复上线任务、回滚等功能。
Volumes:即目录,其中存有数据,在容器启动时指定参数会自动挂载至容器内部,
Volumes 分静态和动态,其具有不同的生命周期。
StatefulSet:通常创建的 Pod 是无状态的, 这样会导致一旦 Pod 挂掉再重启后会找不
到之前挂载的 Volume,所以可以通过 StatefulSet 来保留 Pod 的状态。
DaemonSet:DaemonSet 确保所有节点均运行 Pod 副本。当集群中添加节点时,节点
自动进行 Pod 添加。当集群中删除节点时,Pod 自动删除。
综合以上 Kubernetes 单元的解释,Kubernetes Pod 工作流程可描述如下:
1. 提交请求
用户通常提交一个 yaml 文件,向 API Server 发送请求创建一个 Pod,yaml 文件含有此
Pod 的详细信息,包 含此 Pod 运行副本数、镜像、Labels、名称,端口暴露情况等。API
Server 接收到请求后将 yaml 文件中的 spec 数据存入 Etcd 中。
2. 资源分配
Scheduler 通过 API Server 的 watch 接口定时监听 Etcd 数据库中资源的变化(此处指上
一步待分配的 Pod),当监测到了 Pod 后,通过 Scheduler 的调度策略选择出具有运行 Pod
能力的 Node 节点并将 Pod 与目标 Node 节点进行绑定,同时更新 Etcd 数据库中 Pod 的分
配情况。
3. 新建容器
此时目标 Node 节点上的 Kubelet 通过 API Server 的 Watch 接口监测到 Etcd 中 Pod 的
分配信息, 同时将 Pod 的相关数据传递给容器运行时以负责此 Pod 的整个生命周期,之
后 Kubelet 还会通过容器运行时获取 Pod 的 状态信息并通过 API Server 更新至 Etcd。
4. 资源状态同步
为了保证此 Pod 在 Node 节点中运行正常(Pod 可能会因为某些原因被杀死),
Controller Manager 中的 Replication Set 组件通过 API Server 定时监听 Etcd 以获得 Pod 的最
新状态并最终对 Pod 进行数量上的同步,从而保证了 Pod 运行副本数与用户指定副本数
相同。
图 2 Kubernetes 创建 Pod 流程示意图
除了在本地部署 Kubernetes,许多公有云厂商也推出了各自的 Kubernetes 托管云平
台,国外公有云厂商主要以 Google、Amazon、Microsoft Azure 为主,国内则以阿里、腾
讯、华为为主。
我们在 Google 趋势图
2
(Google Trends)中按关键词“Google GKE”
3
,“ Amazon
EKS”
4
,“ Microsoft AKS”
5
查看了全球近五年的热度趋势,如 Error! Reference source not f
ound.所示:
图 3 GKE EKS AKS 近五年热度趋势
可以看出,在 2017 年 10 月之前,由于 Amazon EKS 和 Microsoft AKS 基本处在早期萌
芽阶段,因此早在 2015 年 8 月就发布了的 Google GKE 一直位于领先地位。2017 年底至
2
https://trends.google.com/trends/?geo=US
3
https://aws.amazon.com/cn/eks/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-
cards.sort-order=desc&eks-blogs.sort-by=item.additionalFields.createdDate&eks-blogs.sort-order=desc
4
https://azure.microsoft.com/en-us/services/kubernetes-service/
5
https://cloud.google.com/kubernetes-engine
剩余22页未读,继续阅读
虚伪的小白
- 粉丝: 22
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0