Kubernetes でサーバーレスを実現する 5 つの方法

Kubernetes でサーバーレスを実現する 5 つの方法

[51CTO.com クイック翻訳] よく耳にする「サーバーレス」は、「イベント駆動型コンピューティング」や「Functions as a Service (FaaS)」と呼ばれることもあります。その背後にある考え方は、さまざまなイベントに応じてリソースを動的に割り当てることで、さまざまなマイクロサービスの機能を呼び出したり実行したりすることです。サーバーレス コンピューティング プラットフォームにより、アプリケーション開発者はインフラストラクチャとその管理の詳細ではなく、アプリケーション自体に集中できるようになります。

[[313278]]

現在、ほとんどのクラウド サービス プロバイダーは、対応するサーバーレス プラットフォームを提供できます。もちろん、2 つの要素を使用して独自のプラットフォームを構築することもできます。 1 つ目は、コンテナ オーケストレーション システムである Kubernetes です。標準化されたプラットフォームとして、スケーラブルなコンポーネント化されたアプリケーションの構築を可能にします。 2 つ目は、Kubernetes でサーバーレス アプリケーション パターンを構築するシステムです。

現在、ほとんどの Kubernetes サーバーレス フレームワークには、次の共通機能があります。

  • OpenShift などの環境を含む、Kubernetes 対応のあらゆる環境にローカルまたはリモートでデプロイする機能。
  • あらゆる言語で記述されたコードの実行をサポートし、いくつかの一般的なランタイムがパッケージ化されたフレームワークが付属しています。
  • HTTP エンドポイント、キュー メッセージ、その他のフックなどのさまざまなイベントを通じてコード実行をトリガーします。

Kubernetes 上でサーバーレスを構築する主な利点の 1 つは、基盤となるプラットフォームをより細かく制御できることです。 Kubernetes を使用すると、ニーズを満たすサーバーレス プラットフォームを作成できるため、Kubernetes オペレーターはインフラストラクチャを管理し、開発者は必要なコードの作成に集中できます。

以下では、Kubernetes 上でサーバーレス機能を実装する 5 つの主要プロジェクトを紹介します。彼らです:

  • 核分裂
  • ネイティブ
  • キューブレス
  • オープンFaaS
  • オープンウィスク

核分裂

Fission は、Kubernetes の子会社である Platform 9 によって作成および保守されています。主な特徴は、コンテナを構築する必要がなく、定義ファイルを提供することでアプリケーションを作成できることです。

Fission のインストールには必ずしも Helm チャートは必要ありません。一般的に、メッセージ キューを備えた包括的なバージョンとログ サポートを備えた InfluxDB の 2 つのバージョンがあります。基本的な機能とサービスのみを提供する簡易版もあります。前者は本番環境にのみ導入できますが、後者は小規模での試用のみに利用できます。

Fission にコードを追加してデプロイするには、YAML ベースの仕様ファイルを使用します。同時に、Fission のコマンドライン ツールを使用すると、さまざまな機能やルート エントリ トリガー ポイントの YAML ファイルを作成できます。さらに、これらの仕様ファイルを使用すると、さまざまな環境変数、補助コンテナ、ボリューム、Kubernetes フォールト トレランス制御コードを提供できます。

もちろん、Fission は「ワークフロー」も提供します。 Helm チャートをインストールすると、2 つの関数が同じプログラミング言語で記述されていない場合でも、これらのワークフローを 1 つの関数からエクスポートして別の関数に渡すことができます。システムのオーバーヘッドを削減するために、ワークフロー システムは、整数、一般的なバイト ストリームなど、多くの一般的なプリミティブ バイナリ タイプをデフォルトでサポートしていることに注目してください。ただし、各関数では、形式の変換、出力、送信を実行するときに、一定のパフォーマンス コストが発生します。

このタイプの FaaS の欠点の 1 つは、関数を最初に呼び出すときに、関連するコンテナーで顕著な遅延が発生することです。したがって、Fission はコンテナを「予熱」することでこのような遅延を最小限に抑える必要があります。

さらに、Fission が開発者や管理者に提供できるその他の利便性としては、外部インターネットにアクセスできないクラスターへのサービスの展開、オンデマンドでのクラスターへのコードのホット リロード、開発者のデバッグを支援するための機能のさまざまなアクティビティの記録と再生などがあります。また、Fission プロジェクトには寛大な Apache ライセンスが適用されているため、ユーザーは無料で変更することができます。

ネイティブ

