漫画でKubernetesを理解する

漫画でKubernetesを理解する

私は最近、Kubernetes の内部をより深く理解することを目的として、Kubernetes への旅を始めました。私はこれらの点についてプレゼンテーションを行いました。

[[285362]]

容器

Kubernetes を理解する前に、コンテナとは何か、そしてなぜそれほど人気が​​あるのか​​を少し説明しましょう。結局のところ、コンテナが何であるかを知らずにコンテナオーケストレーター (Kubernetes) について話しても意味がありません。

容器

「コンテナ」とは、中に入れるものすべてを保管する容器です。

アプリケーション コード、依存ライブラリ、そしてカーネルに至るまでの依存関係など。ここでの重要な概念は分離です。すべてのコンテンツを他のコンテンツから分離して、より適切に制御できるようにします。コンテナは3種類の分離を提供します

  • ワークスペースの分離(プロセス、ネットワーク)
  • リソースの分離(CPU、メモリ)
  • ファイルシステムの分離(ファイルシステム)

コンテナを VM のように考えます。スリムで、高速(しかもおまけに)、小型です。そして、これらすべてにおいて分離は存在しません。代わりに、Linux システムに存在する構成要素 (cgroup、名前空間など) を使用して、その上に優れた抽象化を構築しました。

コンテナが何であるかがわかったので、コンテナがなぜ人気があるのか​​簡単に理解できます。コンテナは非常に小さな単位として構築できるため、アプリケーションのバイナリ/コードを出荷できるだけでなく、アプリケーションを実行するために必要な環境全体を実用的な方法で提供することもできます。 「私のマシンでは動作する」問題に対する完璧なソリューション

Kubernetes はいつ使用すればよいですか?

コンテナはすべて優れており、ソフトウェア開発者としての生活ははるかに良くなりました。では、なぜ Kubernetes のようなコンテナ オーケストレーターという別のテクノロジーが必要なのでしょうか?

この状態に達すると、管理するコンテナが多すぎる

Q: フロントエンド コンテナはどこにありますか? また、その中で実行されるコンテナの数はいくつですか?コンテナオーケストレーターの使用

Q: フロントエンド コンテナーを新しく作成したバックエンド コンテナーと通信させるにはどうすればよいですか? A: IP をハードコードします。あるいはコンテナオーケストレーターを使用する

Q: ローリングアップグレードはどのように実行しますか? A: 各ステップを手動で制御します。あるいはコンテナオーケストレーターを使用する

私がKubernetesを好む理由

docker swarm、Mesos、Kubernetes など、複数のオーケストレーターがあります。私が Kubernetes を選択したのは、Kubernetes が… という理由からです (この記事の目的もそこにあります)。

…レゴブロックのように。コンテナ オーケストレーターを大規模に実行するために必要なコンポーネントを備えているだけでなく、さまざまなコンポーネントをカスタム コンポーネントに交換できる柔軟性も備えています。カスタム スケジューラをプラグインできます。新しいリソース タイプが必要な場合は、CRD (カスタム リソース定義) を作成できます。さらに、コミュニティは非常に活発で、ツールは急速に進化しています。

Kubernetes アーキテクチャ

すべての Kubernetes クラスターには 2 種類のノード (マシン) があります。マスターノード(Master)とワーカーノード(Worker)。名前が示すように、マスターはペイロード (アプリケーション) が実行され、クラスターを制御および監視する場所です。

クラスターは単一のマスターノードで使用できます。しかし、高可用性(HAクラスタリングと呼ばれる)のためには3つある方が良いです。

マスターノードとその構成要素を詳しく見てみましょう

etcd: Kubernetes オブジェクトに関するすべてのデータ、その現在のステータス、アクセス情報、その他のクラスター構成情報を保存するデータベース

API サーバー: クラスターを操作するためのエンドポイントを公開する RESTful API サーバー。マスター ノードとワーカー ノードのほぼすべてのコンポーネントは、このサーバーと通信してそれぞれの機能を実行します。

スケジューラ: どのペイロードをどのマシンで実行する必要があるかを決定する役割を担う

コントロール マネージャー: これは、クラスターの状態を監視し (API サーバーを呼び出してこのデータを取得)、目的の状態になるようにアクションを実行する制御ループです。

kubelet: ワーカーノードの中核です。マスターノード API サーバーと通信し、そのノードにスケジュールされたコンテナを実行します。

kubeproxy: IP テーブル/IPVS を使用して Pod ネットワーク要件を処理する

Pod: すべてのコンテナを実行する Kubernetes エンティティ。 Pod の抽象化がなければ、Kubernetes でコンテナを実行することは不可能です。ポッドは、コンテナがどのようにネットワーク化されるかなどの重要な機能を定義します。

ハッピーポッド

Pod には複数のコンテナを含めることができ、それらのコンテナ内で実行されているすべてのサーバーは互いを localhost として認識できます。これにより、アプリケーションのさまざまな側面を個別のコンテナーに分離し、すべてをまとめて簡単に読み込むことが可能になります。さまざまなニーズを満たすために、サイドカー、プロキシ、アンバサダーなど、さまざまなポッド モードがあります。

ポッドネットワークインターフェースは、同じノード内の他のポッドや他のワーカーノードとネットワーク接続するためのメカニズムを提供します。

さらに、各ポッドには独自の IP アドレスが割り当てられ、kube-proxy はそれを使用してトラフィックをルーティングします。この IP アドレスはクラスター内でのみ表示されます。

Pod コンテナ内にマウントされたボリュームもすべてのコンテナから見え、これらのボリュームはコンテナ間の非同期通信に使用されることもあります。たとえば、アプリが写真アップロードアプリ(Instagram など)であると仮定すると、それらのファイルをボリュームに保存し、同じコンテナー内の別のコンテナーがそのボリュームで新しいファイルを監視し、複数のサイズを作成してクラウド ストレージにアップロードする処理を開始できます。

