ログイン / 登録 アカウント

コンテナ

Kubernetes の基本を学ぶ

Jump to section

コンテナを使うと、開発者はアプリケーションに専念し、運用チームはインフラストラクチャに集中できます。コンテナ・オーケストレーションとは、企業内のこのようなデプロイメントを管理する方法です。

Kubernetes はオープンソースのコンテナ・オーケストレーション・プラットフォームで、コンテナ化アプリケーションのデプロイ、管理、スケーリングに伴う多くの手動プロセスを自動化します。

Kubernetes は、コンテナ化アプリケーション、レガシーアプリケーション、クラウドネイティブ・アプリケーションだけでなく、プライベートクラウドや、Amazon Web Services (AWS)、Google CloudIBM CloudMicrosoft Azure などの主要なパブリッククラウド・プロバイダーを含めた各環境にわたり、マイクロサービスにリファクタリングされたアプリケーションの大規模なデリバリーと管理にも役立ちます。

 

Kubernetes アーキテクチャ

Kubernetes は、物理または仮想マシンからなるクラスタ上でコンテナをスケジューリングして実行するためのプラットフォームを提供します。Kubernetes アーキテクチャはクラスタを、互いに連携するコンポーネントに分割し、定義されたクラスタの状態を維持します。

Kubernetes クラスタは、コンテナ化されたアプリケーションを実行するためのノードマシン群です。Kubernetes クラスタは 2 つのパーツとして視覚化できます。コントロールプレーンと、コンピュートマシンつまりノードです。各ノードは独立した Linux® 環境であり、物理マシンでも仮想マシンでもかまいません。各ノードは、コンテナで構成される Pod を実行します。

Kubernetes API (アプリケーション・プログラミング・インタフェース) は Kubernetes コントロールプレーンのフロントエンドであり、ユーザーはこれを使用して Kubernetes クラスタと対話します。API サーバーは要求が有効かどうかを判断して処理します。

Kubernetes API は Kubernetes クラスタの管理、作成、構成に使用されるインタフェースで、ユーザーや外部コンポーネント、そしてクラスタの各部分が相互に通信する方法です。

この Kubernetes 関する簡単なチュートリアルでは、クラスタを作成してアプリケーションをデプロイする方法をご紹介しています。 

 

Kubernetes クラスタの他の要素

ノード:
要求に基づいてコントロールプレーンによって割り当てられたタスクを実行するマシン。

ポッド:
1 つのノードにデプロイされた、1 つ以上のコンテナのセット。ポッドは、最小かつ最も単純な Kubernetes オブジェクトです。

サービス:
一連のポッドで実行されているアプリケーションをネットワークサービスとして公開する方法。ポッドから作業の定義を分離します。

Kubectl:
Kubernetes クラスタを管理できるコマンドライン・インタフェース。初心者向けの基本的な kubectl コマンドと Helm コマンドについてはこちらをご覧ください。

kubelet:
コントロールプレーンと通信する各ノード内にある小さなアプリケーション。kubelet は、コンテナがポッドで実行されていることを確認します。

Kubernetes を使い始める準備ができている場合は、オープンソースツールの Minikube でローカルの Kubernetes クラスタを設定することが可能です。これにより、ノートパソコンを使って Kubernetes を試してみることができます。

 

Kubernetes の機能 

Kubernetes は、定義された状態と実際の状態に基づいて機能します。Kubernetes オブジェクトはクラスタの状態を表し、ワークロードをどのように見せたいかを Kubernetes に伝えます。

オブジェクトが作成および定義されると、Kubernetes はそのオブジェクトが常に存在することを確認します。 

コントローラーは、Kubernetes オブジェクトの状態をアクティブに管理し、クラスタを現在の状態から望ましい状態に移行する変更を行います。 

開発者やシステム管理者は、Kubernetes API に送信する YAML または JSON ファイルを使用して、定義された状態を指定します。Kubernetes はコントローラーを使用して、新しく定義された状態とクラスタ内の実際の状態の違いを分析します。

