Kubernetes
Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。
Kubernetes优势:
- 原生的资源隔离
- 集群化自动化管理
- 计算资源(CPU/GPU)自动调度
- 对多种分布式存储的支持
- 集成较为成熟的监控和告警
Kubernetes的组件
- master 可以简单的理解为控制中心
- etcd:分布式k-v数据库,根据配置选择是cp还是ap, k8s只有api server 和etcd通讯, 其他组件均和api server通讯。
- api server:可以理解为etcd的前置过滤器,换一个视角,它和etcd类似于mysql和文件系统。
- controller manager: 核心,负责将现在的状态调整为etcd上应该的状态,包含了所有的实现逻辑。
- scheduler: 简单点说就是给一个pod找一个node。
- slave 可以简单的理解为worker
- kubelet: 负责和master连接,注册node, listen-watch 本node的任务等。
- kube-proxy: 用于k8s service对象。
- 容器运行时: 除了docker,k8s还支持rkt等容器实现。
k8s集群的运行时的大致结构
Kubernetes 资源架构图
Kubeflow
Kubeflow简介
Kubeflow是Kubernetes的机器学习工具包。Kubeflow是运行在K8S之上的一套技术栈,这套技术栈包含了很多组件,组件之间的关系比较松散,我们可以配合起来用,也可以单独用其中的一部分。下图是官网显示Kubeflow作为在Kubernetes上安排ML系统组件的平台:
当我们开发和部署ML系统时,ML工作流程通常包括几个阶段。开发ML系统是一个反复的过程。我们需要评估ML工作流各个阶段的输出,并在必要时对模型和参数进行更改,以确保模型不断产生所需的结果。
为了便于理解,下图按顺序显示了工作流程阶段,并将Kubeflow添加到工作流中,显示在每个阶段都有哪些Kubeflow组件有用。工作流末尾的箭头指向流程,以表示流程的迭代性质:
kubeflow特点
- 支持 tensorflow/torch/keras等等主流深度学习库
- 用户界面友好
- 支持分布式训练
- 支持 GPU 训练
- 支持快速产生人工智能产品原型
由此可以看出,Kubeflow的目标是基于K8S,构建一整套统一的机器学习平台,覆盖最主要的机器学习流程(数据->特征->建模->服务->监控),同时兼顾机器学习的实验探索阶段和正式的生产环境。
Kubeflow组件
Kubeflow的主要组件
- Central Dashboar