漫画で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 コンテナ エンジン

推薦する

HPA PaaS プラットフォームのサポートにより、事務職女子がプログラマーになれる方法!

[[345506]]簡単に自己紹介をさせてください。私は普通の会社員女子です。 [[345507]]...

ウェブサイトが時代遅れにならず、ユーザーに好印象を与えるためにSEOを最適化する方法

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

優れたUXデザイナーがすべき5つのこと

[編集者注] この記事は、ブログ「Usability Counts」から @C7210 によって翻訳...

仮想空間における静的パスと疑似静的パスの利点は何ですか?

仮想ホストを選択する際に、静的パスと疑似静的パスの選択について混乱する人が多くいます。静的パスと疑似...

「ICTイノベーション賞」が発表され、テンセントクラウドのネイティブセキュリティ製品システムが「クラウドセキュリティ製品リーダーシップ賞」を受賞

クラウド コンピューティングは 20 年近くにわたって発展を続け、クラウド ネイティブの時代に入りま...

ウェブサイトに「ロックを追加」動的パスワードを簡単に実現

インターネットの普及に伴い、ネットワークセキュリティの問題はますます深刻になっています。有名な技術交...

Googleマップ、川で溺死した行方不明の男性を発見

ハフィントンポストによると、イギリスのケントに住むブライアン・ハウスマンさんは数日前、近くの湖に沈ん...

入札広告から電車内プロモーション、オンラインプロモーションからモバイルマーケティングまで

----Yimake の講師がインターネット マーケティング コースのアップグレードについて語るはじ...

サンプルウェブサイトの掲載が急速に減少した3つの理由

ウェブサイトの最適化においてウェブマスターにとって最も大きな打撃となるのは、ウェブサイトのランキング...

今週のニュースレビュー: Qvod が Qvod サーバーを閉鎖、Weibo がナスダックに上場

1. 「2014年にインターネットを浄化しよう」キャンペーンはオンライン文学界に動揺を引き起こした4...

ウェブサイトのコンテンツを更新する必要があるのはなぜですか?

なぜ Web サイトのコンテンツを更新する必要があるのでしょうか? 多くの人は、更新されたときにのみ...

ウェブサイトのテーマを正確に見つけることはもはや困難ではありません

ウェブサイトにはまずユーザーがいなければなりません。ユーザーがいて初めてトラフィックが発生します。ト...

検索エンジン最適化はオンライン マーケティングの基礎です - A5 Webmaster Network

現在、検索エンジンマーケティング(略してSEM)、ブログマーケティング、ソフトテキストマーケティング...

PR 価値とは何ですか? PR 価値を高めるにはどうすればいいですか? Google の PR 価値の高低を決定する要因は何ですか?

PR 値、つまりPageRankは、Web ページのランキング技術です。これは Google の創設...