ディレクトリ
全体のまとめ
K8Sスケジューリングツールであるという点で内部グーグルボルグ簡単な変更に応じて、Googleのプログラマは、コンテナ全体のリソースを統合するために、会社で使用され、コンテナのリソースが完全に統一されたスケジュール管理となります。Kubernetes(K8S)は、自動化されたコンテナ操作のためのオープン・ソース・プラットフォームです。あってこれらのコンテナ操作:展開、およびスケジューリングノードクラスター展開の間。
ポッドワークフロー
- 自律ポッド:ポッドは自己管理することができ、まだ、ノードノードによってポッドを開始するように指定されたノードのノードスケジューラスケジューラのスケジュールによって、受信した後で、自分で作成した後APIserverに提出することを要求され、ポッドコンテナが失敗した場合コンテナを再起動する必要があり、操作が完了するまでにkubeletによって行われますが、故障のうち、ノードnode場合、ポッドは、実行、しませ消えます。
- ポッドコントローラが管理:参照した後、ポッドはそのK8Sクラスタをスケジュールするノードスケジューラスケジューラによって呼び出されたオブジェクトのライフサイクルを持つことができるように、コントローラを使用して、それは、ポッド、タスク終了を開始しますそれはクリアされます。しかし、いくつかのタスクがコンテナ内のデーモンとして実行するために利用可能であることが要求されているがあり、障害が発生したら、私たちは、発見再構築またはコンテナを再起動したい場合は、インタフェースが実現するのは容易ではありません。しかし、古いコントローラであるポッドコントローラに設けられたK8Sに内部のコントローラ展開LPAコントローラの新バージョンの外でした組み立て、それはポッド横方向に拡張することができます
- サービス・コンポーネントはservice1.2新しいバージョンがIPVSスケジューリング機能に参加した後に手動で、設定された転送iptablesのポートです。
- K8Sコアインフラストラクチャコンポーネントとして存在ポッド、サービス、コントローラコントローラ、ポッドラン容器。サービスとコントローラーがでているタグおよびタグセレクタ自分の管理下にポッドを識別するために、コントローラはなど、操作を、追加、削除、ポッドすることができます。
- サービスは、バックアップクライアントアクセスと発見の名前に基づいて、私たちはDNSサービスを使用する必要があり、DNSサービス自体はポッドですので、それはポッドのDNSを管理するためのサービスやコントローラする必要は基本的なシステムアーキテクチャレベルポッドで、K8Sされますポッドを使用するために彼らの必要性
- モニタリング:添付ファイルがあるgrafana + promethosを使用
K8Sネットワーク
ネットワークモデル:各ポッドは、ネットワーク内で実行されている、ネットワークの名前空間は、サービスがネットワークであるが、サービスは、ノードノードはネットワーク、3つのネットワークモードで実行する仮想IP、である、すなわちノードのネットワーククラスタネットワーク、ポッドネットワーク
要求に応じて、クラスタへのネットワークエージェントのネットワーク・ノードに代わって、そこポッドクラスタネットワークは、プロキシネットワークします
同じポッドの複数の容器間の通信
ポッド各ポッドドッカーコンテナは同じIPとポートアドレス空間を持ち、それらが同じネットワーク名前空間上にあるため、彼らは、ローカルホストの間で相互にアクセスすることができます。
それとポッド内の各他の多くのドッキングウィンドウのコンテナと通信するためのどのようなメカニズム?実際には、ネットワークモデルを使用してドッカーさん:-net =コンテナ個々のポッド間の通信は、それらの間の通信を直接、到達可能なオーバーレイオーバーレイネットワークが、実際には、ポッド間の直接通信ではありません
ポッドとサービスの間の通信、サービスが仮想IPアドレスであり、各ホストは、関連するiptablesの規則を有し、ドッカーポイントへのゲートウェイであり、ホストをポイントし、パッケージを受信した後、ゲートウェイは、iptablesのルールを介して転送に転送されますサービス、およびサービスアドレスの更新やその他の操作は、他のノードが、それはKUBE-プロキシにつながる、それが時々ある方法を知って、各ノードは、ノードがAPIserverタイムサービスの更新を通知する任意の時間とAPIserver、で通信を維持する責任があるこのコンポーネントを、持っていますそしてAPIserverは、すべてのKUBE-プロキシを知らせるための実用的なタスクを生成しますので、完成人間の関与なしに、
フランネル
これは、ネットワーク構成のサポートCNIプラグインのために良いサポートです
キャラコ:ネットワーク構成およびネットワークポリシーをサポートするために、BGPプロトコルに基づいて、
canel:利点の2種類の各セットは、のほとんどは、現在使用されて
ネットワークポリシー、ネットワークプロキシ
名前空間とドッキングウィンドウK8Sが異なっている、それは宇宙ポッドには名前を割り当てる、クラスターの面で全体K8Sのためである、とポッドとポッドとの間の通信がないため、その名前空間は唯一、国境管理に設けられています行うために設定し、ネットワークを使用すると、iptablesのルールを設定することにより、これらの名前空間との間のアクセスポリシーを定義することができるということです
資格証明書のいくつかのセットが理解します
通信を確保するためには、
- 認定APIserverとetcd間の双方向が必要です
- そのクライアントとのAPIserverも証明書が必要です
パッケージ
コンポーネント上のマスタ管理ノード
マスター上のコンポーネントは、記憶されているAPIserver上の大量のデータ、および構成、すべてのデータがローカルに格納されているが、共有ストレージETCDに、しかし、単一障害点を回避していないが存在することは、一般に、少なくとも3つのマスターノードであります
- APIserver:このコンポーネントは、サービスがデーモンモードで実行されているインタフェースを提供し、クラスタ管理のユーザーがAPIserverによってクラスタ全体のK8Sを管理することです。APIserverクラスタ全体との相互作用はの中核であるすべてのクエリおよび管理操作は、APIによって行う必要が、すべてのコンポーネントのモジュール同士を呼び出すことはありません、仕事そのものとAPIserver取引の一部で行われ、それは国家のすべての結果です、 etcdでの永続ストレージの調製。これは、クラスタ全体のゲートウェイであります
- コントローラマネージャ(コントローラマネージャ):ノードステータス条件、ポッド、ポッドと関連付けられたサービスの数などを含む、システム全体の背景を行います。
- スケジューラ(スケジューラ):APIserverが作成要求ポッドオブジェクトを確認した後、大規模なアプリケーションプラットフォームを展開し、管理するための容器、私たちに必要な、クラスタ内の各ノードの利用可能なリソースに応じて、スケジューラによってスケジューリングの決定を行うために、必要なリソース要件
- ETCD:責任あるノード間のサービスの検出と設定を共有します。
ノードノード
- kubelet:エージェント、APIserverは、コンテナのタスクの割り当てと管理ポッドノードを受け取ると、コンテナは定期的にapiserverに、状態を取得します。
- コンテナ・ランタイム環境があります含め、画像をダウンロードして、コンテナを実行する責任少なくともドッキングウィンドウ環境で
- KUBE-プロキシは、ネットワークプロキシが担当ポッドで、各計算ノード上で実行されます。サービスから取得した情報をタイミング、適切な政策を行うことをetcd。