このブログでは、Tang ZhiminとXie YaoyaoがSIG Cloud Providersについて行ったオンラインプレゼンテーションから得られたキーポイントを紹介します。
著者:Tang ZhiminとXie Yaoyao(Chuyang)
2020年2月12日、Alibaba CloudとCloud Native Computing Foundation(CNCF)が共同でウェビナーを開催しました。ウェビナーでは、Alibaba Cloudが10カテゴリーの20以上のオープンソースKubernetesプロジェクトを初めて完全に紹介し、完全なKubernetesライフサイクル管理の実践を提供しました。この記事では、ビデオの内容を要約し、ダウンロードできる資料を提供し、ウェビナーで残された質問を整理しています。
SIGクラウドプロバイダーとは?
年々、より多くの企業が本番環境にKubernetesを使用するようになってきました。Kubernetesは、その健全な設計と豊かなコミュニティにより、広く受け入れられています。現在、Kubernetesには約20のSIG(Special Interest Group)が存在します。SIG Cloud Providerは、Kubernetesコミュニティにとって重要なSIGとして、すべてのクラウドベンダーがKubernetesのサービスを標準的な機能で提供することを促進することに専念しています。
SIG-Cloud-Provider-Alibabaは、中国におけるSIG Cloud Providerの唯一のサブプロジェクトです。SIG Cloud Providerは、Kubernetesコミュニティのためのクラウドベンダーの利益団体です。この団体は、Kubernetesのエコシステムがすべてのクラウドベンダーにとって中立的な方法で進化していることを確認し、最適なKubernetesの統合を保証するために、すべてのプロバイダーに共通する標準と要件を確立しています。現在、SIG Cloud Providerには、Amazon Web Services(AWS)、GCP、Alibaba Cloud、IBM Cloudなど7社のクラウドベンダーが参加しています。
なぜアリババクラウドはSIGクラウドプロバイダーに参加したのか?
1、グローバルなクラウドプロバイダーと協力してマルチクラウドの標準化を推進し、アリババクラウドのプラクティスでKubernetesコミュニティに貢献
クラウドへの完全移行の時代に、企業のITアーキテクチャはクラウドで再構築されています。クラウドネイティブコンピューティングは、Alibaba Cloud、Apsara Stack、およびマルチクラウド環境において、スケーラブルで堅牢、かつ疎結合のアプリケーションを構築するためのベストプラクティスと方法論のセットです。これにより、迅速なイノベーションと低コストでのトライアルを促進します。
アリババクラウドは、世界をリードするクラウドベンダーとして、Kubernetesの標準化を推進し、AWS、Google、Azureなどの他のクラウドベンダーとの協力関係を深めることで、クラウドとKubernetesの接続を最適化し、異なるコンポーネントのモジュラーと標準化されたプロトコルを統一したいと考えています。
2、 アリババクラウドのKubernetes開発者への透明性、制御性、協調性、および円滑な進化の提供
Kubernetesの開発者やユーザーにとって最適なKubernetesの実行環境を構築し、アリババクラウドのオープンソースのKubernetes用プラグインを提供したいと考えています。Alibaba Cloud Container Service for Kubernetes(ACK)もこれらのコンポーネントを再利用しています。
- 透明性と制御性:研究志向の開発者は、これらのプラグインを使用してKubernetesクラスタを構築することができ、ACKユーザーは関連する実装をよりよく理解することができます。
- コラボレーション:アリババクラウドのコンピューティング、ネットワーク、ストレージでKubernetesを使用する必要がある開発者は、問題を提起したり、オープンソースコンポーネントの開発やRoadMapの策定に参加したりすることができます。
- スムーズな進化:アリババクラウドのKubernetesオープンソースプラグインは、導入をサポートしますが、企業のO&M、アップグレード、安定性管理に対する要求は高くなります。ACKへのスムーズな進化を実現することで、継続的なアップグレード、高可用性の保証、修正提案などのエキスパートサービスを受けることができます。
Kubernetes SIG-Cloud-Provider-Alibabaの仕組み
- Slack
- 隔月開催のカンファレンス
- 会議の議事録
- Google DocsとYouTube
- 会議の言語:中国語、英語
アリババクラウドのKubernetes向け製品の紹介
Alibaba Cloud Open-Source Suite for Kubernetes
アプリケーションのクラウドネイティブなオペレーティングシステムとして、Kubernetesは標準となっています。Kubernetesの実践中、アリババクラウドはユーザーアプリケーションのフルスタックライフサイクル管理を提供するために、多くのオープンソースプロジェクトを提供してきました。このようなプロジェクトには、5つの基本カテゴリ(CloudController、コンピューティング、ストレージ、ネットワーク、セキュリティ)と5つの上位層カテゴリ(AI、ServiceBroker、アプリケーション管理、マイグレーション、サーバーレス)が含まれています。
SIG-Cloud-Provider-Alibabaは、Alibaba CloudにおけるKubernetesのクラウドネイティブなベストプラクティスを伝えるチャネルを提供します。個人や組織の参加者であれば誰でも、Cloud Providerの仕組みを学び、本番に適用してそのビジネス価値を実感することができます。詳細については、以下をご覧ください。
CloudController
ネットワーク
ストレージ
スケーラビリティ
セキュリティ
マイグレーション
AI
ServiceBroker
サーバーレス
アプリケーション管理
いくつかのオープンソース・コンポーネントの紹介
CloudController
CloudControllerは、Kubernetesのクラウドコントローラマネージャ(CCM)です。NodeController、ServiceController、RouteController、PVLControllerを介して、SLB(Server Load Balancer)、VPC(Virtual Private Cloud)ルーティング、ECS(Elastic Compute Service)、DNS(Alibaba Cloud Domain Name System)など、さまざまなクラウドベンダーの基本サービスと相互接続することができます。
NodeControllerは、ECSインスタンスのライフサイクルの管理など、コンピュートノードの管理を行います。NodeControllerは、ゾーン、リージョン、ホスト名でノードをマークすることで、オーケストレーションシステムがコンピュートプールのワークロードをスケジュールするために必要な完全な情報を提供します。また、ECSインスタンスのIPアドレスを定期的にポーリングし、ECSリソースが解放されているかどうかをチェックすることで、ノード情報を動的に更新します。これにより、オーケストレーションシステムが計算ノードのイベントに迅速に対応できるようになります。
ServiceControllerは、アプリケーションのロードバランシング管理を実装します。Kubernetes Serviceオブジェクトの変更を監視し、SLBインスタンス、リスナー、仮想サーバーグループなど、オフプレミスのSLBサービスを自動的に設定・管理し、アプリケーションのレプリカの変更に基づいてSLBインスタンスのバックエンドサーバーグループを調整します。これをベースに、アプリケーションのロードバランシングの設定をカスタマイズするための、さまざまなアノテーションを定義しました。また、Kubernetesのコミュニティと協力して構成を標準化し、Kubernetesのサービス発見モデルにENI(Elastic Network Interface)モードを追加しました。これにより、サービスディスカバリーのネットワーク階層が簡素化され、アプリケーションネットワーク全体のパフォーマンスが10%向上しました。
Terway: 高性能なネットワークコンポーネント
Terwayは、KubernetesのCNI仕様をサポートし、Alibaba Cloud向けに特別に最適化されています。VPCルーティングモード、ENIモード、インクルーシブENIモードなど、複数のエンタープライズ機能をサポートしています。ENIモードでのパフォーマンスは、ネイティブVPCでのパフォーマンスよりも約10%高くなっています。
TerwayはAlibaba Cloud Infrastructure as a Service(IaaS)と統合されており、ポッドがCloud Enterprise Network(CEN)やSLBなどのネットワーク製品を使用し、ENIを使用してネットワークのパフォーマンスロスを回避することができます。これにより、コンテナ化プロセスにおけるエクスペリエンスの低下やパフォーマンスの低下を解消します。また、KubernetesのネットワークポリシーやQoS(Quality of Service)ベースのスロットリングなどの高度な機能にも対応しています。
CSI:高性能なコンテナストレージコンポーネント
Alibaba Cloud Container Storage Interface(CSI)プラグインを使用すると、クラウドボリュームの作成、マウント、使用など、Kubernetesにおけるコンテナボリュームのライフサイクルを管理することができます。CSIプラグインは、V1.14以降のKubernetesのバージョンに基づいて実装されています。ディスク、Apsara File Storage NAS、Cloud Paralleled File System(CPFS)、Object Storage Service(OSS)、Logical Volume Manager(LVM)など、Alibaba Cloudのストレージサービスをサポートしています。
Log-Pilot: 高性能なログコレクター
Log-pilotは、コンテナから効率的にログを収集するためのツールです。コンテナの標準出力ログを簡単に収集できるほか、コンテナからログファイルを動的に検出して収集することができます。宣言型の設定モードでは、クラスタ内のコンテナの状態を自動的に検出して、コンテナのログ収集機能を設定することができます。また、自動チェックポイントやハンドルの保持、タグ付け、タグのカスタマイズなど、多くの高度な機能を備えています。これらの機能により、log-pilotは柔軟にログデータを収集し、Elasticsearch、Message Queue for Apache Kafka、Logstash、Redis、Graylogなどの様々なログストレージバックエンドに保存することができます。
Arena: Machine Learning Platform for AIのための軽量なソリューション
Arenaは、KubernetesをベースにしたMachine Learning Platform for AIのための軽量ソリューションです。データの準備、モデルの開発、モデルのトレーニング、モデルの予測をライフサイクル全体でサポートし、データサイエンティストの作業効率を向上させます。このサービスプラットフォームにより、データサイエンティストやアルゴリズムエンジニアは、Alibaba Cloudのリソースを利用して、データ準備、モデル開発、モデルトレーニング、評価、予測の作業を迅速に行うことができます。これらのクラウドリソースには、ECS、Elastic GPU Service、Apsara File Storage NAS、CPFS、OSS、E-MapReduce、およびSLBインスタンスが含まれます。また、サービスプラットフォームは、深層学習機能をサービスAPIに容易に変換し、ビジネスアプリケーションの統合を加速することができます。また、Elastic GPU Serviceのリソースを視覚的に管理し、デバイスのスケジューリングを共有することで、クラスタ内のElastic GPU Serviceリソースの利用率を向上させることができます。
SIGクラウドプロバイダーへようこそ
今回のウェビナーでは、アリババクラウドの製品をKubernetesコミュニティ向けに戦略的にアレンジしたものを初めて紹介しました。ここでは、すべてのオープンソースコンポーネントの詳細を説明することはできません。その代わり、Kubernetesに興味のある開発者が、対応するオープンソースプロジェクトを見つけられることを期待しています。どのような開発者でも、PRや問題提起、ロードマップの提案などを歓迎します。SIG-Cloud-Provider-Alibabaでは、特定のコンポーネントに関する原則やベストプラクティスを共有します。
よくある質問
Q1: Alibaba Cloud Kubernetesのクラウドプロバイダーは、各機能を有効または無効にするパラメータを追加できますか?
A1:はい。この目的のためにアノテーションを追加することができます。
Q2: 特定のバージョンのKubernetesを使用してAlibaba Cloud CCMに基づく修正を行った場合、問題は発生しますか?
A2: CCMはKubernetesのバージョンに依存しないため、問題はありません。
Q3: Alibaba CloudのKubernetesベースのコンテナサービスは、オープンソースのCCMを直接使用していますか?また、provider_idの具体的なフォーマットを教えてください。
A3: はい、Alibaba CloudのKubernetesベースのコンテナサービスは、オープンソースのCCMを直接使用しています。provider_idのフォーマットは、${regionid}.${nodeid}です。
Q4:Kubernetesのノード名は、CCMのAlibaba CloudのインスタンスIDと同じでなければなりませんか?O&M担当者は、同じでなければならないと言っていました。
A4:いいえ、現在はプロバイダIDのみを設定する必要があります。
Q5:Terwayの基盤となるレイヤーは、カーネルレベルやDPDK(Data Plane Development Kit)など、どのようにして高速化するのでしょうか?
A5: Terwayは様々な構成のネットワークで動作します。
- 排他的ENIモードでは、IaaS層のENIがポッドのENIとして使用されます。ホストは仮想化をサポートしておらず、DPDKを利用してポッド内のアプリケーションネットワークを高速化することができます。Alibaba Cloudが開発した高性能なIaaSネットワークを、ノード間で直接利用できます。
- 包括的なENIモードでは、IPVLANの軽量仮想化ソリューションがノード内の仮想化に使用され、ホストネットワークよりもはるかに低い性能劣化を実現します。
Q6: Podの基礎となるカーネルパラメータを名前空間で設定できますか?
A6: カーネルに依存します。Aliyun Linux2のLinux Kernel 4.19のような新しいカーネルでは、ほとんどのカーネルパラメータをポッド内で設定・変更できます。
Q7: Alibaba Cloudのセキュリティコンテナ製品にはどのようなものがありますか?
A7: Alibaba Cloud Container Serviceは現在、コンテナエンジンとしてセキュリティサンドボックスをユーザーに提供しています。また、Serverless App Engine(SAE)やElastic Container Instance(ECI)など、一部のAlibaba Cloudのサーバーレス製品もセキュリティコンテナをベースに構築されています。
Q8:Arenaはマルチテナンシーや仮想グラフィックプロセッシングユニット(vGPU)をサポートしていますか?
A8: Arenaは、Kubernetesの既存のユーザー認証やマルチテナンシーのポリシーを再利用しています。異なるユーザーは、認証のために異なるkubeconfigファイルを使用したり、名前空間を使用してリソースを隔離したり共有したりすることができます。Arenaに関しては、ユーザーはこのネームスペースのトレーニングと推論のタスクだけを見ることができます。ここで、vGPUとは、NVIDIAのvGPU技術を指す。現在、Alibaba CloudでP4をサポートするvGPU技術は、ACKに統合されています。Alibaba Cloud Container Serviceで始めることができます。Arenaの観点では、vGPUはスケジュールやオーケストレーションが可能なリソースであり、特別なリソースではありません。
Q9: マルチコンテナGPU共有ソリューションは、リソースの分離をサポートし、GPUを制限することができますか?
A9: 当社のGPU共有ソリューションでは、Alibaba Cloud Container Serviceが業界で唯一のオープンソースのGPU共有ソリューションを提供しています。現在、当社のソリューションは、スケジューリング層でマルチコンテナGPU共有を実装しており、アプリケーション層でGPUリソースを制限するために、TensorFlowなどのフレームワークと統合することができます。本ソリューションの使い方については、ユーザーガイドをご覧ください。また、Alibaba Cloudチームと協力して、安全で高性能なGPU分離ソリューションの開発を進めています。近い将来、GPU共有機能とアイソレーション機能を備えた完全なソリューションをご利用いただけるようになるかもしれません。
Q10: ExternalDNSはAlibaba Cloud DNSに対応していますか?
A10: Alibaba Cloud DNS PrivateZoneは現在サポートされています。サービスやポッドの解像度をKubernetesクラスタからAlibaba Cloud DNSに同期させることができ、クラスタに導入されているCoreDNSによる損失を軽減することができます。
Q11: Alibaba Cloudのingress-nginxとKubernetesコミュニティのingress-nginxとの大きな違いは何ですか?
A11:Alibaba Cloudのingress-nginxでは、ingress-nginxの設定を動的に更新するなど、より高度な機能を提供しています。また、ヘッダー、クッキー、リクエストパラメーター、ウェイトなどに基づいた段階的なリリースポリシーにも対応しています。
Q12: ACKとその開発キットのリリースサイクルを教えてください。
A12: ACKのメジャーバージョンは6ヶ月ごとに更新されます。バグは不定期に修正されます。
Q13: ACK@Edgeのビジネス版がリリースされましたが、どのようなユーザーが利用していますか?
A13: ACK@Edgeは製品化されています。オンライン教育、動画、Alibaba Cloud IoT、Alibaba Cloud CDNなど、さまざまな分野・業界のユーザーが利用しています。ビジネス版は2020年6月までに発売される予定です。
Q14:ホスト上のワーカーノードでコントロールグループ(cgroup)のメモリリークは発生ますか?その場合、どのように解決すればよいですか?
A14:Container Serviceが使用しているcgroupドライバは、systemdのcgroupドライバです。今のところ、cgroupのメモリリークは報告されていません。
Q15: PodのCPUとメモリのリソースはホストから隔離されていますか?分離されている場合は、どのように分離されていますか?
A15:Kubeletを使用してホストのリソースを予約し、Podのリソースが隔離のための残りのリソーススペース内に制限されるようにすることができます。
Q16:Alibaba Cloudには、AWSのecckctlやackctlに似たツールはありますか?
A16: 答えはaliyun-cliを参照してください。
Q17: Alibaba CloudはどのようにWindowsコンテナをサポートしていますか?
A17: 現在、バージョン1809のWindows 10がサポートされており、バージョン1903も近々サポートされる予定です。WindowsノードはLinuxクラスターに追加できます。
Q18: オープンコンポーネントを既存のKubernetesクラスターに統合することはできますか?
A18: はい。既存のKubernetesクラスターは、Kubernetesのコンフォーマンステストの要件を満たしています。
ライブプレゼンテーションの完全なビデオ(中国語)はこちらからご覧いただけます。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ








