Kubernetes の学習を開始する


GKE はオープンソースのコンテナ オーケストレーション プラットフォームである Kubernetes をベースにしています。このサイトのドキュメントの多くは、Kubernetes の基本的なコンセプトと用語をすでに理解していることを前提としています。まだ Kubernetes に慣れていない場合は、このページで Kubernetes の基本を確認し、おすすめの書籍へのリンクをご確認ください。

主なコンセプト

GKE ドキュメント全体で使用される主なコンセプトを次に示します。これは Kubernetes のコンセプトの網羅的なリストではありません。Kubernetes のドキュメントと推奨されるドキュメントで提供されているトピックで、さらに多くのコンセプトを確認できます。

ノードとクラスタ

すべての Kubernetes ワークロードはノードで実行されます。GKE では、ノードは Compute Engine 仮想マシン(VM)です。その他の Kubernetes プラットフォームでは、ノードは物理マシンまたは仮想マシンになります。各ノードは Kubernetes コントロール プレーンによって管理されます。ノードには、Pod の実行に必要なすべてのコンポーネントが含まれています。クラスタとは、1 つのエンティティとしてまとめて処理できる一連のノードのことで、コンテナ化されたアプリケーションをデプロイする場所になります。

詳細については、Kubernetes のドキュメントをご覧ください。

Namespace

Kubernetes Namespace は、単一クラスタでワークロードを実行する複数のアプリケーション チームがある場合など、クラスタ内の Pod や Service などのリソースをさらにグループ化して選択するためのメカニズムを提供します。

詳細については、Kubernetes のドキュメントをご覧ください。

Pod

Kubernetes では、コンテナ化されたアプリケーションは Pod 内で実行されます。Pod は、Kubernetes で作成して管理できる、デプロイ可能なコンピューティングの最小単位です。Pod は、1 つ以上のコンテナを収容するものです。Pod で複数のコンテナ(たとえば、アプリケーション サーバーとプロキシ サーバー)が実行される場合、コンテナは単一のエンティティとして管理され、Pod のリソースを共有します。

詳細については、Kubernetes のドキュメントをご覧ください。

コントローラ

Kubernetes コントローラは、指定した望ましい状態(たとえば「このクラスタでこの Pod を 3 つ実行し、各 Pod にこのコンテナを配置する」など)に基づいて、クラスタとワークロードの状態を追跡して管理します。コントローラによって、次のような異なる Kubernetes リソースタイプが追跡されます。

  • Deployment: Deployment は、レプリカと呼ばれる 1 つ以上の同一の Pod を表す Kubernetes オブジェクトです。Deployment は、クラスタのノード間で分散された Pod の複数のレプリカを実行します。Deployment は、失敗した Pod や応答しなくなった Pod を自動的に置き換えます。
  • StatefulSet: StatefulSet は Deployment に似ていますが、各 Pod に一意の永続 ID を保持します。StatefulSet は、永続状態(ステートフル アプリケーション)を使用するアプリケーションで役立ちます。
  • DaemonSet: Kubernetes の DaemonSet を使用すると、一部またはすべてのノードにデフォルトの Pod を追加できます。多くの場合、これらはワークロードの「ヘルパー」サービスです(ログ収集デーモンやモニタリング デーモンなど)。
  • ReplicaSet: ReplicaSet は、同一の Pod のセットです。ReplicaSet は通常、Deployment の一部として管理されます。

詳細については、Kubernetes のドキュメントをご覧ください。

Kubernetes Service

デフォルトでは、Pod を実行するクラスタノードを制御できないため、Pod には安定した IP アドレスがありません。Kubernetes で実行されているアプリケーションの IP アドレスを取得するには、Pod の上に Kubernetes Service と呼ばれるネットワーク抽象化を定義する必要があります。Kubernetes Service は、一連の Pod に安定したネットワーク エンドポイントを提供します。Service のタイプには、クラスタ外からアプリケーションにアクセスできるように外部 IP アドレスを公開する LoadBalancer Service などがあります。

Kubernetes には、内部アドレス解決用の組み込み DNS システムもあります。これは、DNS 名(helloserver.default.cluster.local など)を Service に割り当てます。これにより、クラスタ内の Pod が安定したアドレスでクラスタ内の他の Pod にアクセスできます。この DNS 名は、Cloud Shell などクラスタの外部からは使用できません。

詳細については、Kubernetes のドキュメントをご覧ください。

ストレージ

アプリケーションが Pod の存続期間を超えて存在するデータを保存する必要がある場合(ステートフル アプリケーションの場合)、Kubernetes の PersistentVolume オブジェクトを使用してこのストレージをプロビジョニングできます。GKE では、PersistentVolume ストレージは Compute Engine ディスクによってバックアップされます。エフェメラル ストレージを使用することもできます。エフェメラル ストレージは、対応する Pod が終了すると破棄されます。

詳細については、Kubernetes のドキュメントをご覧ください。

Kubernetes コントロール プレーン

Kubernetes のコントロール プレーンは、クラスタの全体的な状態を管理する一連のシステム コンポーネントです。これには、kubectl などのツールを使用してクラスタとアプリケーションを操作できる Kubernetes API サーバー、使用可能なノードで Pod をスケジュールするスケジューラ、クラスタの状態を追跡して管理するコントローラが含まれます。GKE では、コントロール プレーンは Google Cloud によって提供および管理されます。

詳細については、Kubernetes のドキュメントをご覧ください。

ロールベース アクセス制御(RBAC)

Kubernetes には、クラスタとそのリソースへのアクセスの認可ポリシーを作成できるロールベース アクセス制御(RBAC)メカニズムが用意されています。GKE を使用する場合は、Kubernetes RBAC と Google Cloud の Identity and Access Management を組み合わせてアプリケーションを保護することがよくあります。

詳細については、Kubernetes のドキュメントをご覧ください。

このセクションでは、Kubernetes の詳細を確認するためのおすすめのリソースへのリンクを示します。特に、Kubernetes の公式ウェブサイトである Kubernetes.io には、Kubernetes に関する最新の信頼できる資料が多数あります。

ガイドとチュートリアル

リファレンス ドキュメント

  • Kubernetes 用語集: Kubernetes 用語の包括的で標準化されたリスト。Kubernetes の用語がわからない場合は、こちらで調べることができます。

動画

コミック

  • Kubernetes コミック: 知恵の女神(とコンテナ化されたアプリケーション)の助けを借りて、Kubernetes の歴史と、継続的インテグレーションとデリバリーに Kubernetes を使用する方法を学びます。