k8sとDockerの関係についての簡単な説明

k8sとDockerの関係についての簡単な説明

最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの文字があります) を使用しています。これまでも簡単に使ってきたのですが、最近 k8s には多くの概念があり、コマンドだけでは不十分であることがわかったので、これを機会に k8s をより包括的に理解して使用できるように何か書いてみたいと思います。この記事の目的は、k8s の概念をより包括的に理解し、仕事でよく使われる操作を学ぶことです。全体的な焦点は、原則と応用に置かれています。 k8s を正式に始める前に、k8s と Docker の関係を確認し、仮想化と展開方法の観点からコンテナを使用する理由を説明します。それでは始めましょう。

現在、Kubernetes と Docker のテクノロジーの背景と要件を比較する記事はありません。この記事では、最も純粋な公式定義の観点から、2 つのテクノロジーの背景と従来のテクノロジーとの比較について説明します。

簡単な紹介:
公式定義 1: Docker は、開発者がアプリケーションと依存関係をポータブル コンテナーにパッケージ化し、仮想化も可能な一般的な Linux マシンに公開できるようにするオープン ソースのアプリケーション コンテナー エンジンです。

公式定義2:k8sは、コンテナクラスタの自動展開、自動拡張・縮小、メンテナンスなどの機能を実現できるオープンソースのコンテナクラスタ管理システムです。

従来の技術との比較:
次に、2つの古典的な絵を見てみましょう。

1. 仮想化の観点から:

図1

上の図は、Docker コンテナ (k8s で管理できるもの) と従来の仮想化方法の違いを示しています。従来の仮想化技術では、物理ハードウェアを複数のハードウェア セットに仮想化した後、各ハードウェア セットにオペレーティング システムを展開し、これらのオペレーティング システム上で対応するアプリケーションを実行する必要があります。 Docker コンテナ内のアプリケーション プロセスは、ホスト マシン (実際の物理マシン) のカーネル上で直接実行されます。Docker エンジンは、いくつかの独立したアプリケーションとそれぞれの依存関係をパッケージ化し、仮想化されていないホスト ハードウェア上で独立して直接実行します。同時に、各コンテナには独自のカーネルがないため、従来の仮想マシンよりも明らかに軽量です。 各クラスターには複数のノードがあり、各ノードを管理できます。これらのアプリケーションが配置されている小さな動作環境(コンテナ)を管理するために、私たちの Kubernetes が生まれました。

2. 展開の観点から

図2

この図を上記の Docker の図と混同しないように注意してください。図 1 は、仮想化の観点からアプリケーションに必要な動作環境を提供するために必要な仮想化操作を示しています (つまり、従来: オペレーティング システムがインストールされた仮想化された仮想マシン、Docker: コンテナー エンジンによって管理されるコンテナー)。

図 2 は、実際のアプリケーションがこれらの特定のオペレーティング環境にデプロイされる状況を示しています。従来の方法は、すべてのアプリケーションを同じ物理マシン ノードに直接デプロイすることです。この方法では、各アプリケーションの依存関係はまったく同じであり、アプリケーションを分離することはできません。もちろん、分離のために、仮想マシンを作成してその中にアプリケーションをデプロイすることもできます (図 1 の上部に示すように)。ただし、これは面倒すぎるため、仮想マシンよりも軽量な Docker テクノロジが登場しました。現在では、コンテナー テクノロジをデプロイすることでアプリケーションをデプロイしており、すべてのコンテナーはコンテナー エンジン上で実行できます。仮想マシンは面倒すぎると思うので Docker を使いたいのであれば、ぜひ使ってみてください。しかし、どのように使うのでしょうか?一つずつ手動で作成しますか?もちろんそうではありませんでした。そこで Kubernetes テクノロジーが登場し、Kubernetes に代表されるコンテナ クラスター管理システムが登場する時が来ました。

簡単に言えば、Kubernetes を使用して Docker クラスターを管理します。つまり、Docker は Kubernetes 内で使用される低レベルのコンポーネントと見なすことができます。さらに、kubernetes は Docker だけでなく、別のコンテナ技術である Rocket もサポートしています。この記事の簡単な説明が、両方についての理解と知識を与えてくれることを願っています。

k8sとDockerの関係について簡単に説明したこの記事はこれで終わりです。k8sとDockerの関係についてさらに詳しく知りたい方は、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker+K8S クラスタ環境構築と分散アプリケーション展開
  • Dockerコンテナのk8sデプロイメントの実装
  • K8S クラスターを構築し、Hyper-V で Docker をインストールする方法
  • Docker 学習ノート k8s デプロイ方法

<<:  CSS スティッキーフッター実装コード

>>:  ハイパーリンクに関するいくつかの質問

推薦する

Vue スキャフォールディングでのレンダリングを理解する

Vue スキャフォールディングでは、エントリ ファイル main.js の新しい Vue コードに、...

MySQL 5.7.30 のインストールとアップグレードの問題に関する詳細なチュートリアル

くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...

Mysql SQL ステートメントのコメント

MySQL SQL ステートメントにコメントを追加できます。MySQL SQL ステートメントのコメ...

大きなオフセットによる MySQL 制限ページングが遅い理由と最適化ソリューション

MySQL では通常、limit を使用してページ上のページング機能を完了しますが、データ量が大きな...

MySQL 5.6.37 (zip) ダウンロード インストール 構成 グラフィック チュートリアル

この記事では、MySQL 5.6.37のダウンロード、インストール、設定のチュートリアルを参考までに...

Docker を使用した war パッケージ プロジェクトのデプロイの実装

Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomca...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...

Linuxでのcrontabの使い方と注意点の詳しい説明

Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...

MySQL 全文インデックスガイド

全文インデックスには特別なクエリ構文が必要です。全文検索はインデックスの有無にかかわらず実行できます...

MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析

前書き: MySQL でテーブルを設計する場合、MySQL では UUID や非連続かつ非繰り返しの...

MySQL で固定されていない位置から文字列要素を抽出する方法

序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...

Adobe Brackets の簡単な使い方のグラフィックチュートリアル

Adobe Brackets は、HTML、CSS、JavaScript 用のオープンソースでシンプ...

WeChatアプレットリクエストの前処理方法の詳細な説明

質問一部のページでは、onload でデータを要求してからビューをレンダリングするため、ミニプログラ...

ディスクを破壊せずに Linux で dd コマンドを使用する方法

故障したストレージ ドライブからデータを救出する場合でも、アーカイブをリモート ストレージにバックア...