1. k8sの概要と特徴
K8s は、クラウド プラットフォームの複数のホスト上でコンテナ化されたアプリケーションを管理するために使用されるオープン ソース アプリケーションです。k8s の目標は、コンテナ化されたアプリケーションの展開をシンプルかつ効率的にすることです。k8s は、アプリケーションの展開、計画、更新、およびメンテナンスのためのメカニズムを提供します。 。K8s は、2014 年に Google が開発したオープンソースのコンテナ化されたクラスタ展開管理システムです。k8s を使用すると、コンテナ化されたアプリケーションを展開できます。アプリケーションの拡張に役立ちます。K8s ターゲットの実装により、コンテナ化されたアプリケーションの展開がよりシンプルかつ効率的になります。
k8sの特徴
- オートボクシング: アプリケーション環境のコンテナーのリソース構成要件に基づいて、アプリケーション コンテナーを自動的にデプロイします (手動介入は必要ありません)。
- 自己修復: コンテナーに障害が発生すると、コンテナーが再起動されます。デプロイされたNodeノードに問題が発生した場合、コンテナは再デプロイおよび再スケジュールされ、コンテナが監視チェックに失敗した場合、コンテナが正常に動作するまでコンテナは閉じられ、外部へのサービスは提供されません。
- 水平方向の拡張: 単純なコマンド、ユーザー UI インターフェイス、または CPU などのリソース使用量に基づいてコンテナーを拡張またはトリミングします。
- サービス検出: ユーザーは、追加のサービス検出メカニズムを使用せずに、サービス検出と負荷分散を実現する独自の機能を k8s に提供できます。
- ローリング更新: アプリケーションの変更に基づいて、アプリケーション コンテナーで実行されているアプリケーションに対して 1 回限りの更新またはバッチ更新を行うことができます。
- バージョンのロールバック: アプリケーションのデプロイ状況に基づいて、アプリケーション コンテナ内で実行されているアプリケーションの履歴バージョンを即座にロールバックできます。
- キーと構成の管理: ホット デプロイメントと同様に、イメージを再構築せずにキーとアプリケーション構成をデプロイおよび更新できます。
- ストレージ オーケストレーション: ストレージ システムのマウントとアプリケーションを自動的に実装します。特にステートフル アプリケーションでデータの永続性を実現します。ストレージ システムは、ローカル ディレクトリ、ネットワーク ストレージ (NFS、Gluster、Ceph など)、パブリック クラウド ストレージ サービスから取得できます。
- バッチ処理: 1 回限りのタスクとスケジュールされたタスクを提供し、バッチ データの処理と分析のシナリオに対応します。
2. k8s アーキテクチャのコンポーネント
k8s クラスターのアーキテクチャ
- コンポーネント: マスター (マスター ノード) とノード (ワーカー ノード)
- マスター ノード: k8s クラスター制御ノード。クラスターのスケジュールと管理を行い、クラスター外部のユーザーからのクラスター操作リクエストを受け入れます。マスター ノードは、
API サーバー、スケジューラー、ClusterState Store (ETCD データベース)、およびコントローラー マネージャー サーバーで構成されます。 -
- API サーバー: クラスターの統合された外部入口です。Restfull による操作を提供します。さまざまな操作を etcd ストレージに転送し、他のモジュール間のデータ対話および通信のためのハブを提供します (他のモジュールは API サーバーを通じてデータをクエリまたは変更します。API のみ)サーバー リソースクォータ制御の入り口であるetcdを直接操作します。
-
- スケジューラ: ノードのスケジューリングに使用され、アプリケーションをデプロイするノードを選択します。
-
- コントローラーマネージャー: クラスター内の通常のバックグラウンドタスクを処理するために、1 つのリソースがコントローラーに対応します (たとえば、注文操作は注文ビジネスコントローラーに対応します)。
-
- etcd: ストレージ システム。関連データをクラスターに保存するために使用されます。
- ノード: クラスター作業ノード、ユーザー ビジネス アプリケーション コンテナーを実行します。
-
- kubelet: マスターからノードに送信される代表者。現在のノードでコンテナを管理し、コンテナのライフサイクル、コンテナの作成、破棄など、ローカルコンテナのさまざまな操作を管理します。
-
- kube-proxy: 負荷分散機能の実装に使用できるネットワーク プロキシを提供します。
3. k8s のコアコンセプト
ポッド: k8s の最小のデプロイメント単位です。ポッドはコンテナの集合です。ポッド内のコンテナはネットワークを共有します。ポッドのライフサイクルは短いです。サーバーを再起動すると新しいポッドが作成されます。コントローラ: コントローラポッド コピーの数により、すべてのノードで同じポッドが実行されるように
なります。また、ワンタイム タスクとスケジュールされたタスクもサポートされます。 サービス :
注文やショッピング カートなどのポッド アクセス ルールのセットを定義します。サービスは別のノードに転送されます。ポッドのロード容量およびその他のルールに基づいて、処理用のポッド。