kubernetes:masterノードとnodeノードの概要


kubernetesのアーキテクチャ全体はmasterノードとnodeノードに分けられ、masterノードはpodのスケジューリング、podのreplicationの数node、endpoint、サービスアカウント、トークンの管理などを担当する.nodeノードは主にcontainerの作成、サービスのエージェント、その他の関連アプリケーションを担当します.
Masterノード
Masterコンポーネントが提供するクラスタ制御.Masterコンポーネントは、クラスタに対してグローバルな意思決定(スケジュールなど)を行い、クラスタイベントの検出と応答(レプリカコントローラのreplicasフィールドが満たされていない場合、新しいレプリカを起動します).
Masterコンポーネントは、クラスタ内の任意のノードで実行できます.しかし、簡単にするために、設定スクリプトは通常、同じ仮想マシン上のすべてのMasterコンポーネントを起動し、この仮想マシン上でユーザーコンテナを実行しません(高可用性).
Masterノードには、kube-apiserver、kube-control-manager、kube-schduler、etcd、関連プラグインアプリケーション、および下位クラウドコントローラが含まれます.
1. kube-apiserver
kube-apiserverはKubernetes APIを外部に暴露した.Kubernetesフロントエンド制御層です.これは、より多くのインスタンスを配置することによってスケールされる水平拡張として設計されています.
2.etcdデータベース
etcdは主にkubernetesのバックエンドデータベースであり,k/v方式で格納され,すべてのk 8 sクラスタデータがここに格納される.
3. kube-controller-manager
kube-controller-managerは、クラスタ内の通常のタスクを処理するバックグラウンドスレッドであるコントローラを実行します.論理的には、各コントローラは個別のプロセスですが、複雑さを低減するために、独立した実行可能ファイルにコンパイルされ、単一のプロセスで実行されます.これらのコントローラには、次のものがあります.
     :       ,       。

     :                       Pod。

     :      (Endpoints)   (    Services & Pods)。

          :                API     

4.クラウドコントローラマネージャ-(cloud-controller-manager)
cloud-controller-managerは、最下位のクラウドプロバイダと対話するためのコントローラです.クラウドコントローラマネージャ実行可能コンポーネントはKubernetes v 1である.6バージョンで導入されたAlpha機能.
cloud-controller-managerは、クラウドプロバイダ固有のコントローラサイクルのみを実行します.これらのコントローラループは、kube-controller-managerで無効にする必要があります.kube-controller-managerを起動するときに--cloud-providerフラグをexternalに設定することで、コントローラループを無効にできます.
cloud-controller-managerは、クラウドベンダーコードとKubernetesコアが互いに独立して発展することを可能にし、以前のバージョンでは、Kubernetesコアコードはクラウドプロバイダ固有の機能コードに依存していました.今後のバージョンでは、クラウドベンダーの特定のコードは、クラウドベンダーが独自に維持し、K 8 sを実行するクラウドコントローラマネージャに関連付けられる必要があります.クラウドプロバイダの依存関係:
     :                           

     :                

     :     ,              

      :     ,      ,              

5. kube-scheduler
kube-schedulerは、ノードが割り当てられていない新しく作成されたPodを監視し、podのスケジューリングで実行するノードを選択します.
6.プラグイン(addons)
プラグインはクラスタ機能を実現するPodとServiceです.PodsはDeployments,ReplicationControllersで管理できます.プラグインオブジェクト自体はネーミングスペースによって制限され、kube-systemネーミングスペースに作成されます.Addonマネージャは、追加リソースの作成と維持に使用します.
主に次のプラグインがあります.
  • DNSドメイン名登録サービス
  • KubernetesサービスにDNSレコードを提供し、Kubernetesが起動したコンテナはDNSサーバをDNS検索に自動的に含める.
  • dashboardユーザインタフェース
  • kubernetesクラスタの状態概要のUIインタフェースを提供します.
    3.容器監視
    コンテナリソースモニタリングは、コンテナに関する一般的な時間系列メトリック値を1つのセットのデータベースに保存し、これらのデータを参照するためのインタフェースを提供します.
    4.ログ収集
    コンテナのログデータを検索およびブラウズインタフェースを提供する一元ログストレージに保存します.
    Nodeノード
    Nodeノードコンポーネントは、各ノードで実行され、実行されたPodを維持し、Kubernetesランタイム環境を提供します.次の項目があります.
    1. kubelet
    kubeletは、ノードに割り当てられたPod(apiserverまたはローカルプロファイルを介して)を監視する主要なノードエージェントであり、Podをマウントするために必要なデータボリューム(Volume)を提供します.
    1.   Pod   secrets。
    
    2.   Docker   (    rkt)   Pod    。
    
    3.               。
    
    4.      Pod(Mirror Pod)   Pod              。
    
    5.                

    2. kube-proxy
    kube-proxyはホスト上のネットワークルールを維持し接続転送を実行することでKubernetesサービスエージェントを実現した
    3. container runtime interface
    コンテナのcriを実行します.containerやrktなどです.
    4. supervisord
    supervisordはクbeletとdockerの実行を保証する軽量レベルのプロセス監視システムです.
    5. Fluentd
    fluentdは、クラスタレベルのログクラスタレベルのログを提供するのに役立つデーモンです.
    グローバルコンポーネント
    グローバルコンポーネントは主にCNI、すなわちコンテナネットワークを指し、それはkubernetesクラスタ全体を貫き、masterノードアプリケーションでもnodeノードアプリケーションでも同じネットワークにある必要があり、それによってサービス全体の正常なアクセスを保証する.
    以上、k 8 sノード全体に関する機能の紹介ですが、詳しくはkubernetes公式ドキュメントを参照してください.