初心者向けの Kubernetes チュートリアル
⚡ スマートサマリー
Kubernetesは、オープンソースのコンテナ管理システムで、 Google 物理サーバー、仮想サーバー、クラウドサーバーのクラスター全体にわたってコンテナ化されたアプリケーションのデプロイ、スケーリング、運用を自動化し、自己修復機能、自動ロールアウト、負荷分散、および信頼性の高いアプリケーション配信のための一貫性のある環境を提供します。

この Kubernetes チュートリアルを開始する前に、次のことを学習しましょう。
Kubernetesとは何ですか?
Kubernetes は、コンテナ管理システムとして開発されました。 Google プラットフォーム。Kubernetesは、物理環境、仮想環境、クラウド環境など、さまざまな環境におけるコンテナ化されたアプリケーションの管理を支援します。 Google Kubernetesは、数百から数千台の個々のサーバーからなるクラスター上で動作する複雑なアプリケーションを一貫して提供するための、非常に柔軟性の高いコンテナツールです。
なぜコンテナが必要なのでしょうか?
今日のインターネット ユーザーはダウンタイムを決して受け入れません。 したがって、開発者はサービスを中断せずにメンテナンスと更新を実行する方法を見つける必要があります。
したがって、コンテナとは隔離された環境です。アプリケーションの実行に必要なものがすべて含まれています。これにより、開発者はアプリケーションの編集とデプロイを容易に行うことができます。さらに、コンテナ化はWebアプリケーションのパッケージ化、デプロイ、更新において推奨される方法となっています。
Kubernetes ではどのようなタスクが実行されますか?
Kubernetesは分散システムに使用されるLinuxカーネルです。tracノード(サーバー)の基盤となるハードウェアに依存し、共有リソースプールを利用するアプリケーションに対して一貫したインターフェースを提供する。
Kubernetes を使用する理由
Kubernetes は、クラウド アプリケーションとマイクロサービスのリソース割り当てとトラフィック管理を制御するのに役立ちます。 また、サービス指向インフラストラクチャのさまざまな側面を簡素化するのにも役立ちます。 Kubernetes を使用すると、コンテナ化されたアプリケーションをいつどこで実行するかを保証し、使用するリソースやツールを見つけるのに役立ちます。
Kubernetesの機能
Kubernetes の重要な機能は次のとおりです。
- 自動スケジューリング
- 自己修復機能
- 自動化されたロールアウトとロールバック
- 水平スケーリングと負荷分散
- 開発、テスト、実稼働のための環境の一貫性を提供します
- インフラストラクチャは各コンポーネントと疎結合されており、個別のユニットとして機能します
- より高密度のリソース使用率を提供します
- エンタープライズ対応の機能を提供
- アプリケーション中心の管理
- 自動スケーラブルなインフラストラクチャ
- 予測可能なインフラストラクチャを作成できます
Kubernetesの基本
この Kubernetes チュートリアルでは、Kubernetes の重要な基本について学びます。
Cluster
これは、利用可能なリソースを集約するのに役立つホスト (サーバー) のコレクションです。 これには、使用可能なプール内の RAM、CPU、RAM、ディスク、およびそれらのデバイスが含まれます。
Master
マスターは、Kubernetes のコントロール パネルを構成するコンポーネントのコレクションです。これらのコンポーネントは、すべてのクラスターの決定に使用されます。これには、クラスター イベントのスケジュールと応答の両方が含まれます。
Node
これは、物理ホスト上で実行できる単一のホストです。 バーチャルマシンノードは、クラスターの一部とみなされる kube-proxy、minikube、および kubelet の両方を実行する必要があります。
名前空間
これは論理的なクラスタまたは環境です。これは、SCOに使用される広く使用されている方法です。ping クラスターへのアクセスまたは分割。
Kubernetes Archi構造
以下は、Kubernetes の詳細なアーキテクチャ図です。

マスターノード
マスター ノードは、Kubernetes クラスターの管理を担当する最初の最も重要なコンポーネントです。これは、あらゆる種類の管理タスクのエントリ ポイントです。フォールト トレランスをチェックするために、クラスター内に複数のマスター ノードが存在する場合があります。
マスター ノードには、API サーバー、コントローラー マネージャー、スケジューラー、ETCD などのさまざまなコンポーネントがあります。 全部見てみましょう。
APIサーバー: API サーバーは、クラスターの制御に使用されるすべての REST コマンドのエントリ ポイントとして機能します。
スケジューラ
スケジューラはスレーブ ノードにタスクをスケジュールします。 すべてのスレーブ ノードのリソース使用状況情報が保存されます。 ワークロードを分散する責任があります。
それはまたあなたに役立ちます tracクラスタノード上でワークロードがどのように使用されているかを把握します。これにより、ワークロードを受け入れ可能なリソースにワークロードを配置するのに役立ちます。
その他
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、パブリック クラウドで実行可能 Google, Azure, AWS, etc.
- Kubernetes が絶対的な制限を提供している場合を除き、ベンダー固有の API やサービスを使用できるため、ベンダーロックの問題を回避するのに役立ちます。tracロードバランサーやストレージなど。
- kubernetes を使用したコンテナ化により、パッケージ ソフトウェアがこれらの目標を達成できるようになります。 これにより、必要なアプリケーションをダウンタイムなしでリリースおよび更新できるようになります。
- Kubernetes を使用すると、コンテナ化されたアプリケーションをいつでもどこでも実行できるようになり、必要なリソースやツールを見つけるのにも役立ちます。
Kubernetesの欠点
- Kubenetes ダッシュボードが本来のほど役に立たない
- Kubernetes は少し複雑で、すべての開発がローカルで行われる環境では不要です。
- セキュリティはあまり効果的ではありません。