もともと Google によって作成された Knative は、ユーザーが Kubernetes でさまざまなサーバーレス アプリケーションを実行するのに役立ちます。実稼働環境でのサーバーレス デプロイメントの一般的なパターンに焦点を当てています。 Knative は、複数の Kubernetes コンポーネントを効果的に管理および活用するための豊富な専門知識を蓄積してきました。

Kubernetes を管理するには、Knative ではルーティング システムと Istio などのサービス メッシュのほか、Ambassador などの他のオプションも必要です。これには追加のセットアップ作業が必要になりますが、プロジェクトの詳細なガイドには、さまざまなクラウド サービスや、標準の Kubernetes などの環境に関する手順がすでに含まれています。

Knative は、既存の Kubernetes ツールと機能を活用または拡張することで、YAML ファイルを通じてさまざまなアプリケーションと機能を構成し、Docker コンテナを配信できます。さまざまな定義の追加、変更、削除は、kubectl コマンドラインを通じて実行できます。ユーザーは Grafana を使用して Knative アプリケーション パラメータを取得できるほか、Knative 独自のオートスケーラーやその他の Kubernetes 互換スケーラーを使用して拡張を実現することもできます。

ただし、Knative はまだ集中的な開発中であり、その独自ツールの多くはまだ初期段階にあります。その中でも、knctl は専用の Knative コマンドライン ツールです。これにより、他の Kubernetes ツールを使用して Knative を管理しやすくなります。 ko ツールを使用すると、Knative で Go 言語アプリケーションを構築し、コンテナーの構築手順を削減できます。

キューブレス

Bitnami によって作成された Kubeless は、開発者がさまざまな一般的な Web アプリケーション スタックを簡単にインストールするのに役立ちます。 Kubeless は、さまざまなネイティブ Kubernetes カスタム リソース定義 (カスタム リソース定義) を使用して、さまざまな機能を処理します。これは、Kubernetes メタファーと Kubeless のさまざまな機能の間の抽象化レイヤーと考えることができます。

Kubeless は、.NET、Java、Python、Node.js、PHP、Ruby などほとんどのプログラミング言語をサポートしているだけでなく、クラウドネイティブ向けに開発された Ballerina 言語のランタイム プラットフォームもサポートしています。ここでのランタイムは、さまざまな Docker イメージを指します。もちろん、Kubeless にも特定のパッケージ形式があり、Dockerfiles を使用してカスタム ランタイムを構築できます。

Kubeless のもう 1 つの便利な点は CLI です。 CLI は AWS Lambda の CLI と多少似ています。これにより、AWS Lambda から移行する際に、まったく新しいコマンドセットを学習することなく、既存の管理スクリプトを保持できます。 Kubeless は、サーバーレス フレームワークのプラグインとして使用して、さまざまなアーキテクチャ上でサーバーレス アプリケーションを構築することもできます。

オープンFaaS

OpenFaaS の目的は、開発者が Docker コンテナを展開する際の手間を軽減することです。したがって、Kubernetes にデプロイできるだけでなく、ローカル テストや需要の少ない Docker Swarm クラスターにも使用できます。 OpenFaaS CLI を使用して、さまざまな Docker イメージをビルド、プッシュ、クラスターにデプロイし、対応する機能を実行できます。独自のアプリケーションを公開することもできますが、Python、Node.js、.NET、Ruby、Java、または PHP 7 で事前に作成された既製のテンプレートを使用してアプリケーションをデプロイすることもできます。さらに、OpenFaaS CLI の組み込み Web UI を使用すると、新しい関数を作成したり、クラスター内のキーを管理したりできます。

OpenFaaS の別のバージョンである OpenFaaS Cloud は、開発者向けに OpenFaaS の機能を再パッケージ化し、GitHub と GitLab のセルフホスト バージョンを統合し、CI/CD、キー管理、HTTPS、イベント フィードバック機能を Slack に提供します。 OpenFaas Cloud は無料のオープンソース製品であり、ホスト型バージョンも引き続き無料でご利用いただけます。

オープンウィスク

Apache OpenWhisk は汎用のサーバーレス プラットフォームです。 OpenWhisk は、Kubernetes 上でのコンテナの実行をサポートするだけでなく、Mesos と Docker Compose もサポートします。 OpenWhisk は、Kubernetes がさまざまなアプリケーションをデプロイするための Helm チャート ツールを提供します。皆さんもよくご存知の IBM Cloud Functions は OpenWhisk プロジェクトをベースとしているため、OpenWhisk CLI のさまざまなコマンドを直接使用できます。

