この記事はWeChatの公開アカウント「jameswhale's Technical Life」から転載したものです。この記事を転載する場合は、jameswhale の Technical Life 公開アカウントにご連絡ください。 オリジナルリンク: https://mp.weixin.qq.com/s/LOXB36aevXoH9EQHFr5E9Q 出典: jameswhale's technical life WeChat パブリックアカウント ID: jameswhale's technical life
序文 近年、コンテナやKubernetesなどの技術が、さまざまなインターネット企業のデータセンター、クラウドコンピューティング、ビジネスサービスで広く利用されるようになりました。 1960 年代に登場した仮想マシン (VM) テクノロジと同様に、コンテナもサービス仮想化テクノロジ (サーバー仮想化) ですが、より軽量で、マシンからアプリケーションに重点が移っており、開発、テスト、本番環境の展開の効率が大幅に向上します。ただし、セキュリティと分離性は仮想マシンに比べて若干劣るため、シナリオによっては仮想マシンを完全に置き換えることはできません。この記事では、主に仮想マシンとコンテナの技術を以下の部分から整理し、その違いやつながりについて詳しく説明します。
サービス仮想化テクノロジーがなぜ必要なのでしょうか?
サービス仮想化技術の分類
要約すると、リソースへの直接アクセスはネイティブ レベルのパフォーマンスを提供できますが、移植性が犠牲になります。移植性を向上させるために、仮想化ベンダーは VMM/ハイパーバイザー対応の準仮想化ゲスト オペレーティング システム ドライバーをさらに開発します。これらのドライバーは、ネットワーク カードやストレージ コントローラーなどの合成仮想デバイスを表します。合成デバイス ドライバーを使用すると、ゲスト オペレーティング システムは、ネイティブに近いパフォーマンスを提供しながら、一貫したハードウェア リソース セットを認識できるようになります (別のホストに移行された場合でも)。
OS 仮想化はアプリケーション中心であり、複数の仮想環境 (VE) が共通の OS を共有できるようにし、各環境は完全に仮想化されたホストよりもはるかに少ないオーバーヘッドで実行されます。メモリだけを見ると、仮想マシンの要件はかなり大きくなります。たとえば、ホスト サーバー上で 8 台の仮想マシンが実行されており、各ゲスト オペレーティング システムが 512 MB の RAM を使用しているとします。つまり、アプリケーションまたは VMM のオーバーヘッドを考慮に入れない場合、仮想化のコストは 8 x 512 MB、つまり 4 GB の RAM になります。各オペレーティング システムのインストールに 4 GB のディスク領域が必要であると仮定すると、すべてのゲスト オペレーティング システムを格納するには、物理ホスト システム上に 32 GB のディスク領域が必要になります。 OS 仮想化のもう 1 つの利点は、仮想環境でドライバーや完全なハードウェア エミュレーションを必要としないことです。これにより、仮想化環境での I/O をネイティブに近いパフォーマンスで実行できるようになります。 VE はアプリケーション シェルとして実行されるため、ホスト システムのハードウェアに依存することなく、VM と同じ移植性を提供します (ただし、すべて Linux オペレーティング システム上に存在する必要があります)。 セキュリティと分離は仮想マシンほど優れていません (オペレーティング システムによって提供されるアプリケーション レベルの分離)。この理由だけで、コンテナ テクノロジは仮想マシン テクノロジに取って代わることはできません。 ホストベースのサーバー仮想化(仮想マシン)アーキテクチャ 仮想マシンは、ホスト オペレーティング システムがあるかどうかに基づいて 2 つのカテゴリに分類されます。
タイプ2(オペレーティングシステム付き) VMM (仮想マシンモニター)/ハイパーバイザーの役割
命令の実行レベル 命令実行レベルはRing0~Ring3に分かれています。通常、オペレーティング システム カーネルは Ring0 で実行され、デバイス ドライバーは Ring1 ~ Ring2 (または両方が Ring0 で実行) で実行され、アプリケーションは Ring3 で実行されます。
OS仮想化(コンテナ) OS 仮想化レイヤーは、Linux オペレーティング システム カーネルの特性 (名前空間、cgroup など) を使用して、アプリケーションごとに独立した仮想環境 (VE-id) を構築します。各アプリケーションは独立したルートファイルシステム、起動スクリプト、init、プロセス ID (同じ仮想環境内のプロセス ID は重複しませんが、異なる仮想環境内のプロセス ID は重複できます) を持ち、ハードウェア システム全体を排他的に使用していると認識します。仮想環境 (VE) では、オペレーティング システムやデバイス ドライバーなどのインストールが不要です。仮想マシンと比較すると、メモリとハード ディスクのオーバーヘッドが大幅に削減されます。同時に、ハードウェア命令をシミュレートする(オペレーティングシステムのシステムコールを直接呼び出す)必要がなくなり、仮想環境でのアプリケーション実行パフォーマンスはネイティブマシンに近くなります。 コンテナのカーネルサポート コンテナベースの仮想化では、プロセスを分離したり、これを実現するのに役立つ他の目的を達成したりするために、カーネルによって提供される多くの機能を使用します。ほとんどのソリューションは Linux カーネルに基づいています。カーネルは必要な機能のほとんどを提供するため、コンテナ ツールキットでそれらを再度実装する必要は通常ありません。カーネル コードは、安定していると見なされ、すでに実稼働で使用されている他のソフトウェアによってすでに使用されています。カーネルが提供するメカニズムにセキュリティ上の問題がある場合、修正はカーネルのアップデートとともに配布されるため、コンテナ ソフトウェアにパッチを適用する必要はなく、ユーザーはカーネルを最新の状態に保つだけで済みます。
仮想マシン技術の例 (VMWare ESXi) VMWare は仮想マシン市場のリーダーです。VMWare の ESXi を例に挙げてみましょう。 VMkernel は、プロセスの作成と制御、シグナル、ファイル システム、プロセス、スレッドなど、オペレーティング システムと同様の機能を提供します。これは、複数の仮想マシンの実行をサポートするように特別に設計されており、リソース スケジューリング、デバイス ドライバー、入出力スタックなどのコア機能を提供します。ハードウェア デバイス上で直接実行されるため、一般的なオペレーティング システムを使用する必要はありません。 VMWareESXi の利点 (他の仮想マシン プラットフォームと比較)
コンテナ技術の例 (Docker) Docker イメージの例 イメージからコンテナへ(インスタンス化) 画像コンテンツ配信 コンテナ仮想化テクノロジーは、FreeBSD jail、Solaris Zones、Linux Containers (LXC) から、近年非常に人気が高まっている Docker Containers へと進化してきました。開発、テスト、本番環境の展開の効率が大幅に向上しました。 Docker コンテナ テクノロジーは通常、次の 3 つの部分を指します。
クラウドプラットフォーム(Google Cloud Platform、GCP)における仮想化技術の応用 Google Compute Engine (GCE) は、Google の検索エンジン、Gmail、YouTube などのサービスを実行するグローバル インフラストラクチャ上に構築された、Google Cloud Platform の Infrastructure as a Service (IaaS) コンポーネントです。 GCE を使用すると、ユーザーはオンデマンドで仮想マシン (VM) を起動できます。 VM は、標準イメージまたはユーザーが作成したカスタム イメージから起動できます。 GCE は、仮想マシンの VMM/ハイパーバイザーとして KVM を使用します。 KVM (カーネルベースの仮想マシン) は、CPU ハードウェアによって提供される仮想化テクノロジ拡張機能 (IntelVT または AMD-V) も含む完全な仮想化ソリューションであり、x86 ハードウェア上の Linux に適しています。ロード可能なカーネル モジュール (Intel の場合は kvm.ko、kvm-intel.ko、AMD の場合は kvm-amd.ko) は、コア仮想化インフラストラクチャを提供します。 KVM を使用すると、ネットワーク カード、ディスク、グラフィック アダプターなどの専用の仮想ハードウェアを備えた、変更されていない Linux または Windows ゲスト OS を含む複数の仮想マシンを実行できます。 K8s コンテナ オーケストレーション システムを介して VM 上に複数のコンテナを展開することで、一方ではプログラムをすばやく起動できます (コンテナの起動時間は仮想マシンの起動時間よりもはるかに短くなります)。 2 つ目は、仮想マシンの追加負荷を効果的に軽減できることです (複数のコンテナを展開できる一方で、展開できる仮想マシンの数は少数に抑えられます)。 3つ目は、自動アップグレード、ノード修復、コンテナの自動拡張・縮小を実現できることです。 |
<<: コロナウイルスはクラウドサービスの導入にどのような影響を与えましたか?
>>: Kubernetes ロギングの 6 つのベスト プラクティス
以前、質疑応答形式をベースとした業界フォーラムは主に技術者を対象としていると述べました。同様に、業界...
検索エンジン最適化を行うときは、ウェブサイトの 3 つの主要なタグ、つまりタイトル、キーワード、説明...
最近、フレンドリーリンクに関する議論は比較的少なくなっています。多くのSEO最適化担当者は基本的に、...
ウェブサイトのセットアップ後、私たちが最も懸念するのは、ウェブサイトのランキングと掲載であり、これは...
ユタ州ソルトレイクシティのデータセンターにある Racknerd の大型ハードドライブ サーバー (...
スマートホストはどうですか?ダラスデータセンターのスマートホストの VPS はいかがでしょうか? S...
2009 年 9 月 1 日は私にとって特別な日でした。私の最初の Web サイトである Jiang...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますテンプレー...
[コアヒント] ナビゲーション サイトは 1999 年の誕生以来、どのような変化を遂げてきましたか?...
時間が経つのは早いものです。気がつけば、私はパートタイムのウェブマスターとして2年近く働いていました...
2host で数年間使用してきた Web サイト テンプレートがようやく置き換えられました。今日、2...
ウェブサイトの最適化中に、ウェブサイトのどの要素にもっと注意を払う必要がありますか? SEO最適化ワ...
vestacp のインストール チュートリアルについては、「VPS 初心者向けチュートリアル: LN...
新華網、北京、4月14日:インターネット上でのわいせつ情報やポルノ情報の拡散は社会的な迷惑となってい...
安全を保つため、あるいは一時的に妥協するため、選択肢は異なりますが、目的は同じです。すべては発展のた...