概要
k8s(知事)
コンテナテクノロジーに基づく分散アーキテクチャソリューションは、厳格な機密性のためのGoogleの秘密兵器です
。Borgのオープンソースバージョンであるk8sは、Googleのオープンソースコンテナオーケストレーションエンジンであり、自動展開、大規模なスケーラビリティ、アプリケーションのコンテナ化された管理をサポートします。
K8の役割は何ですか?
本身:
容器自动化复制和部署。随时扩展或收缩容器规模提供负载均衡
方便容器升级
提供容器弹性,如果失效就替换他
测试:
测试服务器的集中化。自动化管理,将各种平台的服务器加入集群,按需部署或销毁
持续集成时方便自动部署
建築:
Kubernetesの全体的なアーキテクチャ
Kubernetesは、マスターノード(マスターノード)、ワーカーノード(スレーブノードまたはワーカーノード)、
クライアントコマンドラインツールkubectlなどの追加アイテムを含むマスタースレーブ分散アーキテクチャを使用します。マスターノード:クラスターの管理をスケジュールするためのマスターノード。これは、APIサーバー、スケジューラー、クラスター状態ストア、およびコントローラーマネージャーサーバーで構成されています。
その機能は次のとおりです。
-
APIサーバー:統合されたリソース操作ポータルを提供し、認証、承認、アクセス制御、API登録、および検出のためのメカニズムを提供します。
-
スケジューラー:リソースのスケジューリングを担当し、事前に決定されたスケジューリング戦略に従って、対応するノードにポッドをスケジュールします。
-
クラスター状態ストア:クラスター全体の状態を保存します。デフォルトではEtcdが使用されます。
-
Controller-Manger Server:障害検出、自動拡張、ローリング更新などのクラスターのステータスの維持を担当します。ワーカーノード:作業ノード、コンテナー化されたビジネスアプリケーションの実行。kubelet、kubeプロキシ、コンテナランタイムが含まれています。
機能は次のとおりです:
1。kubelet:コンテナのライフサイクルを維持し、CSI(コンテナストレージインターフェイス)とCNI(コンテインレネットワークインターフェイス)を管理します
2.2。kube-proxy:パブリックアクセス戦略(例:負荷分散)に基づいて、ポッドにアクセスする方法を提供します。
3.3。コンテナーランタイム:イメージ管理と、ポッドとコンテナーの実際の操作を担当します。
kubectl:Kubernetesクラスターのコマンドラインインターフェース。コマンドラインを介してAPIサーバーと対話し、クラスター内のさまざまなリソースのメンテナンスと管理を実現するために使用されます。
アドオン:Kubernetesのコア機能の拡張であり、主にネットワーク、サービスディスカバリ、視覚化の3種類の追加アイテムが含まれます。
動作原理
1.アプリケーションのデプロイを含むymlファイルを準備し、kubectlクライアントツールを介してApiServerに送信します。
2. ApiServerはクライアントの要求を受信し、リソースの内容をデータベース(etcd)に保存します。
3.コントローラーコンポーネント(スケジューラー、レプリケーション、エンドポイントを含む)は、リソースの変更を監視して反応します。
4. ReplicaSetはデータベースの変更をチェックし、必要な数のポッドインスタンスを作成します。
5.スケジューラーはデータベースの変更を再度チェックし、ポッドが特定の実行ノード(ノード)に割り当てられていないことを検出し、一連の関連ルールに従ってポッドを実行できるノードにポッドを割り当て、ポッドの割り当てを記録するデータベース。
6. Kubeleteは、データベースの変更を監視し、後続のポッドのライフサイクルを管理し、それが配置されているノードで実行するように割り当てられているポッドを検出します。新しいポッドが見つかった場合、新しいポッドはそのノードで実行されます。
原理:
-
ユーザーは、APIサーバーのREST APIまたはJson形式とYaml形式の両方をサポートするKubectlコマンドラインツールを使用して、ポッド作成リクエストを送信します。
-
APIサーバーはユーザーリクエストを処理し、ポッドデータをEtcdに保存します。
-
スケジュールは、APIサーバーの監視メカニズムを介して新しいポッドをチェックし、ノードをポッドにバインドしようとします。
-
ホストのフィルタリング:スケジューラーは一連のルールを使用して、要件を満たさないホストを除外します。たとえば、ポッドが必要なリソースを指定している場合、リソースが不十分なホストを除外する必要があります。
-
ホストスコアリング:最初のステップで選択した要件を満たすホストをスコアリングします。ホストスコアリング段階で、スケジューラーは、レプリケーションコントローラーのコピーを別のホストに配布したり、最も低いホストを使用したりするなど、いくつかの全体的な最適化戦略を検討します。ロード待機;
-
ホストの選択:スコアが最も高いホストを選択し、バインド操作を実行して、結果をEtcdに保存します。
-
kubeletは、スケジューリング結果に従ってポッド作成操作を実行します。バインドが成功すると、コンテナーが開始され、Dockerが実行され、スケジューラーがAPI Server APIを呼び出して、etcdにバインドされたポッドオブジェクトを作成し、すべてのポッドを記述します。ワーカーノードでバインドおよび実行されている情報。各ワーカーノードで実行されているkubeletは、バインドされたポッド情報をetcdと定期的に同期します。ワーカーノードで実行されているはずのバインドされたポッドオブジェクトが更新されていないことが判明すると、DockerAPIを呼び出して作成して開始します。ポッド内のコンテナ。