よく寄せられる質問: コンテナーと VM の組み合わせ

最近のウェビナー「ハイブリッドクラウド時代のVM、コンテナ、Kubernetesの謎を解く」には大きな参加者があり、チャットを介して大量の質問が寄せられたため、リアルタイムまたは最後のQ&Aですべてに回答することはできませんでした。 上位の質問に対する回答については、2つの投稿で説明します(はい、 たくさんの 質問がありました!

まず、VM にコンテナーをデプロイする必要があるか、ベア メタル上のコンテナーに飛躍する必要があるかなど、IT インフラストラクチャと運用のトピックについて説明します。 

VM またはコンテナーですか?

コンテナーと VM

上位の質問の中には、ユーザーがコンテナプラットフォームをベアメタルで実行するだけにするか、仮想インフラストラクチャ上で実行するかという質問がありましたが、ウェビナーのトピックを考えると、当然のことです。

  • 重要な原則: コンテナ化の推進力の1つは、アプリケーションとその依存関係を基盤となるインフラストラクチャから抽象化することです。 私たちの経験では、開発者は基盤となるインフラストラクチャを気にしないことがよくあります(または少なくとも気にしたくないでしょう)。 Docker と Kubernetes はインフラストラクチャに依存しません。 私たちは本当の好みはありません。
  • 目標 – あなたと私たちの目標:開発者が使いたいと思うプラットフォームを提供し、アプリケーションを本番環境で実行し続け、プラットフォームを維持するために必要な運用およびセキュリティツールを提供します
  • では、VM またはコンテナーですか? 事によりけりです。 運用上の専門知識とツールのすべてが仮想化を中心に構築されている場合は、コンテナプラットフォームをデプロイするときにすぐに変更したくない場合があります。 一方、コスト削減やパフォーマンスのオーバーヘッドがより重要な場合は、ハイパーバイザーにお金を払う必要がなくなるかもしれません。 幸いなことに、アプリケーションをコンテナ化すると、VMと基盤となるサーバーの数を少なくとも30〜40%削減できる可能性があります。

何をするにしても、 今日のインフラストラクチャによって純粋に推進されるコンテナプラットフォームの決定は避けてください。 開発者が柔軟性がないと感じた場合、すぐに独自のツールを採用し、 シャドーITの第2の波を生み出します。 

コンテナとネットワーキング

ウェビナーのネットワーキングやストレージについては、複数のウェビナーを単独で簡単に埋めることができるトピックであるため、あまり深く掘り下げませんでしたが、いくつかの一般的な質問がありました。

複数のコンテナーを接続し、アプリケーションを外部のユーザーやサービスに公開するにはどうすればよいでしょうか。

  • 単純なアプリケーションの場合は、Docker エンジンと Kubernetes の両方に組み込まれているネットワーク ツールを使用できます。 
  • コンテナーを実行していて、外部ポートを内部ポートにマップする場合は、コマンドに単純なパラメーターを追加して通信を開くことができます。
    docker run --publish <external port>:<internal port> <image name>
  • Swarm と Kubernetes はどちらも、2 つのコンテナーが相互に通信しながら、その接続を外部トラフィックから隠しておくことができます。 これは、Docker Composeを使用してサービスとそのネットワークを定義する Docker エンジンまたはSwarmクラスターで非常に簡単に行うことができます。 もちろん、Kubernetes にも 同様の機能があります。 

CalicoとTigeraとは何ですか、そしてそれらはネットワーク設計にどのように適合しますか? NSXやその他のネットワークソリューションはどうですか?

  • より高度なアプリケーションや運用環境で実行されているアプリケーションの場合は、組み込みのネットワーク ドライバーがサポートする機能を超える追加の機能が必要になる場合があります。 数百または数千のコンテナーがある場合は、ルーティング、検出、セキュリティ、その他のネットワークの問題を大規模に処理するためのより良い方法が必要になります。 Kubernetesコミュニティは、標準化されたコンテナネットワーキングインターフェイス(CNI)を通じて、より高度なネットワーキングプラグインをサポートしています。 CNIプラグインは、デフォルトのネットワークドライバーにはない拡張機能を提供します。
  • Project calico、Tigeraによる 、はKubernetesで見られる最も一般的なオープンソースCNIプラグインの1つであり、LinuxコンテナとWindowsコンテナの両方で機能します。 Calico は Tigera によって保守されており、Kubernetes コミュニティと緊密に連携して CNI 標準を定義し、貢献しています。 Docker Enterprise には、"バッテリーは含まれているが、交換可能な" CNI プラグインとして Calico が含まれています。
  • 監査、レポート作成、大規模化、サービスメッシュとの統合など、さらに優れたセキュリティと管理を必要とする企業では、 Tigera Secureのような商用製品を検討するかもしれません。
  • CNIは、さまざまなエコシステムソリューションをサポートできる標準ネットワークインターフェイスを保証します。 VMwareのお客様で、すでにNSXに投資している場合は、代わりにそのルートに進むことができます。

コンテナのインフラストラクチャのサイジングと最適化

Docker と Kubernetes の設計のサイズ設定方法について、かなりの数の質問を受けました。 彼らは2つの主な質問に要約されました:

1 つの Docker ホストで実行できるコンテナーの最大数はいくつですか? 

  • 答え:それは異なります。 コンテナは、ホストから直接RAMとCPUを消費するプロセスにすぎないことを忘れないでください。 アプリケーションと hos の間にはハイパーバイザー層や追加の OS がないため、ホストは、コンテナー化前と少なくとも同じ数のプロセスをコンテナーとして実行できる必要があります。 実際、ほとんどの組織では、複数のアプリケーションが同じベースOSを共有でき、多くのVMが過剰にプロビジョニングされているため、ホスト上で約40%多くの作業を実行することになります。

Docker/Kubernetes 用に環境のサイズを設定するにはどうすればよいですか?

  • 運用環境でコンテナーを実行することを考え始めるときは、この演習のガイドとして専門知識を取り入れることを検討する必要があります。 前の回答と同様に、 平均して VM の数が約 40% 減少していますが、その平均は幅広いアプリケーションセットにまたがっており、今後アプリケーションを追加して見積もる方法を学ぶ必要があります。 お客様が自分でそれを行うのを見てきましたが、それには時間がかかり、正しく理解する前に自分の間違いから多くを学ぶことになります。 あなたは少しの助けを借りてあなたの道を大幅に加速することができます。

始める

これは、質問が最も多い領域であるため、最後に保存しました。 幸いなことに、それらは答えるのがはるかに簡単な質問であり、リソースの多くは無料です!

コンテナーの最適化と管理の詳細については、どこで確認できますか?

  • Docker Trusted Registry、Docker Kubernetes Service、Universal Control Planeについて詳しく知りたい場合は、Docker Enterpriseの無料ホストトライアルを入手できます。 ここでも、入門的なチュートリアルが提供されます。
  • インストラクターとのクラスやトレーニングをご希望ですか? 私たちにもそれがあります。 オペレーターと開発者向けのクラスがあります。および Kubernetes とセキュリティのクラス。 

来週は、Kubernetes と Docker の組み合わせ、ソフトウェア パイプライン、信頼できるコンテンツに関する質問について説明します。