通常、アプリケーションを実行するにはサーバーが必要です。初期の頃は、サーバー上で実行されるアプリケーションの境界を定義および強制し、リソースの使用における公平性を確保する方法がありませんでした。したがって、サーバーでは通常、単一のアプリケーションのみの実行に制限されており、明らかにリソースの使用率が低下します。 その後、仮想化技術が導入され、1 台の物理コンピューター上に複数の仮想インスタンスを作成できるようになりました。 仮想マシン (VM) は、ハイパーバイザーと呼ばれるソフトウェアによって管理される仮想化されたコンピュータ システムのインスタンスです。各仮想マシンは、独自の仮想リソースを持つ自己完結型の分離されたエンティティとして実行されます。複数の仮想マシンを同じ物理サーバー上に共存させることができます。仮想化によりリソースの使用率が向上します。各仮想マシンが完全に分離され、独自のオペレーティング システムを持つことが重要です。このアプローチには、物理システムを共有できる仮想マシンの数を制限するなど、いくつかの制限があります。 仮想マシンとコンテナ 仮想マシンと比較すると、ホスト物理システム上で実行される複数のコンテナがオペレーティング システムを共有するため、コンテナは軽量な仮想化ソリューションを提供します。仮想マシンと同様に、各コンテナには CPU 共有を含む独自のリソース セットがありますが、オペレーティング システムは他のコンテナと共有されます。 Docker は、コンテナを管理するために広く使用されているコンテナ ランタイムです。 コンテナは仮想マシンに比べて多くの利点があり、アプリケーションをパッケージ化するために広く使用されています。ただし、実稼働環境でコンテナを管理し、フォールト トレランスや負荷分散などのサービスを提供することは困難な作業です。 解決策は、2014 年に Google によってオープンソース化された、オープンソースで拡張可能なコンテナ オーケストレーション プラットフォームである Kubernetes です。Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化します。 Kubernetes を使用すると、複数のホストにわたるコンテナ クラスターの管理と調整が可能になり、フォールト トレランスやスケーラビリティなどのサービスが提供されます。 注: Kubernetes は、「K」と「s」の間に 8 つの文字があるため、K8s と呼ばれることがよくあります。 アーキテクチャとコンポーネントKubernetes デプロイメントは Kubernetes クラスターと呼ばれ、コントロール プレーンとノードの 2 種類のリソースで構成されます。各クラスターには、1 つ以上のコンテナで構成されるポッド内でコンテナ化されたアプリケーションを実行するワーカー ノードのセットがあります。これらのノードは、次の図に示すようにコントロール パネルによって管理されます。実稼働環境では、クラスターには複数のワーカー ノードが含まれ、コントロール プレーンは複数のマシンで実行されるため、高可用性とフォールト トレランスが確保されます。 コントロールパネルのコンポーネントコントロール パネルの主なコンポーネントは次のとおりです。
ノードコンポーネント上の図に示すように、Kubernetes クラスター内の各ワーカー ノードもいくつかのコンポーネントを実行します。コンテナランタイムとして Docker を指定しました。ただし、Kubernetes は他の多くのランタイムもサポートしています。全体像は以下のとおりです。
コアコンセプトまず、Kubernetes に関連するいくつかの基本的な概念を理解しましょう。
サンプルアプリケーションをデプロイするこのセクションでは、ローカル Kubernetes クラスターである minikube にサンプル アプリケーションをデプロイします。ローカル システムに minikube をインストールするには、minikube Web サイトに記載されている手順に従う必要があります。次に、次のコマンドを使用してクラスターを起動します。 Kubernetes クラスターと対話するには、kubectl コマンドラインを使用して、Kubernetes API を通じてクラスターに対してさまざまな操作を実行します。 Kubernetes Web サイトに記載されている手順に従って、kubectl CLI をインストールします。あるいは、minikube には kubectl も付属しており、 minikube kubectl -- [commands] を使用してアクセスできます。 kubectl コマンドの一般的な構造は、<resource> に対して操作を実行するための <action> を提供することです。ノードのリストを取得するには、次のコマンドを使用できます。以下に例をいくつか示します。コマンドの最後に --help を追加すると、その使用方法に関する詳細情報が表示されることに注意してください。 ポッドを作成する最初のポッドを作成しましょう。実際には、Pod を直接作成するわけではありません。これらは、デプロイメントなどのワークロード リソースを使用して作成されます。以下は、YAML テンプレートを使用して Pod を作成する例です。 Pod の名前は nginx-pod で、1 つのコンテナ nginx が含まれています。繰り返しになりますが、Pod は Kubernetes の基本的な構成要素です。 Pod は Kubernetes でデプロイ可能な最小単位であり、最も一般的な使用例は、各 Pod が 1 つのコンテナを実行する、Pod ごとのコンテナ モデルです。 kubectl は、命令型と宣言型の 2 つの方法で使用できます。宣言的に使用する場合は、上記の YAML ファイルなど、目的の状態を記述したマニフェストを提供し、それをクラスターに送信して、それを実現する方法を kubectl が決定します。一方、命令型で使用する場合は、kubectl に実行するアクションを指示するために、クラスター固有のコマンドを提供する必要があります。 上記のファイルに示されている Pod を作成するには、まず nginx-pod というファイルに内容を保存し、次のコマンドを実行します。
2 番目のコマンドは Pod のリストを取得し、すべてがうまくいけばそこにリストされている Pod を見つけることができます。 これで最初のポッドが作成されました。 ただし、 Pod はクラスター内で実行されており、デフォルトでは直接アクセスできないため、 http://127.0.0.1: 80 にアクセスすることはできません。 通常、Pod に直接アクセスすることはありませんが、デモンストレーションの目的で、kubectl のポート転送機能を使用できます。この機能は、ホストと Pod の間にトンネルを確立し、ホストからのトラフィックを Pod の指定されたポートに渡します。 上記のコマンドを実行した後、ブラウザで http://127.0.0.1:8080 にアクセスすると、nginx サーバーのウェルカム ページが表示されます。ポート転送セッションを終了するには、「Ctrl + C」を押します。これでポッドを削除できるようになりました。次に、デプロイメントを作成してポッドを管理します。 デプロイメントを作成する次のマニフェストを使用してデプロイメントを作成します。 このリストには 3 つの重要な部分があります。
マニフェストを nginx-deployment.yaml ファイルに保存し、次のコマンドを使用してデプロイメントを作成します。 すべてがうまくいけば、リストにデプロイメントが表示されるはずです。 READY 列の 2/2 は、ReplicaSet で指定された番号と一致します。 ここで、ポッドを削除し、新しいポッドが自動的に起動される様子を観察することで、デプロイメントの可用性をテストできます。コマンドは次のとおりです。 1 つの Pod が削除されるとすぐに、別の名前の別の Pod がすぐに作成されることがわかります。 サービスを作成するサービス API を使用して、Pod 上で実行されているアプリケーションを外部に公開します。サービスを使用すると、基盤となる Pod の IP を抽象化し、負荷分散などのサービスを提供できます。通常、複数の種類のサービスを作成できます。サービスを作成するには、次のコマンドを使用します。 kubectl expose コマンドを使用すると、Kubernetes オブジェクト (ここでは Deployment) を新しい Kubernetes サービスとして公開できます。コマンドを実行すると、新しく作成されたサービスがサービス リストに表示され、describe コマンドを使用して、以下に示すように、サービスに関する詳細情報を取得できます。 サービスにアクセスするために使用できるランダム ポートを指定する NodePort フィールドの値に注意する必要があります。 minikube を使用しているため、次のコマンドを使用してサービスにアクセスできます。 すべてがうまくいけば、nginx のウェルカム ページが開きます。 要約するKubernetes は、オープンソースで拡張可能なコンテナ オーケストレーション プラットフォームです。 Kubernetes を使用すると、複数のホストにわたるコンテナのクラスターの管理と調整が可能になり、フォールト トレランスやスケーラビリティなどのサービスが提供されます。 |
>>: 生成 AI とクラウド ネイティブは期待が膨らんでいる時期にあります。それらは企業変革よりも重要ですか?
今朝ウェブサイトを更新したところ、ウェブサイトの PR が 1 から 3 に増加していることに驚きま...
Ubuntu の開発元 Canonical は、Linux ディストリビューションの最新バージョンで...
まずはこの広告を紹介します。父親がテーブルにオレオクッキーを数枚置き、ソファで寝たふりをして子供と遊...
1月10日、中国情報通信研究院(以下、「CAICT」)が主催し、クラウドコンピューティング標準およ...
sharktech (Sharktech のロサンゼルス データ センター) でホストされている R...
SEO の価値は、インターネットからターゲットを絞った無料のトラフィックを獲得することですが、ほとん...
みなさんこんにちは。A5でまたお会いできて嬉しいです。上記で公開した 2 つの記事は 1,000 回...
SEOの基本作業は、毎日、自社サイトと競合サイトのデータ更新に注意を払うことです。今日、例外なくクエ...
口コミマーケティングも非常に大きなテーマです。オンラインマーケティングやニュースマーケティングとは異...
arkecx は現在、7 月 4 日 (一部の国では独立記念日) に全製品を 10% 割引で提供して...
日常のウェブサイト構築と最適化では、ウェブサイトの調整によるアドレスの変更や、ディレクトリの変更によ...
多くの人は、ビデオ サーバー、スライス サーバー、トランスコーディング サーバー、およびあらゆる高負...
中国電子技術標準化研究所が主催し、51CTOが主催する「第7回中国クラウドコンピューティング標準およ...
ローカル検索トラフィックが成長を続けるにつれ、複数の地域で事業を展開している企業(大企業と呼びましょ...
6年後、テンセントは大規模な社内構造調整を実施し、クラウドおよびスマート産業事業グループを設立しまし...