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 スティッキーフッター実装コード

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

推薦する

Ubuntu 20.04 と NVIDIA ドライバーのインストールに関するチュートリアル

Ubuntu 20.04をインストールする NVIDIAドライバーをインストールする Pytouch...

jQuery を使用してカルーセル効果を実装する

本日ご紹介するのは、jQuery を使用してシンプルなカルーセルを実装する方法です。実装の原則は次の...

MySQL はリレーショナルデータベースですか?

MySQL はリレーショナル データベース管理システムです。リレーショナル データベースは、すべて...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

Linux 最速のテキスト検索ツール ripgrep (grep の最良の代替)

序文テキスト検索ツールといえば、Linux で最も便利でよく使われるツールの 1 つである grep...

mysql バックアップ スクリプト mysqldump の使い方の詳細な説明

この記事では、参考までにMySQLバックアップスクリプトを紹介します。具体的な内容は次のとおりです。...

Linuxダイナミックリンクライブラリの使用

通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...

Linuxカーネルマクロcontainer_ofの詳細な分析

1. 前述の通り数年前、Linux ドライバーのコードを読んでいたときにこのマクロを見ました。長い間...

DockerにRedisをインストールし、設定ファイルとして起動する詳細な説明

更新: 最近、サーバーがマイニング ウイルスによってハッキングされたことが判明しました。これは、おそ...

親ページの更新を制御するために HTML で iframe を実装するためのアイデアとコード

1. 応用シナリオ親ページ a.jspサブページ b.jsp (ページ a に埋め込まれた ifra...

子要素の margin-top によって親要素が移動する問題の解決方法

問題の説明今日、ページ スタイルを変更していたときに、子要素にmargin-top設定したのに、子要...

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

HTML テキストフォーマットの簡単な例 (詳細な説明)

1. テキストの書式設定: この例では、HTML ファイル内のテキストを書式設定する方法を示します...

Vueはドラッグアンドドロップを使用して構造ツリーを作成します

この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...

Vueでタイマーをエレガントにクリアする方法

目次序文最適化派生的な質問: beforeDestroy はトリガーされませんか?序文タイマーをクリ...