[51CTO.com クイック翻訳] Kubernetes の使用は必ずしも簡単ではありません。クラスターとポッドの管理には労力がかかります。クラウドでホストされる Kubernetes インスタンス (Azure の AKS など) は多くの面倒な作業を処理できますが、オンプレミスまたは独自の仮想インフラストラクチャで Kubernetes を実行している場合、これらは使用できません。
ここで 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をバックアップする方法
Elasticsearch は、オープンソースの分散型全文検索および分析エンジンです。 RESTfu...
この記事を書いた主な目的は、ウェブマスターに、常に過去の視点で現在の SEO 最適化を見ないように伝...
Yahoo のバックリンク ツールが閉鎖されて以来、外部リンクの確認は SEO 担当者にとって常に頭...
Varidata の毎年恒例の Double 11 プロモーションが始まりました。香港と台湾の E3...
テクノロジーが発展するにつれて、新しいアプローチを必要とする新しい問題も発生します。スマートスイッチ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています企業にSE...
この記事では、Raksmart の 3 ネットワーク CN2 GIA ラインの「クラウド サーバー」...
中国の共同購入サイトの数は2,919に減少し、毎日5.9サイトが消滅している。昨日、共同購入ナビゲー...
歴史を学んだ友人は、1978年以来、中国が改革開放政策を実施し、中国が徐々に世界に向かって進み、最終...
ウェブサイトの最適化を行ったすべての SEO 担当者にとって、新しいサイトか古いサイトかに関係なく、...
これは、TravelSpike の CEO 兼共同創設者である Ryan Bifulco によるゲス...
Nexusbytes は現在、米国西海岸のロサンゼルス データ センターの VPS をフラッシュ セ...
科学技術の漸進的な発展に伴い、あらゆる分野の競争、特に企業間の競争はますます激しくなっています。注意...
著者のQQ空間資料ネットワークは、オンラインになってから1か月以上経ちました。百度は週に2回更新する...
[51CTO.com からのオリジナル記事] 最近、2018 Microsoft テクノロジーおよび...