SIG-Cloud-Provider-Alibaba: Alibaba的原则和最佳实践

在这篇博客中,我们将介绍唐志敏和谢垚垚在SIG云服务提供商的在线演讲中所提到的关键要点。

作者:汤志敏和谢瑶瑶(楚扬)

2020年2月12日,阿里巴巴云计算与云原生计算基金会(CNCF)共同举办了一场网络研讨会。在这次网络研讨会上,阿里巴巴云计算首次全面介绍了10个类别的20多个开源Kubernetes项目,并提供了完整的Kubernetes生命周期管理实践。本文总结了视频内容并提供了可下载的资料,整理了网络研讨会中提出的问题。

image.png

SIG云服务提供商是什么?

逐年来,越来越多的公司开始在生产环境中使用Kubernetes。Kubernetes基于其稳健的设计和丰富的社区得到了广泛的接受。目前,Kubernetes拥有约20个SIG(特别兴趣组)。SIG云服务提供商作为对Kubernetes社区至关重要的SIG,致力于推动所有云供应商以标准功能提供Kubernetes服务。

SIG-Cloud-Provider-Alibaba是SIG Cloud Provider在中国唯一的子项目。SIG Cloud Provider是为Kubernetes社区的云供应商利益而设立的组织。该组织确保Kubernetes生态系统以中立的方式发展,并确立了所有供应商共有的标准和要求,以保证最佳的Kubernetes集成。目前,SIG Cloud Provider有来自亚马逊云服务(AWS)、谷歌云平台(GCP)、阿里云、IBM云等7家云供应商的参与。

为什么阿里巴巴云加入了SIG云服务提供商?

与全球云服务提供商合作,推动多云标准化,通过阿里巴巴云的实践为Kubernetes社区做出贡献。

在云计算全面迁移的时代,企业的IT架构正在重新构建于云平台上。云原生计算是一套最佳实践和方法论,能够在阿里云、阿里云私有云、以及多云环境中构建可扩展、可靠且松耦合的应用。通过这种方式,能够促进快速创新和低成本试验。

阿里云作为全球领先的云服务供应商,致力于推动Kubernetes的标准化,并通过加强与AWS、Google、Azure等其他云服务供应商的合作关系,优化云和Kubernetes的连接,统一不同组件的模块化和标准化协议。

对于阿里云Kubernetes开发者,提供透明性、控制性、协调性和平稳演进的支持。

我希望为Kubernetes的开发者和用户构建最适合的Kubernetes运行环境,并提供阿里云开源的Kubernetes插件。阿里云容器服务(ACK)也正在重复使用这些组件。

image.png
    • 透明性と制御性:研究志向の開発者は、これらのプラグインを使用してKubernetesクラスタを構築することができ、ACKユーザーは関連する実装をよりよく理解することができます。

 

    • コラボレーション:アリババクラウドのコンピューティング、ネットワーク、ストレージでKubernetesを使用する必要がある開発者は、問題を提起したり、オープンソースコンポーネントの開発やRoadMapの策定に参加したりすることができます。

 

    スムーズな進化:アリババクラウドのKubernetesオープンソースプラグインは、導入をサポートしますが、企業のO&M、アップグレード、安定性管理に対する要求は高くなります。ACKへのスムーズな進化を実現することで、継続的なアップグレード、高可用性の保証、修正提案などのエキスパートサービスを受けることができます。

Kubernetes SIG-Cloud-Provider-Alibaba的机制是什么?

    • Slack

 

    • 隔月開催のカンファレンス

 

    • 会議の議事録

 

    • Google DocsとYouTube

 

    会議の言語:中国語、英語

介绍阿里巴巴云针对Kubernetes开发的产品。

image.png

阿里巴巴云开源套件适用于Kubernetes。

image.png

