KubeCon 第三天| 安全与智力热度持续,“中国风”席卷全球

2018-05-04

今天“安全”、“智力”话题热度继续,KubeCon 现场被一阵“中国风”席卷。无论是演讲中对中国经典《孙子兵法》和邓小平“摸石头过河”的引用,还是几个演讲人对于中国公司所做贡献的赞美,无一不彰显着中国在行业领域的技术实力和重要地位。大会最后一天,让我们跟着社区技术团队,走进会场听听这些技术大咖们都说了什么。


KubeCon Keynote


Keynote 1: Kubeflow ML on Kubernetes

Google 产品经理 David Aronchick 和高级软件工程师 Vishnu 为大家介绍了 Kubeflow ,一个在 Kubernetes 上运行机器学习任务的框架。David 首先提到,得益于 Kubernetes,现在的平台建设已经不再关注过多的细节,大家都用统一的平台和 API,大家开始围绕 Kubernetes 建设云原生应用。但是与此同时,我们也需要云原生机器学习。目前的机器学习环境,大家要么是 DIY (Do It Yourself),要么是 Hosted,无论哪一种,最后都要面临系统整合,业务迁移的问题。


David 指出机器学习平台所需要的三个特点:Composability, Portability 和 Scalability。


Composability 层面,模型创建不仅仅只是创建一个模型这么简单,它还包括了数据整合、分析,模型验证发布,监控日志等多个环节。



Portability 层面,我们需要让整个模型训练和服务的各个环节,能在不同的环境里面复现出来,包括实验环境、训练环境和云环境。



Scalability 层面,机器学习业务不仅仅需要更多的硬件资源,也需要更多的人员,更多的实验。它对可扩展性的要求比其他业务要求更高。




介绍完机器学习的特点,David 随机提到仅仅使用 Kubernetes 不足以支撑这样的需求,继而引出 Kubeflow 项目,其目标是提供一个通用的环境,供所有人开发、使用、构建分布式机器学习的平台,让机器学习开发变得异常简单。


David 用几张图,清晰地描述了在整个机器学习环境中,Kubeflow 所处的位置:



可以看到,Kubernetes 解决了部分 Portability 和 Scalability 的问题,Kubeflow 解决 Composability 和其余的 Portability 与 Scalability 问题。两者结合,完美解决了机器学习平台现在的问题。


David 接下来发布了 Kubeflow 0.1 版本,介绍了 0.1 内包含的内容,然后由 Vishnu 为大家带来了基于 Kubeflow 0.1 的情感分析应用。


通过 Kubeflow,Vishnu 展示了通过 Kubeflow 进行跨环境的模型开发、多硬件加速器下的训练、模型服务上线等一连串操作。演示最后,David 强调 Kubeflow 不包含任何业务定制化、云绑定和 Kubernetes 定制化开发,它是一个完全原生的平台。


Keynote 最后,David 再次强调了 Kubeflow 的愿景:让每个人都能用上机器学习平台。另外他感谢了 Kubeflow 的贡献者,其中包括来自中国的公司 Caicloud 的贡献。


Keynote 2: Running with Scissors

演讲人 Aqua Security 技术传播者 Liz Rice, 全程通过在线 Demo 对容器安全问题进行阐述。


Demo 1:可以通过 capability 控制容器内 root 用户的权限。

  • 运行一个 Pod,并且该 Pod 里面的 Nginx 容器以 root 用户运行(容器的 root 用户在宿主机上也拥有 root 权限)
  • 然后进入该容器,在容器中运行 `sleep` 命令停止容器进程
  • 我们在容器内可以查看到该进程已经处于休眠状态
  • 我们在宿主机上也可以查看到该进程已经处于休眠状态
  • 接着,我们在容器内试着修改容器 hostname,失败
  • 然后,我们在宿主机上试着修改容器 hostname,成功


出现上述现象的原因就是:容器内的 root 用户只具有部分 capability,而宿主机上的 root 用户具有全部的 capability,宿主机上的普通用户则没有任何 capability。改变容器内用户的权限,让容器 root 用户也拥有所有的 capability,那么容器 root 用户就可以修改容器的 hostname 了。


Demo 2:可以指定运行该容器的用户。

  • 修改 Dockerfile,指定以用户 ID 为 1001 的用户运行该容器
  • 运行 Nginx 容器
  • 宿主机上查看到运行该容器的用户 ID 为 USER 1001


Demo 3:宿主机上普通用户不能从宿主机上删除容器内创建的文件,因为该用户权限不够。

  • 以 root 用户权限运行一个 Nginx 容器,该容器内挂载了一个宿主机 volume
  • 进入容器,在容器内挂载的这个目录下创建一个文件
  • 宿主机上一个普通用户可以 `ls` 出容器内创建的这个文件,但是该普通用户没有删除该文件的权限


因此,我们应该做一些事情来阻止任何的破坏行为,同时我们可以使用任何一种保护工具。


Keynote 3:

Scaling Deep Learning Models in Production Using Kubernetes

演讲人 Booking.com 的软件开发 Sahil Dua 介绍了全球知名酒店提供商 Booking.com 在深度学习上的最佳实践。Booking.com 在全球 220个国家拥有超过 140 万套的房源,平均每天有超过 150 万个酒店房间被预定。面对如此巨大的数据和流量,他们选择使用深度学习来优化服务质量和提升服务效率。


在 Booking.com 的场景里,他们主要使用了图像标注、机器翻译和广告竞价等技术。以图像标注为例,通过深度学习算法,Booking.com 提供的酒店房间现在都自带各种图像标签和评分,如是否为海景房、是否带阳台、床的舒适度等。这进一步提升了 Booking.com 的用户体验,它使得用户在选择酒店时拥有了更多有效信息和评价标准。


深度学习为 Booking.com 带来了不小的收益,但是搭建和运行深度学习模型服务本身并不是一件容易的事情。深度学习模型的训练作业具有 3 大特点:计算密集型、大部分模型的并行度低、数据吞吐量大。


为了更好地支撑深度学习作业,Booking.com 选择了 Kubernetes 作为底层调度平台。结合 Hadoop 和 TensorFlow,他们打通了大数据管理和模型训练、服务的流水线。在此基础上,他们整合了 Kubernetes Deployment 和 Service 的能力,实现了模型服务初步的负载均衡和弹性伸缩功能。



纵观此次 KubeCon 的众多演讲,在 Kubernetes 集群上运行机器学习和深度学习任务已经成了大家的共识。接下来,我们将持续关注业界对 ML on K8S 的推动。


Keynote 4: Crossing the River by Feeling the Stones

来自 Leading Edge Forum 的 Simon 为大家带来了“摸着石头过河”的演讲。乍看之下,好像跟 Kubernetes 并没有什么关系,实际上,也确实没有什么关系。


Simon 结合自己的经验,通过一系列风趣幽默的演讲,阐述了一个问题:在一个不断变化的世界里面,我们如何确定应该做什么事情,我们如何决定自己的战略,我们如何决定未来该怎么走?当然,大多数 KubeCon 参会者都是技术人员,只讲战略不符合“会情”,Simon 在最后对计算史做了简短回顾,有理有据地指出了他的观察:Serverless 是正在发生的趋势,而且 AWS 已经很明显处在高位(70% 的市场份额)。


结合谷歌十年容器实践,基于国内大型企业落地经验打造 的容器集群智能云平台。

立即体验
立即咨询