クラウドネイティブのコンセプト
焦点は次の 3 つの側面にあります
- アプリケーションのコンテナ化
- マイクロサービス指向のアーキテクチャ
- アプリケーションはコンテナのオーケストレーションとスケジューリングをサポートします
導入:
- これらの技術により、耐障害性があり、管理可能で、監視可能な疎結合システムの構築が可能になります。クラウドネイティブ テクノロジを確実な自動化と組み合わせることで、エンジニアはシステムに頻繁かつ予測可能な重大な変更を容易に加えることができます。
- クラウドネイティブ テクノロジーにより、組織はパブリック クラウド、プライベート クラウド、ハイブリッド クラウドなどの新しい動的環境で、弾力的にスケーラブルなアプリケーションを構築して実行できます。代表的なクラウドネイティブ テクノロジーには、コンテナー、サービス グリッド、マイクロサービス、不変インフラストラクチャ、宣言型 API などがあります。
Kubernetes
コンテナーとマイクロサービスと自動管理
コンテナとマイクロサービス
コンテナ:
コンテナは、仮想マシンの後のより高いレベルの抽象化です。この抽象化層では、アプリケーション全体の各コンポーネントが独立したユニットにパッケージ化されます。このユニットはいわゆるコンテナです。
このようにして、コードとアプリケーション サービスを基礎となるアーキテクチャから分離することができ、完全な移植性 (任意のオペレーティング システムまたは環境でアプリケーションを実行できる機能
) が可能になります。 独立したサービスに分離およびパッケージ化されているため、各コンポーネントは簡単に置き換え、アップグレード、デバッグできます。 。
ドッカー
- Docker は、最も一般的に使用されているコンテナ化ツールであり、最も人気のあるコンテナ ランタイムです。
- Docker は 2013 年にオープンソース化されました。コンテナーのパッケージ化と作成、およびコンテナーベースのアプリケーションの管理に使用されます。すべての Linux ディストリビューション、Windows、macOS は Docker をサポートしています。
- CoreOS rkt、Mesos Containerizer、LXC などのコンテナ化ツールは他にもあります。しかし現在、コンテナ化されたアプリケーションの大部分は Docker 内にあり、
k8s
K8s:
-
kubernetes は、管理されているすべてのコンテナに変更を一度に伝播できます
-
同時に、kubernetes は利用可能なコンテナを簡単にスケジュールでき、このプロセスは自動化されています。
Kubernetes は、クラスター内の単一マシンであるノード上で実行されます。独自のハードウェアがある場合、ノードは物理マシンに対応する可能性がありますが、クラウドで実行されている仮想マシンに対応する可能性が高くなります。ノードは、アプリケーションまたはサービスがデプロイされ、Kubernetes が作業を実行する場所です。ノードにはマスターノードとワーカーノードの2種類があり、Kubernetesはマスタースレーブ構造になります。
マスター ノードは、他のすべてのノードを制御する特別なノードです。一方で、これはクラスター内の他のノードと同様、つまり、単なる別のマシンまたは仮想マシンです。一方、クラスターの残りの部分を制御するソフトウェアも実行されます。クラスター内の他のすべてのノードにメッセージを送信して、それらのノードに作業を割り当て、ワーカー ノードはマスター ノード上の API サーバーにレポートを返します。
マスター ノード自体にも、API サーバーと呼ばれるコンポーネントが含まれています。この API は、ノードがコントロール プレーンと通信するための唯一のエンドポイントです。API サーバーは、ワーカー ノードとマスター ノードがポッド、デプロイメント、その他すべての Kubernetes API オブジェクトの状態について通信するポイントであるため、非常に重要です。
ワーカー ノードは、Kubernetes で実際に動作するノードです。アプリケーションにコンテナーまたはポッド (後で定義) をデプロイすると、実際にはそれらをワーカー ノード上で実行するようにデプロイすることになります。ワーカー ノードは、1 つ以上のコンテナのリソースをホストし、実行します。
Kubernetes の物理的ではなく論理的な作業単位はポッドと呼ばれます。ポッドは Docker のコンテナに似ています。コンテナを使用すると、独立して実行できる独立した分離された作業単位を作成できるという前に述べたことを思い出してください。ただし、Web サーバーなどの複雑なアプリケーションを作成するには、多くの場合、複数のコンテナーを組み合わせて、それらをポッド内で一緒に実行および管理する必要があります。これがポッドの設計目的です。ポッドを使用すると、複数のコンテナーを取得し、それらをどのように組み合わせてアプリケーションを作成するかを指定できます。これにより、Docker と Kubernetes の関係がさらに明確になります。通常、Kubernetes ポッドには 1 つ以上の Docker コンテナが含まれており、すべてのコンテナが 1 つのユニットとして管理されます。
サービスメッシュ
サービスメッシュアーキテクチャ図
- サービス グリッドは各ポッドにサイドカー プロキシを挿入します。これはアプリケーションに対して透過的であり、アプリケーション間のすべてのトラフィックがそれを通過するため、アプリケーション トラフィックの制御をサービス グリッドに実装できます。
- クラウドネイティブ アーキテクチャでは、コンテナの使用により異種アプリケーションの実行可能性が高まり、Kubernetes によって強化されたアプリケーションの水平拡張機能により、ユーザーは複雑な環境や複雑な依存関係を持つアプリケーションを迅速にコンパイルすることができ、心配することなくプログラム開発に集中できます。アプリケーションの監視、スケーラビリティ、サービス検出、分散トレースに関する多くの点が開発者にさらなる創造性を与えます
- 現在注目されているのは、Google、IBM、Lyft がオープンソース化したマイクロサービス管理、保護、監視フレームワークである Istio です。
エッジコンピューティング
- クラウド コンピューティングの課題、ネットワークのプレッシャーに対処し、ビジネス ニーズを満たすユーザー エクスペリエンスを向上させるために、業界はクラウド コンピューティング プラットフォームをネットワークのエッジ、つまりエッジ コンピューティングに移行することを提案しています。
- エッジ コンピューティングは、クライアント データの処理とコンピューティングを集中サーバーやクラウドベースの場所で行うのではなく、クラウド データ センターからデータ ソースに近いネットワークのエッジまでコンピューティング、ストレージ、その他の機能を拡張します。
- つまり、エッジ コンピューティングは、コンピューティング リソース、データ ストレージ、エンタープライズ アプリケーションを人々が実際に情報を利用する場所に近づけ、ネットワークのエッジでディープ ラーニングや強化学習などの人工知能アルゴリズムの実行をサポートし、コンピューティング タスクを回避できます。リモート データセンターへの超長いネットワーク伝送遅延は、高リアルタイム IoT アプリケーション (自動運転、ドローン、拡張現実など) の要件を満たします。
- 人気のあるフレームワーク: kubeEdge。ネイティブのコンテナー化されたアプリケーション オーケストレーション機能をエッジ ホストに拡張します。これは、kubernetes 上に構築されており、
ネットワーキング、アプリケーションのデプロイメント、およびクラウドとエッジ間のメタデータ同期のためのインフラストラクチャ サポートを提供します。
クラウドエッジ
「クラウドエッジコラボレーション」では、端末が全体的な認識を担当し、エッジがローカルデータの分析と推論を担当し、クラウドがすべてのエッジ認識データ、ビジネスデータ、インターネットデータを収集して、業界および業界間の状況認識を完了します。そして分析。
「クラウド」は従来のクラウドコンピューティングの中心ノードおよびエッジコンピューティングの制御端末であり、
「エッジ」はクラウドコンピューティングのエッジ側であり、インフラストラクチャエッジとデバイスエッジに分けられ
、各種センサー、カメラなどを指します。
ネットワークフォワーディング、ストレージ、コンピューティング、インテリジェントデータ分析などのタスクをエッジに配置して処理することで、
超大規模コンピューティング、ストレージ、遅延に敏感でないタスクはクラウドに配置され、クラウドコンピューティングとエッジが連携します。ユビキタスクラウドを真に実現するには、ネットワークコンピューティングパワースケジューリングとネットワーク全体の統合管理・制御を実現します。