作为云原生操作系统的应用程序,Kubernetes已成为行业标准。在实践Kubernetes过程中,阿里云为用户应用程序提供了许多开源项目,以进行全栈生命周期管理。这些项目包括5个基本类别(云控制器、计算、存储、网络、安全)和5个高级类别(人工智能、服务经纪人、应用程序管理、迁移、无服务器)。

SIG-Cloud-Provider-Alibaba为在阿里巴巴云上使用Kubernetes的云原生最佳实践提供了一个传递渠道。无论个人还是组织的参与者,都可以学习Cloud Provider的机制,并将其应用于生产环境中以体验其商业价值。请查看以下内容以获取详细信息。

云控制器

    • cloud-provider-alibaba-cloud

 

    cluster-api-provider-alibabacloud

网络

    • Terway CNI

 

    • Flannel CNI

 

    • Ingress

 

    ExternalDNS

存储

    • CSI

 

    • FlexVolume

 

    Auto-provision

可扩展性 (Kě

    • Cron Horizontal Pod Autoscaler (CronHPA)

 

    Cluster autoscaler

安全

    • KMS provider

 

    • kube2ram

 

    • ACK RAM Authenticator

 

    sgx-device-plugin

迁移

    • Derrick

 

    • Velero

 

    ack-image-builder

AI人工智能

    • Arena

 

    GPU share

服务代理

    ServiceBroker

无服务器技术

    Virtual Kubelet

应用程序管理

    • Kube-eventer

 

    • kube-metrics-adapter

 

    • Log-pilot

 

    • OpenKruise

 

    OAM

介绍一些开源组件。

云控制器

CloudController是Kubernetes的云控制器管理器(CCM)。通过NodeController、ServiceController、RouteController和PVLController,可以与各种云供应商的基本服务相互连接,如SLB(Server Load Balancer)、VPC(Virtual Private Cloud)路由、ECS(Elastic Compute Service)和DNS(阿里云域名系统)。

NodeController负责管理ECS实例的生命周期以及计算节点的管理。通过在区域、地域和主机名上标记节点,NodeController提供了为编排系统调度计算池工作负载所需的完整信息。此外,NodeController定期轮询ECS实例的IP地址,并检查ECS资源是否已释放,以动态更新节点信息。这样一来,编排系统就能够快速响应计算节点事件。

ServiceController实现了应用程序的负载均衡管理。它监控Kubernetes Service对象的变化,并自动设置和管理SLB实例、监听器、虚拟服务器组等边缘SLB服务,根据应用程序副本的变化调整SLB实例的后端服务器组。基于此,我们定义了各种注解来定制应用程序的负载均衡设置。此外,我们与Kubernetes社区合作,标准化了配置,并在Kubernetes的服务发现模型中添加了ENI(弹性网络接口)模式。这简化了服务发现的网络层次结构,并提升了整个应用程序网络性能10%。

image.png

Terway: 高效率的网络组件

Terway是专门为Alibaba Cloud优化而支持Kubernetes的CNI规范。它支持多种企业功能,如VPC路由模式、ENI模式和包容ENI模式等。在ENI模式下,性能比原生VPC高约10%。

Terway已与阿里云基础设施即服务(IaaS)集成,它利用了Cloud Enterprise Network(CEN)和SLB等网络产品,并通过使用ENI来避免网络性能损失。这样就解决了容器化过程中的用户体验下降和性能下降的问题。此外,它还支持Kubernetes的网络策略和基于QoS(服务质量)的限流等高级功能。

image.png

CSI:具有高性能的容器存储组件

使用阿里巴巴云容器存储接口(CSI)插件可以管理Kubernetes中容器卷的生命周期,包括创建、挂载和使用云卷等。CSI插件是基于Kubernetes V1.14及更高版本实现的。它支持阿里巴巴云的多种存储服务,包括磁盘、阿里云文件存储NAS、云并行文件系统(CPFS)、对象存储服务(OSS)和逻辑卷管理器(LVM)。

image.png

日志飞行员:高性能的日志收集器。

Log-pilot 是一种用于高效收集容器日志的工具。它可以轻松收集容器的标准输出日志,还可以动态检测和收集容器中的日志文件。在声明式配置模式下,它可以自动检测集群内容器的状态,并设置容器的日志收集功能。此外,它还具有自动检查点、持久化、标记、自定义标记等许多高级功能。通过这些功能,log-pilot 可以灵活地收集日志数据,并存储在 Elasticsearch、Apache Kafka 的消息队列、Logstash、Redis、Graylog 等各种日志存储后端。

image.png

競技場:用于AI的机器学习平台的轻量级解决方案

Arena是一种基于Kubernetes的轻量级机器学习平台,专为AI而设计。它支持数据准备、模型开发、模型训练和模型预测的完整生命周期,并提高数据科学家的工作效率。使用此服务平台,数据科学家和算法工程师可以利用Alibaba Cloud的资源,快速进行数据准备、模型开发、模型训练、评估和预测工作。这些云资源包括ECS、弹性GPU服务、阿帕斯拉文件存储NAS、CPFS、OSS、E-MapReduce和SLB实例。此外,该服务平台可以将深度学习功能轻松转换为服务API,并加速业务应用程序的集成。同时,通过视觉化管理Elastic GPU Service资源并共享设备调度,可以提高集群内Elastic GPU Service资源的利用率。

image.png

欢迎来到SIG云服务提供商。

在本次网络研讨会上,我们首次介绍了针对Kubernetes社区战略性调整的阿里云产品。在此我们无法详细介绍所有开源组件的细节。相反,我们希望对对Kubernetes感兴趣的开发者,能够找到相应的开源项目。无论是哪种类型的开发者,我们都欢迎贡献代码、提出问题、提出路线图建议等。SIG-Cloud-Provider-Alibaba旨在分享有关特定组件的原则和最佳实践。

常见问题

Q1: 阿里巴巴云原生Kubernetes的云服务提供商是否可以添加参数来启用或禁用各项功能?

当然可以。为了这个目的,您可以添加注解。

Q2: 如果在Alibaba Cloud CCM上使用特定版本的Kubernetes进行修改,会出现问题吗?

A2: CCM与Kubernetes版本无关,所以没有问题。

Q3: 阿里巴巴云的基于Kubernetes的容器服务是否直接使用开源的云控制器管理(CCM)?请告诉我provider_id的具体格式。

是的,阿里巴巴云的基于Kubernetes的容器服务直接使用开源的CCM。provider_id的格式是${regionid}.${nodeid}。

Q4:Kubernetes的节点名称必须与阿里云云服务器管理(CCM)的实例ID相同吗?运维人员提到必须相同。

A4:不需要设置任何其他内容,只需设置提供者ID。

问题5:Terway的基础层在如何进行加速方面,例如内核级别或DPDK(数据平面开发工具包)?

A5:Terway可以在各种网络配置下运行。

    • 排他的ENIモードでは、IaaS層のENIがポッドのENIとして使用されます。ホストは仮想化をサポートしておらず、DPDKを利用してポッド内のアプリケーションネットワークを高速化することができます。Alibaba Cloudが開発した高性能なIaaSネットワークを、ノード間で直接利用できます。

 

    包括的なENIモードでは、IPVLANの軽量仮想化ソリューションがノード内の仮想化に使用され、ホストネットワークよりもはるかに低い性能劣化を実現します。

Q6:可以在命名空间中设置Pod的基础内核参数吗?

A6: 依赖于内核。在Aliyun Linux2的Linux Kernel 4.19等新内核中,几乎可以在Pod内部设置和更改大部分内核参数。

Q7: 阿里巴巴云的安全容器产品有哪些?

A7: 阿里巴巴云容器服务目前提供安全沙箱作为容器引擎给用户使用。此外,部分阿里巴巴云的无服务器产品,如Serverless App Engine(SAE)和Elastic Container Instance(ECI)也是基于安全容器构建的。

Q8:是否支持Arena多租户和虚拟图形处理单元(vGPU)?

在Arena中,我们使用了Kubernetes的现有用户认证和多租户策略的重新利用。不同的用户可以使用不同的kubeconfig文件进行身份验证,或者使用命名空间来隔离或共享资源。对于Arena来说,用户只能看到此命名空间中的训练和推理任务。在这里,vGPU是指NVIDIA的vGPU技术。目前,在阿里云上支持P4的vGPU技术已集成到ACK中。您可以在阿里云容器服务中开始使用。在Arena的角度来看,vGPU是一种可进行调度和编排的资源,而不是特殊的资源。

Q9: 多容器共享GPU解决方案是否支持资源分离和限制GPU的功能?

A9:在我们公司的GPU共享解决方案中,阿里云容器服务是业界唯一提供开源GPU共享解决方案的。目前,我们的解决方案实现了在调度层进行多容器GPU共享,并可以与TensorFlow等框架集成,以限制应用层的GPU资源。有关该解决方案的用法,请参阅用户指南。同时,我们与阿里云团队合作,推进了安全高性能的GPU隔离解决方案的开发。在不久的将来,您可能会使用到具备GPU共享功能和隔离功能的完整解决方案。

Q10: 外部DNS是否支持阿里云DNS?

A10: 目前,阿里巴巴云DNS PrivateZone已得到支持。您可以将服务和Pod的解析与Kubernetes集群同步到阿里巴巴云DNS中,从而减少由集群中使用的CoreDNS所带来的损失。

Q11: Alibaba Cloud的ingress-nginx与Kubernetes社区的ingress-nginx之间的主要差异是什么?

A11:阿里巴巴云的Ingress-Nginx提供了更高级的功能,如动态更新Ingress-Nginx的配置。此外,还支持基于头信息、cookie、请求参数、延迟等的渐进式发布策略。

请告诉我关于ACK和其开发工具包的发布周期。

A12:ACK的主要版本每6个月更新一次。漏洞将不定期修复。

Q13: ACK@Edge的商业版本已发布,有哪些用户在使用?

A13: ACK@Edge已经进入产品化阶段。在线教育、视频、阿里云物联网、阿里云内容分发网络等不同领域和行业的用户都在使用。商业版本预计将于2020年6月发布。

Q14:在主机上的工作节点上,是否会发生控制组(cgroup)的内存泄漏?如果发生,应该如何解决?

A14:容器服务使用的cgroup驱动程序是systemd的cgroup驱动程序。目前尚未收到有关cgroup内存泄漏的报告。

Q15: Pod的CPU和内存资源是与主机隔离的吗?如果分离的话,是如何分离的?

使用Kubelet可以预留主机资源,从而限制Pod的资源在剩余的资源空间内用于隔离。

问题16:阿里巴巴云是否有类似于AWS的ecckctl或ackctl的工具?

A16:请查阅aliyun-cli以获得答案。

Q17: 阿里巴巴云如何支持Windows容器?

A17: 目前,Windows 10的1809版本已经得到支持,1903版本也很快将得到支持。Windows节点可以添加到Linux集群中。

可以将开放组件集成到现有的Kubernetes集群中吗?

A18: 是的。现有的Kubernetes集群符合Kubernetes性能测试的要求。

您可以在此观看完整的中文现场演示视频。

本博客是从英文版翻译而来的。您可以通过这里查看原始内容。我们使用了部分机器翻译。如果有翻译错误,请您指出,不胜感激。

阿里巴巴云拥有两个数据中心在日本,并且是亚太地区排名第一(2019年Gartner报告)的云基础设施服务供应商,覆盖全球超过60个可用区域。
请点击此处查看更多阿里巴巴云的详细信息。
阿里巴巴云日本官方网页。

广告
将在 10 秒后关闭
bannerAds