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をバックアップする方法

推薦する

QQ(テンセント)Weiboを使ってBaiduでランクインする方法

なぜ今日は「QQ(テンセント)Weiboを使ってBaiduランキングを行う方法」というタイトルの記事...

コンテナが AI を強化 - 360 プライベート クラウド コンテナ サービスにおける人工知能の実践

360プライベートクラウドコンテナサービスチームと人工知能研究所チームは協力して、クラウドでの機械学...

電車で遊ぶことは、結局のところ絵の競争です

直通列車の使用は、実際には依然としてビジュアル マーケティングを行うことであり、最終的にはイメージの...

Amazon Web Services と Riot Games が協力して e スポーツ体験を刷新

2022年8月11日、ライアットゲームズは、アマゾン ウェブ サービスと連携して、ライアットゲームズ...

JVM メモリ割り当てと一般的な文字列メソッド

[[275905]] 1. JVM メモリ割り当てと定数プールString クラスを紹介する前に、J...

Baiduの従業員による最新の調整についての私の意見

百度の最近の調整はますます頻繁になっています。今回、百度の従業員が明らかにした最新の調整は、変動の波...

Baidu スナップショットをタイムリーに更新するために注意すべき 4 つの側面

以前作成したいくつかのサイトは、すべてランキングが良好でした。ホームページの一部は途中で何度も Ba...

クラウド コンピューティングと仮想化の違いは何ですか?

クラウド コンピューティングと仮想化は互換性のある用語ではなく、IT 環境、システム、またはネットワ...

ソーシャル メディア運用: ソーシャル マーケティングの 7 つの大罪

140語の要約:ソーシャル メディアで成功するには、避けるべきよくある間違いがいくつかあります。これ...

リンク交換の効果は少ない - 高品質のバックリンクを作成する方法

まず、ソフト記事プロモーションの最大のメリットは、ウェブサイトに高品質のバックリンクをもたらすことで...

クラウド コンピューティングのよくある 7 つの問題とその解決方法

[[389544]]業界の専門家は、クラウド コンピューティング テクノロジーにより、組織が大規模な...

inceptionhosting-5.35 ユーロ/2g メモリ/XEN/50g ハードディスク/1t トラフィック

Inceptionhosting のマイアミ データ センターの XEN VPS が、大容量メモリと...

ウェブマスターが Baidu エクスペリエンスの合格率を向上させる方法の実践的な説明

ウェブマスターは皆、高品質の外部リンクを作成するための好ましいプラットフォームは、Baidu Spa...

ウェブサイトのテキストリンクをより効果的にする方法

テキスト リンクは紙の上では非常に簡単に見えますが、特に初心者の場合、操作を間違えることがよくありま...

認定資格やリモートワークがクラ​​ウドコンピューティングの給与に与える影響

COVID-19 パンデミックにより、クラウド コンピューティング関連の職種の需要が急増しており、エ...