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

推薦する

「スマートエンタープライズ」戦略で中国のデジタル変革を支援するためSAP中国サミットを開催

2018 年 9 月 6 日、上海 - 「未来への知恵」をテーマにした SAP 中国サミットが上海で...

bgpto: 月額 185 ドル、日本ソフトバンク回線、e3v3/16g メモリ/2t ハードディスク/無制限トラフィック/5IP

bgpto、この会社の日本サーバーはプロモーションを行っています。日本東京のソフトバンク回線の独立サ...

ECIS 2020 | 2020 エッジ コンピューティング インダストリー サミットが明日開幕します。重要なゲストや業界フォーラムをちょっと覗いてみましょう!

明日2020年エッジコンピューティング業界サミットが間もなく始まります8件以上の主要リリース、60件...

推奨: colossuscloud - プロフェッショナル XP/Windows7/8/2003/2008/リモート VPS を含む VPS が 35% オフ

colossuscloud.com は、それほど昔に設立されたものではなく、serverpoint....

衛翔ホスト:日本独立サーバー、大阪データセンター、3ネットワーク直結、割引プロモーション

7月に日本大阪で新独立サーバー「Weixiang Host」がオープン(国内電信、聯通、移動、すべて...

史上最も高価なドメイン名トップ15、seo.comもそのリストに

ウェブサイトを作成することは難しくありませんが、ウェブページやビジネスに適したドメイン名を見つけるの...

racknerd: 年間 28.2 ドル、60 GB の高セキュリティ VPS、KVM/3 GB メモリ/3 コア/42 GB ハード ドライブ/5 TB、PayPal/Alipay

racknerd からの最新ニュース: (1) DC-02 のこれまでの VPS プロモーションはす...

QingCloud Hyper-Converged Express Editionが新たにアップグレードされました: シンプルさから始めて、クラウドへの一歩を踏み出します

エンタープライズレベルのフルスタック クラウド ICT サービス プロバイダーである QingClo...

データベース管理システム: 未来は本当にクラウドにあるのでしょうか?

ガートナーが、クラウドがデータベース管理システム (DBMS) の事実上のソリューションになると宣言...

飛天から易天まで、アリババクラウドの基盤となる自社開発技術が爆発的に成長

10月20日、2021年雲旗カンファレンスにおいて、アリババクラウドはYitian、Panjiu、S...

クラウドコンピューティング: 企業向け高品質クラウド移行の新たな段階へ

2018年には、工業情報化部による「企業のクラウド移行促進実施ガイドライン(2018~2020年)」...

微博とテンセントは左へ、新浪は右へ、その違いはますます明らかになっている

最近、アリババが新浪微博に投資するかもしれないという業界の噂について、新浪微博がアリババの資本と資源...

時代遅れのSEOは避けましょう。SEOはそれほど単純ではありません

今日は日中何もすることがなかったので、Moonlight Blog の記事をいくつか読んで、自分がと...

K8S ステートレスおよびステートフル、初心者向けガイド!

Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するため...

onrahost-$7/Xen/1g メモリ/175g ハードディスク/2.5T トラフィック/QuadraNet

私は昨年の 5 月に初めてブログで onrahost を紹介しました。onrahost は 2011...