Kubernetes C# クライアント ライブラリを使用するにはどうすればよいでしょうか?

Kubernetes C# クライアント ライブラリを使用するにはどうすればよいでしょうか?

[51CTO.com クイック翻訳] Kubernetes の使用は必ずしも簡単ではありません。クラスターとポッドの管理には労力がかかります。クラウドでホストされる Kubernetes インスタンス (Azure の AKS など) は多くの面倒な作業を処理できますが、オンプレミスまたは独自の仮想インフラストラクチャで Kubernetes を実行している場合、これらは使用できません。

[[319140]]

ここで Kubernetes API が役立ちます。これは、Kubernetes がコンポーネントと外部コントローラー間で通信するための手段です。 kubectl コマンドライン ツールを使用して API と通信することも、使い慣れた REST (Representational State Transfer) 呼び出しを通じて API を使用することもできます。 API は、ワークロードの管理、クラスターの構成、アプリケーションとクラスターの動作の管理に役立ちます。

このような RESTful API は便利なツールですが、独自のコントローラーを構築する場合は多くの開発が必要になります。公式の Kubernetes API クライアント (現在は .NET ライブラリが含まれています) の 1 つを活用することで、関連する開発オーバーヘッドを回避できます。公式クライアントに加えて、非公式クライアントもあります。公式バージョンが使用方法に合わない場合は、非公式バージョンに 2 つの代替 .NET 実装が含まれています。

.NET Kubernetes API クライアント ライブラリの紹介

公式の .NET クライアント ライブラリは GitHub で入手でき、Microsoft の担当者を含むオープン ソース開発者のグループによって管理されています。最新バージョンは1.6.21で、現在開発中です。 GitHub からコードをダウンロードして自分でコンパイルすることも、KubernetesClient というパッケージとして NuGet 経由でライブラリをアプリケーションに追加することもできます。インストールしたら、load client ステートメントを使用してコードにライブラリを追加します。このライブラリは .NET と .NET Core の両方をサポートしているため、クロスプラットフォーム アプリケーションや純粋な Windows コードの作成に使用できます。

インストールが完了すると、ライブラリを使用して、分散アプリケーションのイベントに応答する特定のイベント ハンドラーなど、Kubernetes 用の独自のツールを構築できるようになります。まず、Kubernetes 名前空間のイベントをリッスンすることから始めます。これは、C# の既存の非同期プログラミング機能を使用し、イベントを監視するための await を設定し、ハンドラーを結果に接続することで実現できます。 Kubernetes は、独自のイベントを監視し、カスタム Kubernetes インフラストラクチャを管理するために使用できるカスタム リソースを提供します。

Kubernetes 側では、まずコードが使用するコントローラーの適切なカスタム リソース定義を構築します。これには、API バージョンと、リソースに必要な適切なメタデータが必要になります。これらの要素は C# Kubernetes API 内のオブジェクトにマップされ、オブジェクトから読み取ることができます。最後に、リソースの仕様とステータス フィールドに独自のデータを追加し、独自のリソース クラスを管理できます。

これらの要素が揃ったら、表示するリソースのカスタム リソース定義を使用して、Kubernetes API クライアント インスタンスにそれらをラップすることでコントローラーを構築できます。イベント ハンドラーから結果を取得したら、ログの書き込みや Kubernetes インスタンスの変更など、Kubernetes 管理アプリケーションの残りの部分でそれらを使用できます。 Kubernetes コードがカスタム リソースのステータス フィールドにメッセージを書き込む場合、そのようなハンドラーは必要に応じて新しいポッドを生成できます。

Kubernetes クライアントの作成

クライアントを作成するということは、インスタンスの Kubernetes 構成データを読み込むことを意味します。これは、デフォルトのローカル kubeconfig、特定のファイル、または現在のクラスターから実行できます。構成データを構成オブジェクトとして取得したら、読み込まれた構成を使用してクライアントを作成できます。

これにより、Kubernetes API 呼び出しで使用できるクライアント オブジェクトが提供されます。ライブラリの GitHub リポジトリには、便利なサンプル コード セットがあります。これらの例をコピーして実行すると、.NET Kubernetes クライアントの使用方法、構文の理解方法、API を使用して作成、読み取り、更新、削除などの操作を処理する方法を理解するのに役立つため、試してみる価値があります。

便利な例としては、ポッド内の名前空間を一覧表示する 25 行の小さなプログラムがあります。 Kubernetes インスタンスを制御するアプリケーションを構築する場合、存在するすべての名前空間をリストすることが重要です。これらの名前空間を使用すると、API を Kubernetes インフラストラクチャの特定の部分にターゲット設定できるためです。

Kubernetes APIドキュメントの操作

.NET API ライブラリを最大限に活用するには、Kubernetes API のドキュメントを時間をかけて読むことをお勧めします。ライブラリには始めるのに十分な情報が含まれていますが、独自のコントローラーを構築するために必要な詳細を取得するには、公式ドキュメントを詳しく調べる必要があります。他の API ライブラリ実装のドキュメントを参照すると役立つ場合があります。 Java または Go の呼び出しを C# に変換するのは難しくなく、他のユーザーがこれらの API をどのように使用しているかを確認することもできます。