Kubernetes クラスタの望ましい状態は、どのアプリケーションまたは他のどのワークロードを実行する必要があるか、どのコンテナイメージを使用するか、どのリソースを利用できるようにするべきかといった構成の詳細を定義します。

構成データとクラスタの状態に関する情報は、key-value ストアデータベースである etcd 内にあります。etcd は、フォールトトレラントで分散されており、クラスタに関する信頼できる基本的な情報源となるように設計されています。

Kubernetes は、自動的にクラスタを管理して望ましい状態に一致させます。コントローラーは通常、API サーバーにメッセージを送信して必要な変更を行うことでこれを実行します。一部の Kubernetes リソースには組み込みコントローラーがあります。

Kubernetes が望ましい状態を管理する方法の例として、望ましい状態を「3」に設定してアプリケーションをデプロイするとします。この設定は、アプリケーションの 3 つのレプリカが実行されている必要があることを表します。

これらのコンテナの 1 つがクラッシュした場合、Kubernetes のレプリカセットは、実行されているレプリカが 2 つだけだということを認識し、レプリカを 1 つ追加して望ましい状態を保持します。

レプリカセットは、指定された数のポッドが常に確実に実行されるようにするコントローラーです。

Kubernetes デプロイメントは、レプリカセットの管理に推奨される手法であり、ポッドに宣言型の更新を加えるので、手動でそれらを管理する必要はありません。 

Kubernetes で自動スケーリングを使用して、ユーザーの需要に基づいてサービスのスケールを管理することもできます。アプリケーションまたはサービスの望ましい状態を指定するとき、需要が増加した場合は追加のポッドを使用可能にするようコントローラーに指示することもできます。

たとえば、忙しい時間帯に、アプリケーションの望ましい状態が、通常は 3 つのレプリカであるのに対して 10 に増える場合があります。

 

Kubernetes デプロイメント

Kubernetes デプロイメントとは、アプリケーションに宣言的アップデートを提供する、Kubernetes でのリソースオブジェクトです。

デプロイメントによって、アプリケーションのライフサイクルを記述できます。たとえば、アプリケーションに使用するイメージ、配置する Pod の数、Pod をアップデートする方法などを記述できます。 

コンテナ化アプリケーションのアップデートを手作業で行うと、時間と手間がかかりがちです。Kubernetes デプロイメントはこのプロセスを自動化し、繰り返し利用可能にします。 

デプロイメントはすべて Kubernetes バックエンドで管理され、アップデートプロセス全体はサーバー側で実行され、クライアントとのやり取りはありません。

Kubernetes デプロイメント・オブジェクトでは、以下のことができます。

  • レプリカセットまたは Pod のデプロイ
  • Pod とレプリカセットのアップデート
  • デプロイメントの前のバージョンへのロールバック
  • デプロイメントのスケーリング
  • デプロイメントの一時停止または続行

 

Kubernetes パターン

Kubernetes パターンは、コンテナベースのアプリケーションおよびサービス向けの設計パターンです。  

Kubernetes はクラウドネイティブ・アプリケーションの作成に役立ち、アプリケーション・プログラミング・インタフェース (API) のライブラリと、アプリケーションをビルドするためのツールを提供します。 

しかし、これらの機能を使用してビジネスニーズを満たし、目標を達成するための完全なシステムを構築する方法についての開発者やアーキテクト向けガイドラインが、Kubernetes では提供されていません。 

パターンとは、アーキテクチャを再利用する方法です。アーキテクチャをすべて自作するのではなく、既存の Kubernetes パターンを使用できるので、機能が想定どおりに動作することも保証されます。

パターンは Kubernetes 開発者が必要とするツールであり、システムの構築方法を示します。

 

Kubernetes Operators 

Kubernetes Operator は、Kubernetes アプリケーションをパッケージ、デプロイ、管理する手段です。Kubernetes アプリケーションは Kubernetes にデプロイされ、Kubernetes API と kubectl ツールを使用して管理されます。