コントローラ

Kubernetes には、ReplicaSet、レプリケーション コントローラー、デプロイメント、StatefulSet、サービスなどの多くのコントローラーがあります。これらは、何らかの方法で Pod を制御する Pod オブジェクトです。いくつかの重要なコントローラーを見てみましょう。

レプリカセット

ReplicaSet は得意なことを実行します。ポッドの複製

このコントローラーの主な役割は、特定の Pod のレプリカを作成することです。何らかの理由で Pod が停止した場合、コントローラーに通知され、すぐに新しい Pod を作成するアクションが実行されます。

展開

レプリカセットを制御しようとするデプロイメント(髪がボサボサ)

Deployment は、ReplicaSet を使用してレプリカを管理する高レベルのオブジェクトです。新しいレプリカセットをスケールアップし、既存のレプリカセットをスケールダウン(最終的には削除)することで、ローリング アップグレードを実現します。

サービス

対応するポッドにデータパケットを配信するドローンとして表現されるサービス

サービスは、適切なノードに「パケット」を配布するロード バランサとして機能することを主な役割とするコントローラ オブジェクトです。基本的に、これはワーカーノード間で類似のポッド (通常はポッド ラベルによって識別されます) をグループ化するために使用されるコントローラー構造です。

「フロントエンド」アプリケーションが「バックエンド」アプリケーションと通信すると仮定すると、各アプリケーションのインスタンスが多数実行される可能性があります。各バックエンド ポッドの IP をハードコーディングする必要はなく、バックエンド サービスにパケットを送信し、それに応じて負荷分散と転送の方法を決定します。

PS: すべてのパケット ルーティングは IP テーブル/IPVS/CNI プラグインによって処理されるため、サービスは仮想エンティティに似ていることに注意してください。これにより、実際のエンティティとして認識されやすくなり、Kubernetes エコシステムにおける役割を際立たせることができます。

イングレス

すべてのパケットがクラスターに流入するフローティングプラットフォームを入力

Ingress コントローラーは外部との単一の接点であり、クラスター内で実行されているすべてのサービスと通信できます。これにより、セキュリティポリシーの設定、監視、さらにはログインを1か所で簡単に行うことができます。

PS: Kubernetes には、DaemonSet、StatefulSet、Jobs など、他にも多くのコントローラー オブジェクトがあります。アプリケーションの秘密や構成を保存するための Secrets、ConfigMaps などのオブジェクトもあります。受け取り次第、次のブログ投稿で取り上げます。

<<:  2019 年の ACM フェロー リストが発表されました。陶大成、謝元、陳希林を含む7人の中国人学者が選出された。

>>:  テクノロジーの選択: Docker コンテナ エンジン

推薦する

#クリスマス# Hostus-年間 25 ドルの VPS/KVM/256 MB メモリ/180 GB ハード ドライブ/1 T トラフィック/Alipay

Hostus からの遅ればせながらのクリスマス プロモーションをご紹介します。大容量ディスクを備えた...

ランキングの低下を防ぐためにウェブサイトを定期的にチェックしましょう

検索ランキングが高いか低いかは、結局のところ、検索エンジンがウェブサイトに SPAM (検索スパム)...

簡単な分析: インターネットマーケティングについて理解していること

インターネットの誕生以来、ブログマーケティング、フォーラムマーケティング、電子メールマーケティング、...

FlipHost-1Tハードドライブ月額7ドル-256Mメモリ/5GSSD/Gポート年間24ドル

FlipHost は 2011 年に設立されました。この会社には 7 人の従業員がいます。製品はかな...

Bilibiliは「収益化」のためにゲームに依存しているのでしょうか?

2次元プラットフォームとしてスタートしたビリビリは、投資主導の企業になりつつある。関連メディアデータ...

WeChatの輝きが薄れる中、テンセントは成長停滞の苦境に陥っている

テンセントは微妙な岐路に立っている。テンセントの株価が史上最高値に達した後、資本市場の不安がついに表...

インフラストラクチャ・アズ・コード (IaC) を 1 つの記事で理解する

Infrastructure-as-Code (IaC) とは、手動のプロセスではなくコードを使用し...

「Hongmeng HarmonyOS 分散データ管理プラットフォームの包括的な解釈」ライブ Q&A (パート 3)

詳細については、以下をご覧ください。 51CTOとHuaweiが共同で構築したHongmengテクノ...

Seoさん、私たちはどんな細かい点を見落としがちですか?

あなたの会社に SEO の専門家がいる場合、他の従業員に SEO とは何かを尋ねると、90% の人が...

Hostgator: 4日間限定オファー、すべての仮想ホストが30%オフ、ドメイン名が無料

世界的に有名な仮想ホストHostgatorは10月18日午後1時から、5日間70%オフのプロモーショ...

WordPress: インターネットの母国語になる

「いつかそうなるでしょう?」マレンウェッグ氏とCEOのシュナイダー氏は、WordPressで大儲けす...

ウェブサイトのキーワードランキングを向上させるための考察

みなさんこんにちは、Xiaobaoです!SEOにおいて、キーワードランキングは常に私たちの最優先事項...

テンセント広告ゲーム業界7月の購入量月次レポート&#038;製品動向

この記事では、テンセントの 7 月の広告およびゲーム業界の購入量レポートと製品の動向を紹介し、テンセ...

現代の分散ストレージシステムをサポートするアルゴリズム

アプリケーションによって処理されるデータの量が増え続けるにつれて、ストレージの拡張はますます困難にな...