もう 1 つのオプションは、kubectl ドキュメントを使用して、コード内で主要な kubectl 動詞を使用する方法を確認することです。より複雑なタスクに取り組む前に、API などのツールを使用して、一般的な操作を自動化するアプリケーションを構築することから始めることをお勧めします。新しいコードを書く前に、既存の Kubernetes 拡張機能が、KEDA (Kubernetes イベント駆動型自動スケーリング) など、検討している機能をすでに実装しているかどうかを確認する必要があります。

独自のコードでKubernetes操作を自動化する

Kubernetes の管理は複雑になる可能性があるため、Kubernetes API を操作するための独自のツールを構築するのに役立つ公式ライブラリのセットが用意されていると便利です。活発なコミュニティと非公式クライアントとのやり取りから、.NET API チームが、.NET Framework と .NET Core の両方で Kubernetes で実行できるコードを構築するための実用的なフレームワークを提供するために懸命に取り組んでいることは明らかです。

クラウドネイティブ プラットフォーム上で実行される分散アプリケーションに必要な次世代の運用ツールを構築するには、このようなツールが不可欠です。使い慣れた言語、特に他のプラットフォームのライブラリにアクセスできる言語を使用することで、Azure Pipelines、GitHub、Kubernetes などのプラットフォームに接続するツールを構築し、現在手動​​で行っている作業の多くを自動化できます。

元のタイトル: Kubernetes C# クライアント ライブラリの使用方法、著者: Simon Bisson

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

<<:  エッジコンピューティングはクラウドコンピューティングを飲み込む可能性があります。プレイヤーは誰が勝つかについて独自の考えを持っています。

>>:  KubernetesとDockerをバックアップする方法

推薦する

liteserver: 再入荷、オランダの大容量ハードドライブ VPS、月額 5 ユーロ、1G メモリ/1 コア (AMD EPYC 7452)/512G ハードドライブ/10T トラフィック

Liteserverの大容量ハードドライブストレージVPSシリーズがついに再入荷しました。9か月間の...

エッジコンピューティング + モノのインターネットはどのような火花を散らすのでしょうか?

エッジコンピューティング + IoT クラウド プラットフォームは、大手企業間の強力な協力のハイライ...

ハイブリッドクラウドプロジェクトの成功率を向上させる方法

企業はワークロードをパブリック クラウドに移行し、オンプレミスでプライベート クラウドを実装していま...

Kafka アプリケーションを理解するための 2 つの図

[[270715]]Kafka の用語ブローカー: メッセージを保存する中間の Kafka クラスタ...

SharkTech: 10Gbps 無制限トラフィック サーバーが 500 ドル値下げ、40Gbps 防御が無料に

Sharktech、10Gbps 帯域幅サーバー、無制限トラフィックサーバー、スーパープロモーション...

ファイバーステートはどうですか?ソルトレイクシティデータセンター専用サーバーの詳細レビュー

Fiberstateは新しいビジネスです。主な業務は、ソルトレイクシティのコンピュータールームでのサ...

国内のKickstarter系クラウドファンディングサイトの現状と展望を簡単に振り返る

【編集後記】この記事は著者@望月さんのブログから転載したものです。海外では、Kickstarterに...

百度は長沙天心区と提携し、20億元を投資して中国のクラウド電話産業基盤を構築

「新インフラ」の幕が徐々に開く中、百度は新たな動きを見せている。 7月17日、百度のARMクラウドフ...

ウェブサイト構築サイクルに基づいて適切な外部リンク計画を策定する

外部リンクはウェブサイトに欠かせない要素です。優れた外部リンク戦略は、ウェブサイトの重みを素早く高め...

「ファーウェイクラウドスターライトプログラム」が上海で正式に導入され、SaaSエコシステムに新たな価値を生み出すパートナーをサポート

8月27日、「賢者たちが集結し、SaaSエコシステムに新たな価値を創造する」をテーマにした上海Saa...

注意してください! Kafka と RabbitMQ を無差別に使用しないでください…

経験豊富なマイクロサービス システム アーキテクトとして、RabbitMQ と Kafka のどちら...

短期間でウェブサイト数を急速に増やす方法の簡単な分析

ロングテールキーワードは、他の最適化方法に比べて競争が少なく、ターゲットがより正確で、コンバージョン...

moonvm: 香港の高帯域幅 VPS、月額 10.8 ドルから、1G メモリ/1 コア/10gSSD/5T トラフィック

moonvm は本日、香港 HGC コンピュータ ルームで香港高帯域幅 VPS と香港高トラフィック...

2012年ウェブマスター年次会議が成功裏に終了し、Haodouが最優秀モバイルインターネットアプリケーションに選ばれました

第7回中国インターネットウェブマスター年次会議が4月7日に北京国際会議センターで成功裏に開催されまし...