他のほとんどのサーバーレス Kubernetes フレームワークとは異なり、OpenWhisk は Kubernetes や Docker の作成に使用される言語である Go ではなく、Scala で書かれています。したがって、プログラミングのアイデアを理解するには、ある程度の時間が必要になるかもしれません。

アプリケーション ランタイム オプションに関しては、OpenWhisk は Java、Node.js、Python、Ruby、PHP、.NET をラップします。さらに、高水準言語オプションには、Scala、Ballerina、Swift、Rust が含まれます。ランタイムは Docker コンテナ タイプなので、独自のアプリケーションを簡単に実装できます。

OpenWhisk のデプロイメントに便利な機能は、「zip アクション」です。コード パッケージのマニフェスト ファイルを使用して、コードと複数の補助ファイルの zip パッケージを OpenWhisk にポイントできます。 OpenWhisk はこれに基づいて後続のアクションを作成できます。同時に、OpenWhisk CLI はツールを使用してコード ディレクトリ ツリーをアーカイブ ファイルに変換することもできます。サービス パッケージ カタログを使用すると、GitHub、Slack、Apache Kafka、Jira などの一般的なサードパーティ製品にアプリケーションを簡単にプラグインできます。

原題: Kubernetes でサーバーレスを実現する 5 つの方法、著者: Serdar Yegulalp

[51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください。

<<:  2020年に5Gとエッジコンピューティングはどのように発展するのでしょうか?

>>:  クラウドを維持するか、クラウドに移行するか?それが問題だ

推薦する

概要: 検索エンジンでのウェブページのランキングに影響を与える 4 つの主な要因

最適化担当者が最も関心を持っているのは、検索エンジンのテクノロジーと動向であり、検索エンジンのランキ...

wattaserver - $24/年/128 メモリ/128 スワップ/50g SSD/225g トラフィック/シアトル

Wattaserver は、oneilonline のサブブランドです [20 年の歴史 (1994...

市場セグメントを運営し、ウェブマスターが2012年のインターネットモデルを採用するための新たな機会を創出する

ニッチ市場を運営していると、QQ グループの友人から「ウェブサイトを構築した、プロジェクトがある」と...

spinservers: サンノゼ専用サーバー、100M\1Gbps\10Gbps の帯域幅、無制限のトラフィック、月額 119 ドルから、超高構成、期待以上

中国の伝統的な旧正月である春節を祝うために、スピンサーバーは米国西海岸のサンノゼデータセンターに「無...

武漢2012 Democoffee初のウェブマスターサロン純粋な実践的な共有

@democoffee の Zhao @zhaohongliang さんに招待されて、武漢のウェブマ...

ビジネスにおけるエッジコンピューティングの 5 つのメリット

エッジ コンピューティングは、コンピューティングとストレージをデータが収集される場所に近づけることで...

テンセントクラウドデータベースが国信証券に上陸、1日平均取引量が数十億に上る

3月7日、テンセントクラウドデータベースTDSQLが国森証券の業務システムに導入され、システムが3ヶ...

ビジュアルコネクティビティ: ワールドカップのトラフィックの急増中に、広告主はどうすれば最大限の露出を実現できるでしょうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています2018年...

タオバオの売り手がブログを宣伝するための5つの重要なポイント

以前、張立はA5「ウェブマスター記録」に参加し、タオバオの運営について語った際、タオバオの売り手のブ...

SEOプロジェクト管理プロセスの簡単な分析

この記事の著者は、大慶の SEO プロジェクト マネージャーである Xiaoyun です。この記事は...

初心者の SEO 担当者の皆さん、フォーラム署名の効果は本当にあなたが思っているほど良いのでしょうか?

1か月前にSEOを学び始めてから1か月以上が経ちました。私がやっていることは、ほとんどオリジナルの記...

マイクロビデオ業界に関する調査:マイクロビデオ業界の成功率は初期段階で1%未満

Groupon、Instagram、Pinterest に次いで人気を博し、次の大きな市場を創り出す...

hosthatch Sydney VPS はいかがでしょうか?ホストハッチのオーストラリアVPSの詳細なレビュー

Hosthatchは、オーストラリアのシドニーに、デフォルトの帯域幅10Gbps、KVM仮想化、AM...

この記事を読めば、クラスタノードはオフラインになりません

問題は起こり続ける1. まだ準備ができていないAlibaba Cloud には独自の Kuberne...