簡単な紹介
コンテナは、ソフトウェア開発における銀の弾丸ではない、単一の技術は、ソフトウェア開発のすべての問題を解決することはできません
我々は、コンテナ技術を使用し、伝統的な物理マシンを放棄するか、私たちのアプリケーションをデプロイするために、より活発な、便利な方法に仮想マシンを展開するとき。先進のコンテナ、プラスので、コンテナの更なる拡大の利益という、コンテナにオーケストレーション技術をkubernetes。しかしkubernetesのために、基本的な単位は、直接スケジュールレイアウトコンテナが、他の構成を管理されていません。
これらのプロセスを実行するために継続しながら容器は、複数の無関係なプロセスを実行していると仮定すると、管理、および入力と出力のログは、コンテナの責任です。これらが同時に関連プロセスでない場合、私たちは、標準出力を持っているが、今回はどのような各プロセスの出力特定の内容を決定することは困難です。異なるプロセスが同じポート番号が、リソース上の競合が発生する非リスナーのチームによって開発された一方、各容器は、論理演算部である独自の名前空間、IPおよびポート及び他の情報を有しています。同じコンテナで実行されている複数のプロセスが、プロセス間通信を介して、または共有ファイルのいずれかがストアファイルに簡単ですが、それでもドッカーを期待し、それが自分自身に関連している場合を除き、独自のコンテナ内の各プロセスの実行をkubernetes子プロセス。あなたが依存関係を持つ複数のプロセスを使用している場合:同じコンテナに推奨複数のプロセスを実行しているとして、そのような(例えばプロセスが別のプロセスに依存して開始)。
同じコンテナで実行中の無関係なプロセスをお勧めしますが、例外的な状況は、同じコンテナ内のオンデマンドで実行されている複数の関連するプロセスを必要がありませんので、kubernetesはコンテナに結び付け、より高度な構造を提供し、この構造は、基本的なスケジューリング展開部であり、この構造は、ポッドです。
ポッドは、並置されたコンテナのグループですkubernetes基本的なビルディングブロックです。しかし、それは、各ポッドは、最も一般的な展開であるためポッドは常に実際には、唯一のコンテナを複数の容器を含んで意味するものではありません。複数のコンテナが常にポッドを実行するとkubernetesために、ポッドがどのノードに位置していますが、ポッド複数のノードに配置された複数のコンテナが許可されていない、言い換えれば気にしませんが、ここでは、その点に注意してください必要があります同じクラスタノード上。
基本単位のkubernetesの展開と操作がポッドです
隔離
同じポッドの下にいくつかのリソースを操作する容器ではなく、すべてのリソース(言葉ならば、これらのコンテナが完全に分離されていない)の間で共有することができ、kubernetesは、同じポッドのLinuxのシェア内の同じ名前空間とネットワーク構成をコンテナをさせることができ、などを通じてリソースは、これらのコンテナは、これらのコンテナがちょうどLANのように、IPC通信ポッドすることができ、言葉、その後、同じホスト名とネットワークインターフェースを共有しています。今、複数のコンテナが同じポートにバインドすることはできませんので、共有し、同じIPとポート番号を、ポートの競合があるだろうということ、これは公式にはポッドランだけつの容器を推奨理由の一つですので。
各ポッドは、独自の独立したIPとポートスペースを持っているので、異なるポッドのコンテナは、ポートの競合が起こることはありません。同じループバックと同じ容器にポッド、したがって同じポッドのローカルホスト他のコンテナと通信することができます。
ポッドネットワーク
そして、LAN上の各サーバには、ポッドクラスタkubernetesのように、彼らはネットワークアドレス空間を共有し、このネットワークは、実際のリンクはソフトウェアによって実現されるに基づいています。だから、限りポッドのIPアドレスは、この通信プロセスを介してアクセスすることができます知っている通信性能におけるゲートウェイは非常に良いですではありません。kubernetes抽象の資源ので、そう何のポッドは、ポッドのすべてが同じため、クラスタ内のどのサーバノード上で重要ではありません。
複数の容器を使用して、ポッド
ほとんどの場合、私はまだ、各ポッドは、コンテナを実行することをお勧めしていますが、複数のコンテナを持っている場合、相互依存の関係(このような容器を出発物質としては、別の容器に依存します)、あなたはポッドに複数のコンテナを展開する必要があります。コンテナアプリケーションは二つの容器は、クラスタマシンを改善するだけでなく、異なるポッドに割り当てる必要があり、データベースのコンテナをコールする必要があります。より多くのアプリケーションを実行するためのコンテナ内のAポッドは、次のような階層的な考慮事項に基づいています利用するだけでなく、注文後の展開の異なるレベル。kubernetesについては、動作や基本的な単位は、ポッドの展開なので、私たちのアプリケーション層のパフォーマンスのボトルネックは、私たちは、一人で他の層をアプリケーション層ポッドの拡張を分離できる場合kubernetes拡張ユニットは、ポッドのコンテナではありませんポッドは、これは資本コストが、柔軟性の問題の規模を保存するだけの問題ではありませんが、同じまま。
●程序员修神之路--kubernetes是微服务发展的必然产物