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

推薦する

分類情報ウェブサイトを最適化するための3つのヒント

機密情報ネットワークはGanji.comや58.comなどの超大規模ウェブサイトによって独占されてい...

エッジコンピューティングプロジェクトを成功させる方法

おそらくこれまで以上に、今日の IT リーダーは新興テクノロジーのビジネス価値を理解し、それを売り込...

小康グループとアリババは自動車産業のインテリジェント化と変革を加速するための戦略的協力を締結した

[[241274]]中国重慶、2018年8月23日、重慶小康実業集団有限公司(以下、小康集団)とアリ...

ジェリー・ヤンがヤフーに別れを告げる:チーフスでの17年間が終わる

ヤフー創業者ジェリー・ヤン新浪科技ニュース:北京時間1月18日早朝のニュースで、ヤフーは火曜日、同社...

ハイブリッド クラウドは、将来のキャンパス インテリジェンスの基盤となります。ファーウェイクラウドが大学の知能化を支援

2017年ハルビンで高等教育情報化発展セミナー開催【中国ハルビン、2017年11月24日】11月、「...

ポイントウォールマシンは全く効果がありません! ASO 介入が回復するまでにどれくらいの時間がかかりますか?

Xiaomaowan トライアルポイントウォールセルフサービス配信システム: e.xiaomaow...

新しいウェブサイトの最適化に適したキーワードを選択するための 3 つのヒント

新しいウェブサイトがオンラインになった後、トラフィックランキングを獲得したい場合は、もちろん、熱心に...

キーワード分析: Baidu の需要グラフを調べてキーワードをマイニングする

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

さまざまな種類のエッジコンピュータの紹介

エッジ コンピュータのハードウェアを購入する前に、まずさまざまな種類のエッジ コンピュータについて理...

マルチクラウドでマシンIDを保護する5つのテクニック

[[423604]] [51CTO.com クイック翻訳]今日、クラウド コンピューティング アプリ...

Baidu検索結果のURLコードルールの調査

Baidu と 360 の検索戦争は謎に満ち、刺激的です。今日、SEO ブログが Baidu の新た...

草の根運動 - 歩きにくい熱帯雨林の風

[コアヒント] 115 Cloud Diskがパブリッククラウドディスク共有の終了に関するメッセージ...

ソ 愛してると言うのは簡単

SEO を始めて以来、私の生活は「忙しい」という一言で言い表すことができます。実際のところ、毎日一定...

分散IM(インスタントメッセージング)システムを自分で構築する

以前、「*** のメッセージ プッシュ システムの設計」という記事を共有しました。記事にはいくつかの...

プロセス全体を通じてウェディングフォトグラフィーウェブサイトのユーザーエクスペリエンスを最適化

パンパン兄さんは1年以上、写真スタジオのオンラインマーケティングに携わっています。結婚式の写真業界の...