Kubernetes Operator は、Kubernetes API の機能を拡張したアプリケーション固有のコントローラーで、Kubernetes ユーザーに代わって複雑なアプリケーションのインスタンスを作成、設定、管理します。

Operator SDK を使用して、10 分で Kubernetes Operator を構築する方法を学びましょう。

Kubernetes のリソースとコントローラーの基本コンセプトをベースに構築されていますが、ドメインまたはアプリケーション固有の知識を含み、管理対象のソフトウェアのライフサイクル全体を自動化します。

Kubernetes Operator の詳細と、それがなぜ重要なのかを知りたい方のために、簡単な説明をこちらでご紹介しています。 

Operator を使ってコードを作成し、Kubernetes が提供する基本的な自動化機能では対応していないタスクを自動化できます。DevOps またはサイト信頼性エンジニアリング (SRE) アプローチに従うチームについては、Operator は SRE プラクティスを Kubernetes に取り入れるために開発されました。 

Kubernetes Operator の動作を実例を交えて説明し、Operator Framework とソフトウェア開発キットで Operator を構築する方法を紹介します。

 

Kubernetes で DevOps をサポートする

DevOps は日常的な運用タスクを自動化し、アプリケーションのライフサイクルの環境を標準化します。

コンテナは、開発、デリバリー、自動化のための統合環境をサポートし、開発、テスト、本番の各環境間でのアプリケーションの移動を容易にします。

DevOps 実装による主な成果は、継続的インテグレーションと継続的デプロイパイプライン (CI/CD) です。CI/CD によって、アプリケーションの顧客への提供頻度を増し、手作業を最小化しながらソフトウェア品質を検証できるようになります。

DevOps アプローチとともに Kubernetes デプロイメントおよびオペレーターを使用して Kubernetes でコンテナのライフサイクルを管理すると、CI/CD パイプラインをサポートするためのソフトウェア開発と IT 運用を連携できます。

 

Kubernetes のトレーニングを受ける

Deploying Containerized Applications Tech Overview 

短時間の講義と詳細なデモンストレーションを集めたこのオンデマンドシリーズでは、Docker、Kubernetes、および Red Hat® OpenShift® Container Platform を使用した Linux コンテナやコンテナ・オーケストレーション技術についての基礎を説明します。

 

Red Hat OpenShift Administration 

このコースでは、Red Hat OpenShift Container Platform をインストールして管理する方法を習得できます。この実践的なラボベースのコースでは、OpenShift クラスタをインストール、設定、管理する方法を説明し、サンプルアプリケーションをデプロイすることで、開発者がプラットフォームを使用する方法の理解を深めます。

 

Introduction to OpenShift Applications

このコースは、Red Hat OpenShift アプリケーションのビルド、デプロイ、スケーリング、およびトラブルシューティングのための開発者向け入門コースです。OpenShift と Kubernetes が広く導入されるようになり、開発者には、コンテナ化されたアプリケーション・プラットフォームでアプリケーションを開発、ビルド、デプロイする方法を理解することがますます求められています。

 

エンタープライズ向け Kubernetes

Red Hat OpenShift は、企業向けの Kubernetes です。Kubernetes を企業向けに強化するためのさまざまなテクノロジーを提供します。これには、レジストリ、ネットワーキング、テレメトリー、セキュリティ、自動化、サービスが含まれます。

Red Hat OpenShift を活用することで、開発者はコンテナ化された新しいアプリを作り、ホストし、クラウドでデプロイできるようになります。さらに、スケーラビリティ、制御性、オーケストレーションを提供することで、優れたアイデアが迅速かつ簡単にビジネスにつながるのを助けます。

無料の 60 日評価版で Red Hat OpenShift を使用し、コンテナ運用の自動化を試してみることができます。

Kubernetes を使い始めるために必要なツール

Red Hat OpenShift product logo

エンタープライズ向け Kubernetes によって、場所や規模を問わず、コンテナを作成、デプロイ、管理できます。

セキュリティポリシーを組み込んだ単一のコンソールで、Kubernetes クラスタとアプリケーションを制御します。 

Kubernetes についてさらに詳しく知る