Kubernetes ソースコード分析: リソースと API

Kubernetes ソースコード分析: リソースと API

この記事は、Kubernetes の基本原理をより深く理解するために、学習目的で Kubernetes ソースコードを分析する一連の記事です。

この記事では、マスターブランチ (https://github.com/kubernetes/kubernetes) を使用して、主に kubernates の関連コンポーネントを紹介します。ご興味があれば、ネットワークシリーズや展開シリーズも参考にしてください。

ご存知のとおり、Kubernetes は API ベースのインフラストラクチャです。 Kubernetes のすべての概念は、さまざまなリソースに抽象化されています。私たちがよく知っていてよく使用するデプロイメント リソース、サービス リソース、configmap リソース、statefulset リソース、サービス アカウント リソースなど、さまざまなリソースにはさまざまな機能があります。 Kubernetes の世界では、さまざまなリソースに対するすべての操作は API に基づいて完了します。 Kubernetes は、リソースに対する基本的な操作を完了するための一連の RESTfull API を提供します。

リソースの分割には基本的に 2 つの次元があります。1 つは名前空間に基づき、もう 1 つはコア リソースであるかどうかに基づきます。まず、名前空間に基づくディメンションを見てみましょう。

  • リソース インスタンスが名前空間で定義されている場合、つまり、名前空間レベルに属している場合、このリソースは、共通デプロイメント、サービス、ポッドなど、現在の名前空間に基づくリソース オブジェクト インスタンスと見なすことができます。
  • リソース インスタンスが Kubernetes クラスター全体で定義されている場合、つまりクラスター レベルに属している場合、このリソースは、共通ノード、クラスター ロール、クラスター ロール バインディング、永続ボリュームなどの非名前空間リソース オブジェクト インスタンスと見なすことができます。

次に、そのリソースがコアリソースであるかどうかという観点から、コアリソースと非コアリソースに分けることができます。

  • 共通のコア リソースには、pod、podtemplate、service、endpoint、configmap などがあります。これらのリソースは、Kubernetes の最も基本的な機能を提供します。たとえば、ポッドはコンピューティング機能を提供し、サービスとエンドポイントはネットワークとアクセス機能を提供し、構成マップは構成機能を提供します。
  • デプロイメント、ステートフルセット、デーモンセットなどの非コア リソースは、より高度な機能を提供します。コア以外のリソースの場合、Kubernetes はグループとバージョンに基づく管理概念を提供し、異なるリソースを同じグループにグループ化します。同じグループ内では、同じリソースに異なるバージョンが存在します。このリソースの構成と構造は、Kubernetes 機能の進化と変更、つまり、さまざまなリソース バージョンを通じてリソース機能を進化および強化するのに非常に役立ちます。

Kubernetes は標準の RESTfull API を提供するため、API の観点から見ると、上記のさまざまなディメンションに基づくさまざまなリソースの操作 API テンプレートは次のようになります。

  • Item1 と Item2 は、コア リソースの操作定義形式です。どちらも URI パス プレフィックスとして /api を使用します。コア リソースにはグループの概念はありませんが、バージョンの概念があるため、バージョン パス変数 ${version} があります。
  • 項目 1 は名前空間に基づくコア リソースに対する操作であるため、定義には名前空間パス変数 ${namespace-name} が含まれます。
  • Item2 は名前空間ベースではないコア リソースに対する操作であるため、定義には名前空間パス変数がありません。
  • 項目 3 と項目 4 は、URI パス プレフィックスとして /apis を持つ、コア以外のリソースの操作定義です。
  • iems3 は、名前空間に基づくコア以外のリソースの操作定義であるため、アクセス パスには、グループ、バージョン、および名前空間のパス変数定義 (つまり、${group-name}、${version}、および ${namespace-name}) が含まれます。
  • Items4 はクラスター全体のコア以外のリソースに基づく操作であるため、定義にはグループ パス変数とバージョン パス変数 ${group-name} と ${version} が含まれますが、名前空間パス変数は含まれません。

さらに、Kubernetes リソースは通常、RESTfull API に直接基づいてではなく、YAML ファイルに基づいて操作します (結局のところ、YAML ファイルは人間よりもユーザーフレンドリーです)。ただし、YAML ファイルの背後では、RESTfull API に変換されます。一般的に、YAML ファイルの形式は次のとおりです。

一般的に、リソースの典型的な YAML ファイルは、タイプ メタ、オブジェクト メタ、および仕様の 3 つの部分に分かれています。

  • タイプ メタは通常、リソースのグループ バージョンと種類情報を定義します。これは、API アクセス パスで定義された ${group-name}、${version}、${resource-kind} などのパス変数に直接対応します。
  • オブジェクト メタは通常、リソース名、それが属する名前空間、ラベルなどのメタデータ情報を定義します。これらは、API アクセス パス内の ${namespace-name} や ${resource-name} などのパス変数に直接対応します。
  • 仕様は一般に、リソースの特定のプロパティと特性を定義します (リソース仕様が異なれば必ず異なります)。また、リクエスト本文の形式で API に対応します。

とりあえずここで止めておきます。次回は、引き続き、リソース内の型メタやオブジェクトメタなどの重要な情報の定義をソースコードの観点から整理していきます。

この記事はWeChatの公開アカウント「TA码字」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合はTAの公式アカウントまでご連絡ください。

<<:  HUAWEI Cloud GaussDB(openGauss用):業界の悩みを解決し、Huaweiの消費者向けクラウドデータベースを分散型クラウドへと変革する支援

>>:  Kafka のパーティションリーダーを変更する方法

推薦する

ウェブサイトの 301 リダイレクト後のドメイン名に対する検索エンジンの影響に関する観察

当初は cn ドメイン名や com ドメイン名など、いくつかのドメイン名を登録しました。当初、私はc...

クラウドネイティブ災害復旧製品 HyperBDR の自動テスト実践

HyperBDR は、クラウド ネイティブ コンセプトに基づいた移行および災害復旧製品です。コアビジ...

起業家精神の共有: Instagram がユーザーの心をつかむ方法

Zhihu には興味深い質問があります。「パソコンの電源を入れるとすぐに QQ を開かずにはいられま...

Pacificrack: 米国向けに最適化された VPS が 50% オフ、さらに 2 つ買うと 1 つ無料、更新にも適用

Pacificrack は、今から旧正月初日 (2 月 1 日) まで、2 つ買うと 1 つ無料にな...

マルチクラウドは DevOps の基礎となる準備ができていますか?

アプリケーションからそれが実行されるインフラストラクチャまで、IT の現実は分散化され、異機種混在し...

SaaS製品の5つのコア指標の詳細な説明

1. 定期的な収入1. MRR/ARRとは何か経常収益とは、将来にわたって継続的に得られる収入のこと...

医療ウェブサイトの最適化のためのキーワードの選び方

以前、医療ウェブサイトを最適化する際に注意すべき10のポイントについて説明しました。今日は、医療ウェ...

電子メールを活用して e コマース サイトの飛躍を促進 (パート 2)

前回の記事「電子メールに翼を与えて、電子商取引サイトの飛躍を助けましょう(パート 1)」では、電子メ...

ウェブサイトのキーワードを効果的に決定する方法

検索エンジンを通じてより多くのトラフィックを獲得する方法を検討している場合、キーワードはあなたの仕事...

漫画でKubernetesを理解する

私は最近、Kubernetes の内部をより深く理解することを目的として、Kubernetes への...

ECサイト構築時に注意すべきこと

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

AppleはiOS 6で新しいマッピング技術を取得する予定と報じられている

Google のマップデータスイッチボードから離れた社内ソリューションは、Apple にとって差し迫...

liteserver-13.6 ユーロ/年/128 メモリ/100 GB ハード ドライブ/1 TB トラフィック/オランダ

liteserver.nl は 2007 年に設立されたオランダのホスティング会社です。商工会議所番...

cloudcone: 月額 2.22 ドル、時間単位で課金 + 1Tbps の高防御 US VPS をサポート

Cloudcone VPS は Black 5 に続いて別のプロモーション シリーズを開始しました。...

新しいサイトページをBaiduに素早くインデックスさせる方法

新規のウェブマスターにとって、インクルードは常に最も頭を悩ませる問題です。Google は問題ありま...