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

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

推薦する

HTML ページで JSON データを表示およびフォーマットする方法

JSONデータはHTMLページ上に表示されフォーマットされます1. 表示効果図説明:すべてのキー値は...

MySQL のクラスター化インデックスとクラスター化インデックスの成長の仕組みを理解する

このノートでは、 MySQL の B+Tree インデックスとは何ですか?クラスター化インデックスは...

MySQL のインデックスと制約の例文

外部キーテーブルの主キーがどのテーブルの外部キーであるかを照会する 選択 テーブル名、 列名、 制約...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...

JS でタブ効果を書く

この記事の例では、タブ効果を記述するためのJSの具体的なコードを参考までに共有しています。具体的な内...

Ajax リクエストにおけるクロスドメイン問題の原因と解決策

目次1. クロスドメインはどのように形成されるのでしょうか? 2. クロスドメインの根本的な原因3....

ノードイベントループにおけるイベント実行の順序

目次イベントループブラウザ環境イベントループノード環境イベントループ6つのステージ(1)setTim...

Node.js で Bash スクリプトを書くための究極のソリューション

目次序文zxライブラリ$`コマンド` CD()フェッチ()質問()寝る()スローしない()チョークフ...

mysql8.0.19 の基本データ型の詳細な説明

MySQL 基本データ型一般的な MySQL データ型の概要 ![1036857-201708011...

CSSをiPhoneのフルスクリーンに適応させる方法

1. メディアクエリ方式 /*iPhone X への適応*/ @media 画面のみ、(デバイス幅:...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

Docker 経由で Spring Boot アプリケーションを公開およびデプロイするプロセスの分析

目次手動展開1.アイデアを使ってSpring Bootプロジェクトを作成する2. プロジェクトをJa...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....

HTML テーブルに複雑なテーブル ヘッダーを実装するためのサンプル コード

複雑な表を作成するには HTML を使用します。複雑なテーブルでは通常、td の rowspan 属...