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 のパーティションリーダーを変更する方法

推薦する

5種類のサーバー仮想化を理解する

仮想化により、ネットワーク、ストレージ、コンピューティング リソースが抽象化され、アプリケーション、...

Bilibiliは徐々に劣化しているのでしょうか?

Bilibiliは最近話題になっており、ブランド動画マーケティングや動画セルフメディアの好まれるプラ...

ウェブサイトのユーザーエクスペリエンス最適化の重要性

電子商取引ウェブサイトの場合、ウェブサイトのユーザーエクスペリエンスの詳細が適切に処理されていない場...

SEOの中流階級改革への道

SEO 業界は、比較的参入障壁が低く、新興業界という特性も考慮すると、現在の業界の中で最も二極化が進...

アマゾン ウェブ サービス (AWS) 中国と KPMG 中国が戦略的パートナーシップを確立

2020年9月10日、アマゾンウェブサービス(北京)有限公司(AWS中国)とKPMGエンタープライズ...

2021 年に注目すべき 8 つのエッジ コンピューティング トレンド

[[373788]]コンピューティングの今後とそれが組織の戦略にどのような影響を与えるでしょうか?専...

Kubernetes におけるサービス登録と検出の原則の分析

k8s についてある程度の知識を持つ技術者は、k8s にサービス登録と検出機能があることだけを知って...

IBMの新サーバーは引き続きPower7+を使用し、ハイブリッドクラウドをターゲットにしている

IBM が次期 Power8 プロセッサ向けにサードパーティ ライセンスを提供するという決定は、現行...

インターネットのグローバル化:海外トラフィックの配当期間は過ぎたのか?

2018 年の海外インターネット業界を一言で表すとしたら何になりますか?多くの人が最も直感的に感じる...

パンデミック後のスマートマーケティング:古いルールの崩壊と新しい秩序の台頭

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービステキスト:インターネット...

安定性と拡張性を強化したk8s高可用性ソリューション「クラウドネイティブ」の解説と実践運用

1. 概要高可用性ソリューションに関する私の以前の記事やその他のオンライン資料では、基本的にほとんど...

エンタープライズレベルの SaaS は間違った方向に進んでいます。クラウド ERP がその主戦場です。

[[208888]]数年前に SaaS に対する資本の「注目」が何度か波及した後、その結果を確認する...

Linode-日本データセンター新プラン月額5ドルVPSレビュー

昨日、Linode は、最低 VPS 価格を 1G メモリで月額 5 ドルに引き下げると発表しました...

Weiboも有効活用しましょう。TaobaoセラーがWeChatマーケティングを効果的に運用する方法!

TaobaoとWeChatは互換性がないことは誰もがよく知っています。タオバオには独自の「王来」があ...

「SEO in Plain Language」の10日間の解釈

この本を書く目的は、お金を稼ぐためでも、皆さんと学び、コミュニケーションをとるためでもありません。私...