初心者向け Kubernetes チュートリアル: 基本、機能、 Archi構造
この Kubernetes チュートリアルを開始する前に、次のことを学習しましょう。
Kubernetesとは何ですか?
Kubernetes Kubernetes は、Google プラットフォーム上で開発されたコンテナ管理システムです。Kubernetes は、さまざまな種類の物理、仮想、クラウド環境でコンテナ化されたアプリケーションを管理するのに役立ちます。Google Kubernetes は、数百から数千の個別サーバーのクラスタで実行される複雑なアプリケーションを一貫して提供するための、柔軟性の高いコンテナ ツールです。
なぜコンテナが必要なのでしょうか?
今日のインターネット ユーザーはダウンタイムを決して受け入れません。 したがって、開発者はサービスを中断せずにメンテナンスと更新を実行する方法を見つける必要があります。
したがって、コンテナは隔離された環境です。 アプリケーションの実行に必要なものがすべて含まれています。 これにより、開発者はアプリの編集と展開が簡単になります。 さらに、コンテナ化は、Web アプリのパッケージ化、デプロイ、更新に推奨される方法となっています。
Kubernetes ではどのようなタスクが実行されますか?
Kubernetes は、分散システムに使用される Linux カーネルです。 これは、ノード (サーバー) の基礎となるハードウェアを抽象化するのに役立ち、リソースの共有プールを消費するアプリケーションに一貫したインターフェイスを提供します。
Kubernetes を使用する理由
Kubernetes は、クラウド アプリケーションとマイクロサービスのリソース割り当てとトラフィック管理を制御するのに役立ちます。 また、サービス指向インフラストラクチャのさまざまな側面を簡素化するのにも役立ちます。 Kubernetes を使用すると、コンテナ化されたアプリケーションをいつどこで実行するかを保証し、使用するリソースやツールを見つけるのに役立ちます。
Kubernetesの機能
Kubernetes の重要な機能は次のとおりです。
- 自動スケジューリング
- 自己修復機能
- 自動化されたロールアウトとロールバック
- 水平スケーリングと負荷分散
- 開発、テスト、実稼働のための環境の一貫性を提供します
- インフラストラクチャは各コンポーネントと疎結合されており、個別のユニットとして機能します
- より高密度のリソース使用率を提供します
- エンタープライズ対応の機能を提供
- アプリケーション中心の管理
- 自動スケーラブルなインフラストラクチャ
- 予測可能なインフラストラクチャを作成できます
Kubernetesの基本
この Kubernetes チュートリアルでは、Kubernetes の重要な基本について学びます。
-
Cluster
これは、利用可能なリソースを集約するのに役立つホスト (サーバー) のコレクションです。 これには、使用可能なプール内の RAM、CPU、RAM、ディスク、およびそれらのデバイスが含まれます。
-
Master
マスターは、Kubernetes のコントロール パネルを構成するコンポーネントのコレクションです。これらのコンポーネントは、すべてのクラスターの決定に使用されます。これには、クラスター イベントのスケジュールと応答の両方が含まれます。
-
Node
これは、物理ホスト上で実行できる単一のホストです。 バーチャルマシンノードは、クラスターの一部とみなされる kube-proxy、minikube、および kubelet の両方を実行する必要があります。
-
名前空間
これは論理的なクラスターまたは環境です。アクセスの範囲を限定したり、クラスターを分割したりするために広く使用されている方法です。
Kubernetes Archi構造
以下は、Kubernetes の詳細なアーキテクチャ図です。
マスターノード
マスター ノードは、Kubernetes クラスターの管理を担当する最初の最も重要なコンポーネントです。これは、あらゆる種類の管理タスクのエントリ ポイントです。フォールト トレランスをチェックするために、クラスター内に複数のマスター ノードが存在する場合があります。
マスター ノードには、API サーバー、コントローラー マネージャー、スケジューラー、ETCD などのさまざまなコンポーネントがあります。 全部見てみましょう。
APIサーバー: API サーバーは、クラスターの制御に使用されるすべての REST コマンドのエントリ ポイントとして機能します。
スケジューラ
スケジューラはスレーブ ノードにタスクをスケジュールします。 すべてのスレーブ ノードのリソース使用状況情報が保存されます。 ワークロードを分散する責任があります。
また、クラスター ノードで作業負荷がどのように使用されているかを追跡するのにも役立ちます。これにより、使用可能なリソースにワークロードを配置し、ワークロードを受け入れることができます。
その他
etcd コンポーネントは、設定の詳細と書き込み値を保存します。 ほとんどのコンポーネントと通信してコマンドを受け取り、動作します。 また、ネットワーク ルールとポート転送アクティビティも管理します。
ワーカー/スレーブノード
ワーカー ノードは、コンテナ間のネットワークを管理し、マスター ノードと通信するために必要なすべてのサービスを含むもう XNUMX つの重要なコンポーネントです。これにより、スケジュールされたコンテナにリソースを割り当てることができます。
- Kubelet: API サーバーからポッドの構成を取得し、記述されたコンテナーが稼働していることを確認します。
- Docker コンテナ: デッカー コンテナーは各ワーカー ノードで実行され、構成されたポッドが実行されます。
- Kube-proxy: Kube-proxy はロード バランサーおよびネットワーク プロキシとして機能し、単一のワーカー ノードでサービスを実行します。
- ポッド: ポッドは、ノード上で論理的に一緒に実行される単一または複数のコンテナの組み合わせです。
その他の重要な用語
レプリケーションコントローラー
レプリケーション コントローラーは、ポッド テンプレートを定義するオブジェクトです。 また、実行中のコピーの数を増減することで、Pod の同一のレプリカを水平方向にスケーリングするパラメーターも制御します。
レプリケーションセット
レプリケーション セットは、コントローラーが管理対象のポッドを認識する方法に柔軟性を備えたレプリケーション コントローラー設計上の相互作用です。 レプリケーション コントローラーのより高度なレプリケート選択機能により、レプリケーション コントローラーが置き換えられます。
デプロイメント
デプロイメントは、直接作成および管理できる一般的なワークロードです。 導入では、ライフサイクル管理の機能を追加する構成要素としてレプリケーション セットを使用します。
ステートフルセット
これは、順序付けと独自性を提供する特殊なポッド コントロールです。 これは主に、展開順序、安定したネットワーク、永続データに関して特に必要な、きめ細かい制御を行うために使用されます。
デーモンセット
デーモン セットは、クラスター内のすべてのノードでポッドのコピーを実行する、ポッド コントローラーの別の特殊な形式です。このタイプのポッド コントローラーは、メンテナンスを実行でき、ノード自体にサービスを提供できるポッドをデプロイするための効果的な方法です。
KubernetesとDockerSwarm
以下に重要な違いを示します。 KubernetesとDocker.
DockerSwarm | Kubernetes | |
---|---|---|
スケーリング | 自動スケーリングなし | 自動スケーリング |
ロードバランシング | 自動ロードバランシングを実行します | 負荷分散設定を手動で構成する |
ストレージボリュームの共有 | 他のコンテナとストレージボリュームを共有します | 同じポッド内の複数のコンテナ間でストレージボリュームを共有します |
ログインおよび監視ツールの使用 | 3を使用rd ELKのようなパーティーツール | ログ記録と監視のための組み込みツールを提供します。 |
インストール | 簡単&早い | 複雑で時間がかかる |
GUI | GUIは利用できません | GUIが利用可能です |
スケーラビリティ | スケールアップはK8Sよりも速いが、クラスターの強度はそれほど強力ではない | スケールアップはSwarmに比べて遅いが、より強力なクラスタ状態を保証する。負荷分散には手動のサービス構成が必要 |
ロードバランシング | 組み込みの負荷分散技術を提供します | 更新中にサービスを維持するためのプロセスのスケジューリング |
更新とロールバック データ量のログと監視 | 段階的な更新とサービスの健全性の監視。 | 同じポッド内のコンテナとのみ共有される 組み込みのロギングおよびモニタリング ツール。 |
Kubernetes の利点
- ポッドを使用したサービスの簡単な編成
- Google によって開発され、長年にわたる貴重な業界経験が活かされています。
- コンテナオーケストレーションツールの中で最大のコミュニティ
- オンプレミス、SAN、パブリック クラウドなど、さまざまなストレージ オプションを提供
- 不変インフラストラクチャの原則を遵守します
- Kubernetes はオンプレミスのベアメタル、OpenStack、パブリック クラウドで実行可能 グーグル, Azure, AWS, etc.
- Kubernetes がロード バランサーやストレージなどの抽象化を提供する場合を除き、ベンダー固有の API またはサービスを使用できるため、ベンダー ロックの問題を回避できます。
- kubernetes を使用したコンテナ化により、パッケージ ソフトウェアがこれらの目標を達成できるようになります。 これにより、必要なアプリケーションをダウンタイムなしでリリースおよび更新できるようになります。
- Kubernetes を使用すると、コンテナ化されたアプリケーションをいつでもどこでも実行できるようになり、必要なリソースやツールを見つけるのにも役立ちます。
Kubernetesの欠点
- Kubenetes ダッシュボードが本来のほど役に立たない
- Kubernetes は少し複雑で、すべての開発がローカルで行われる環境では不要です。
- セキュリティはあまり効果的ではありません。
まとめ
- コンテナは、組織がサービスを中断することなくメンテナンスと更新を実行できるように支援します。
- Kubernetes は、Google プラットフォームで開発されたコンテナ管理システムの一例です。
- Kubernetesを使用する最大の利点は、オンプレミスのOpenStack、パブリッククラウドのGoogle、 Azure、AWSなど
- Kubernetes は、自動化されたスケジューリング機能と自己修復機能を提供します。
- Cluster、マスター、ノード、名前空間は Kubernetes の重要な基本です
- マスターノードとワークノードは、Kubernetes アーキテクチャの重要なコンポーネントです。
- レプリケーション コントローラー、レプリケーション セット、デプロイメント、ステートフル セット、デーモン セットは、Kubernetes で使用されるその他の重要な用語です。
- Docker swarm では自動スケーリングが許可されていませんが、Kubernetes では自動スケーリングが許可されています。
- Kubenetes の最大の欠点は、ダッシュボードがあまり役に立たず効果的ではないことです。