做者 | 汤志敏、谢瑶瑶html
会议完整视频回顾:https://www.bilibili.com/video/av88668762node
2 月 12 日,阿里云和 CNCF 联合举办了线上研讨会,首次完整介绍了阿里云对 Kubernetes 社区的布局,包括了 10 个类别,20 多个开源项目,提供了完整的 Kubernetes 生命周期管理。本文聚集了这次会议完整视频回顾及资料下载,并整理了会议上未能及时回答的问题,但愿可以对你们有所帮助~nginx
关注“阿里巴巴云原生”公众号,后台回复 “会议” 便可下载 PPT。git
随着时间的发展,愈来愈多的企业在生产环境使用 Kubernetes。Kubernetes 被广为接受,离不开其良好的设计和繁荣的社区。目前围绕着 Kubernetes 已经有 20 个左右的兴趣小组(SIG),SIG Cloud Provider 则是 Kubernetes 的重要兴趣小组之一,致力于推进全部云厂商以标准的能力提供 Kubernetes 服务。github
SIG-Cloud-Provider-Alibaba 是 SIG Cloud Provider 在国内惟一的子项目。算法
Cloud Provider SIG 是 Kubernetes 的云厂商兴趣小组,致力于让 Kubernetes 的生态系统往厂商中立的方向演进,他会负责协调不一样厂商尽量以统一的标准来知足开发者的需求。目前加入 Cloud Provider SIG 包括了 7 家云厂商,包括 AWS、GCP、阿里云、IBMCloud 等。后端
在全面上云的时代,云已经重塑了企业IT架构。云原生计算就是一组最佳实践和方法论,如何在公共云、专有云、多云环境中,构建可伸缩、健壮、松耦合的应用,能够更快速的创新和低成本的试错。api
阿里云做为国际有影响力的云厂商,也但愿可以推进Kubernetes的进一步标准化,并进一步和横向云厂商如AWS、Google、Azure进行技术协同,优化云和Kubernetes链接,并统一不一样组件的模块化和标准化协议。安全
对于 Kubernetes 的开发者和用户,咱们但愿基于阿里云打造 Kubernetes 的最佳运行环境,并将围绕在 Kubernetes 的阿里云插件开源出来。而阿里云容器服务 ACK 也会尽可能复用这些组件。服务器
Kubernetes 做为云原生时代的应用操做系统,已经成为事实上的标准。阿里云在 Kubernetes 实践的过程当中开源了众多的项目,如位于底层的计算、存储、网络、安全等相关的 5 个大的类别和上层领域相关的 AI、应用管理、迁移、Serveless 等 5 个大的类别,为用户应用提供全栈式生命周期管理。
SIG-Cloud-Provider-Alibaba 为 K8s 在阿里云上的云原生最佳实践提供一个沟通的桥梁,经过兴趣小组的方式让全部参与的我的、组织理解 CloudProvider 的原理并运用到生产实践中,实现其业务价值。
详见下文。
CloudController 指 K8s 的 cloud-controller-manager 组件(简称 CCM), 提供 Kubernetes 与各个云厂商基础服务的对接能力(包含网络负载均衡,VPC 路由,ECS,DNS 等)。主要由 NodeController、ServiceController、RouteController、PVLController 四大控制器实现。
**NodeController **实现了计算节点的管理,例如 ECS 节点生命周期管理,给节点打上可用区、Region、hostname 等标识,为编排系统在计算池上调度工做负载提供全方位的信息。同时按期轮询 ECS 的 IP 地址及检测 ECS 资源状态(是否被释放)等,动态更新节点信息,确保编排系统及时响应计算节点事件。
**ServiceController **实现了应用负载均衡管理,经过监视 Kubernetes Service 对象的变化,自动的为应用配置并管理云上负载均衡服务(SLB 配置,监听配置,虚拟服务器组配置),根据应用副本变化动态的调整负载均衡的后端服务器组,无需人工干预。在此基础上,咱们定义了一组丰富的 Annotation,用以自定义应用负载均衡的配置,同时咱们同社区积极合做,共同推动配置的标准化,同时在 K8s 缘由的服务发现模型上扩展了弹性网卡直通模式,减小了服务发现的网络层级,总体提高了 10% 的应用网络性能。
Terway 实现了 Kubernetes CNI 规范,专为阿里云环境优化,并支持丰富的企业特性,支持 VPC 路由模式,ENI 模式、ENI 多 IP 等多种模式等,性能优秀,ENI 模式相比原生 VPC 提高 10% 左右。
Terway 和阿里云底层 IAAS 网络深度整合,让 Pod 做为云网络一等公民无缝使用 CEN、SLB 等网络产品,使用弹性网卡让网络性能 0 损失,使容器化的过程没有体验和性能的降级。同时支持 Kubernetes 网络策略,Qos 流控等高级功能。
阿里云 CSI 插件实现了在 Kubernetes 中对容器存储卷的生命周期管理,支持动态建立、挂载、使用云数据卷。 当前的 CSI 实现基于 K8S 1.14 以上的版本;支持的阿里云存储:云盘、NAS、CPFS、OSS、LVM 等。
Log-Pilot 是一个高效的智能容器日志采集工具,其不只可以便捷地采集容器的标准输出日志,同时还可以动态地发现采集容器内部的日志文件;其彻底采用声明式的配置方式,可以自动地感知集群中容器的状态来动态地配置容器日志采集,同时其还具有不少高级特性,诸如日志的自动 CheckPoint 及句柄保持机制、支持自动日志数据打标以及自定义 Tag 等机制,可灵活地将日志数据采集到多种不一样的日志存储后端,好比 ElasticSearch、Kafka、Logstash、Redis,Graylog 等。
Arena 是基于 Kubernetes 的机器学习轻量级解决方案,支持数据准备,模型开发,模型训练,模型预测的完整生命周期,提高数据科学家工做效率。方便数据科学家和算法工程师快速开始利用阿里云的资源(包括 ECS 云服务器、GPU 云服务器、分布式存储 NAS、CPFS、 对象存储 OSS、Elastic MapReduce、负载均衡等服务)执行数据准备、模型开发、模型训练、评估和预测等任务。并可以方便地将深度学习能力转化为服务 API,加速与业务应用的集成。在提高数据科学家效率的同时,经过 GPU 资源的可视化管理和设备的共享调度提高集群 GPU 资源的利用率。
本次线上研讨会首次介绍了阿里云在 Kubernetes 的社区布局。受限于时间和篇幅,并不能介绍完全部开源组件的详细信息,而但愿能够授之以渔,让对 Kubernetes 感兴趣的开发者找到对应的开源项目。咱们欢迎更多的开发者一块儿来参与共建,不管是提 PR 或 Issue,仍是对 Roadmap 提出建议。后续,SIG Cloug Provider Alibaba 也会针对具体的组件分享原理、最佳实践。
Q1:阿里云 K8s 的 Cloud Provider 可否针对每一个功能点添加参数来开关吗?
A1:能够经过配置annotation实现具体功能点,具体能够参考文档。
Q2:若是咱们要在阿里 CCM上的基础上修改的话,是否是有 K8s 的版本问题,由于咱们想用本身的 Kubernetes 特定版本。
A2:能够,CCM 不依赖于 K8s 版本。
Q3:阿里云各个基于 Kubernetes 的容器服务是否直接使用的开源 CCM? 若是是,内部在上线前作了哪些调整?另外,provider_id 格式具体是什么?
A3:是的,彻底基于开源版本的 CCM。provider_id 格式为 ${regionid}.${nodeid}。
Q4:CCM 必需要 K8s 的 nodename 和阿里云的实例 id 同样吗?以前运维说必须同样,但这样没有意义的 nodename 用起来很恶心。<br />A4:不须要。目前只须要配置 providerid 参数便可。
Q5:terway 底层如何加速?kernel level 仍是 dpdk?
A5:terway 分为不一样的网络模式,不一样模式的网络配置不通。
Q6:POD 底层的内核参数容许 namespace 化么?
A6:POD 底层的内核参数是否容许 namespace 化依赖于内核的支持状况,通常在较新的内核上好比 Aliyun Linux2 中的 4.19 的内核,大部份内核参数都容许在 Pod 上指定和修改的。
Q7:在安全容器方面,阿里如今有什么产品?
A7:目前阿里云的容器服务已经提供了安全沙箱做为用户的可选容器引擎,而且部分阿里云 Serverless 形态的产品如 SAE、ECI 也是构建在安全容器之上。
Q8:Arena 支持多租户和虚拟 GPU 吗?
A8:Arena 重用 Kubernetes 的现有用户受权和多租户工做机制,不一样用户能够分配不一样的 kubeconfig,并利用其进行认证,同时经过 namespace 进行资源隔离和共享。而站在 Arena 的角度,用户只能看到本 namespace 的训练和推理任务,其余 namespace 下的任务并不可见。
这里的虚拟 GPU,指的是英伟达的虚拟 GPU 技术,目前针对于阿里云上已经支持 P4 的虚拟 GPU,而且已经和阿里云容器服务 Kubernetes 完成了集成,在阿里云的容器服务上就能体验。而在 Arena 的角度来讲虚拟 GPU 并非特殊的 GPU 资源,是能够实现对于该资源的调度和编排的。
Q9:多容器共享 GPU 方案支持资源隔离吗?能限制住显存吗?
A9:首先感谢您关注咱们的 GPU 共享方案,阿里云容器服务贡献了业界目前惟一的开源 GPU 共享方案。目前咱们的方案仍是在调度层面实现多容器的 GPU 共享,而且能够和 TensorFlow 等框架相结合实现应用层面的 GPU 资源限制。能够经过咱们的文档了解目前的使用方式。
可是咱们也在和阿里云的底层团队研发安全和高性能的 GPU 隔离方案,相信在不久的将来,你们可以体验到从 GPU 共享调度到隔离的完整方案。
Q10:ExternalDNS 目前支持 alicloud 的 DNS 服务吗,支持程度如何?
A10:目前是支持 alicloud 的 DNS 服务 privatezone 的,支持同步 K8s 集群的服务 / Pod 等解析到 DNS 服务中,下降集群内部署的 coredns 形成的损耗。
Q11:阿里版本的 nginx ingress 与社区官方版的主要区别是什么呢?
A11:阿里云在社区的基础上实现了更加高级的功能,诸如 NGINX Server 配置的动态更新,支持基于 Header、Cookie 和请求参数以及权重的混合灰度发布策略等。
Q12:阿里云 Kubernetes 以及这些开发的套件的发布周期是什么样的?
A12:对于 K8s 大版本的支持力度是半年更新一个稳定版本。同时会不按期作 Bugfix 和安全修复。
Q13:问问边缘版 ACK@Edge 商用稳定版本已经发布了么,有相关用户在用么
A13:ACK@Edge 已经能够用于生产环境,目前已经有在线教育、视频、IoT、CDN 等领域和行业的用户在使用,商业版预计 2020.6 月前推出。
Q14:宿主 WORKER 节点是否遇到过 cGroup 内存泄漏, 致使 POD cannot allocatie memory 的问题? 若是有如何解决的?
A15:容器服务采用的 cgroup driver 是 systemd cgroup driver,目前没有遇到这个问题。
Q15:POD 的CPU 内存资源是否和宿主是隔离的?如何隔离的?
A15:能够经过 kubelet 为宿主机预留资源的方式,这样 Pod 的资源就会被限制在剩余的资源空间内来实现隔离。
Q16:aws 有 eckctl,aliyun 有对应的工具吗?叫 ackctl ?
A16:能够参见文档。
Q17:请问阿里云对 Windows 容器的支持程度如何?
A17:目前支持 Window 1809,即将支持 1903。并支持 Linux 集群添加 Windows 节点。
Q18:能够单独使用某一个开放组件集成到现有的 K8s 集群吗?
A18: 能够。现有的 K8s 集群彻底是知足 K8s Conformance 测试的。
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”