スポンサーリンク

【Kubernetes】初心者が最初に覚えておくべき基本概念・用語一覧!

【Kubernetes】初心者が最初に覚えておくべき基本概念・用語一覧!

Kubernetes(クバネティス)を学び始めると、Pod、Node、Deployment、Service、Namespaceなど、さまざまな専門用語が登場します。

それぞれの用語の意味を理解していないと、Kubernetesの設定ファイルやkubectlコマンドを見ても、何を操作しているのか分かりにくくなってしまいます。

本記事では、Kubernetes初心者が最初に覚えておきたい基本的な概念や用語を一覧で紹介します。

Kubernetesの全体像から、PodやDeploymentなどの重要なリソース、ネットワークやストレージに関する用語まで、初心者にも分かりやすく解説します。

Kubernetesとは?

Kubernetes(K8s)とは、コンテナ化されたアプリケーションのデプロイや管理、スケーリングなどを自動化するためのコンテナオーケストレーションツールです。

例えば、Dockerで作成したコンテナを複数のサーバーで動かす場合、コンテナの起動や停止、障害発生時の復旧などを管理する必要があります。

Kubernetesを利用すると、これらの作業を自動化できます。

主な機能は以下のとおりです。

  • コンテナの自動起動・管理
  • コンテナの障害検知と再起動
  • アプリケーションのスケーリング
  • コンテナへのネットワーク接続
  • アプリケーションのローリングアップデート

Kubernetesは、複数のコンテナを効率的に管理したい場合に役立つ仕組みです。

Kubernetesの基本的な概念・用語一覧

まずは、Kubernetesを理解するうえで重要な基本用語を紹介します。

用語概要
ClusterKubernetesが管理するサーバー群
Nodeコンテナを実行するサーバー
Podコンテナを実行する最小単位
Containerアプリケーションの実行環境
DeploymentPodの数や状態を管理するリソース
ReplicaSet指定された数のPodを維持するリソース
ServicePodへの安定したアクセスを提供するリソース
NamespaceKubernetes内のリソースを論理的に分ける仕組み
ConfigMapアプリケーションの設定情報を管理するリソース
Secretパスワードなどの機密情報を管理するリソース
VolumePodから利用するストレージ
PersistentVolumeクラスタ内で利用する永続ストレージ
PersistentVolumeClaim永続ストレージの利用を要求するリソース
Ingress外部からHTTP・HTTPSでアクセスするためのルール

それぞれの意味を詳しく見ていきましょう。

1. Cluster(クラスター)

Cluster(クラスター)とは、Kubernetesによって管理されるサーバー群のことです。

Kubernetesでは、複数のサーバーをまとめて1つのクラスターとして管理できます。

クラスターは、主に以下の2つの要素で構成されます。

  • Control Plane(コントロールプレーン)
  • Worker Node(ワーカーノード)

Control Planeはクラスター全体を管理し、Worker Nodeは実際にアプリケーションのコンテナを実行します。

Kubernetesを理解するうえで、最初に覚えておきたい基本概念です。

2. Node(ノード)

Node(ノード)とは、Kubernetesのクラスターを構成するサーバーのことです。

物理サーバーや仮想マシンなどがNodeとして利用されます。

Nodeには、アプリケーションを実行するためのPodが配置されます。

Nodeには主に以下の2種類があります。

用語役割
Control Plane Nodeクラスター全体を管理する
Worker NodePodを実行する

Nodeの状態やCPU・メモリの使用状況などは、kubectlコマンドで確認できます。

kubectl get nodes

Nodeの詳細情報を確認する場合は、以下のコマンドを実行します。

kubectl describe node

3. Pod(ポッド)

Pod(ポッド)とは、Kubernetesでコンテナを実行するための最小単位です。

Kubernetesでは、コンテナを直接管理するのではなく、Podという単位で管理します。

1つのPodには1つ以上のコンテナを配置できます。

ただし、一般的には1つのPodに1つのメインコンテナを配置する構成がよく使われます。

複数のコンテナを配置する場合は、同じPod内でネットワークやストレージなどのリソースを共有できます。

Podの主な特徴は以下のとおりです。

  • コンテナを実行する最小単位
  • 1つ以上のコンテナを配置できる
  • Pod内のコンテナはネットワークを共有する
  • PodにはIPアドレスが割り当てられる
  • Podは削除・再作成されることがある

Podの一覧を確認するコマンドは以下のとおりです。

kubectl get pods

Podの詳細情報を確認する場合は、以下を実行します。

kubectl describe pod

4. Container(コンテナ)

Container(コンテナ)とは、アプリケーションと実行に必要なライブラリや設定などをまとめた実行環境です。

Dockerなどを利用してコンテナイメージを作成し、そのイメージをもとにコンテナを起動します。

Kubernetesでは、Podの中でコンテナを実行します。

例えば、Webアプリケーションを動かす場合は、以下のような構成になります。

  • Pod:Webアプリケーションを実行する単位
  • Container:実際にWebアプリケーションを動かす環境
  • Image:コンテナを作成するためのテンプレート

Dockerを学習したことがある場合は、コンテナイメージやコンテナの概念をそのまま活用できます。

5. Deployment(デプロイメント)

Deployment(デプロイメント)とは、Podの作成や更新、数の管理などを行うKubernetesのリソースです。

例えば、Webアプリケーションを3つのPodで実行したい場合、Deploymentにレプリカ数を3と指定します。

Kubernetesは指定された数のPodが実行されるように管理します。

Podに障害が発生した場合も、Deploymentが管理するReplicaSetなどの仕組みによって、必要なPod数を維持します。

Deploymentの主な機能は以下のとおりです。

  • Podの作成・管理
  • Podのレプリカ数の管理
  • ローリングアップデート
  • ロールバック

Deploymentを作成する場合は、YAMLファイルを用意して以下のコマンドを実行します。

kubectl apply -f deployment.yaml

Deploymentの一覧を確認するコマンドは以下のとおりです。

kubectl get deployments

6. ReplicaSet(レプリカセット)

ReplicaSet(レプリカセット)とは、指定された数のPodを維持するためのリソースです。

例えば、3つのPodを起動するように設定した場合、ReplicaSetは常に3つのPodが存在する状態を維持しようとします。

Podが削除されたり、障害によって停止したりした場合は、不足したPodを新しく作成します。

DeploymentとReplicaSetの関係は以下のとおりです。

  • Deployment:アプリケーションのデプロイや更新を管理する
  • ReplicaSet:指定された数のPodを維持する
  • Pod:実際にコンテナを実行する

通常はDeploymentを利用してPodを管理するため、ReplicaSetを直接操作する機会はそれほど多くありません。

7. Service(サービス)

Service(サービス)とは、Podに対して安定したネットワーク接続を提供するためのリソースです。

Podは削除・再作成されることがあり、そのたびにIPアドレスが変わる可能性があります。

そのため、PodのIPアドレスを直接指定して通信する方法は管理が難しくなります。

Serviceを利用すると、PodのIPアドレスが変わっても、安定した接続先を利用できます。

Serviceには主に以下の種類があります。

種類概要
ClusterIPクラスター内部からアクセスする
NodePortNodeのポートを利用して外部からアクセスする
LoadBalancer外部ロードバランサーを利用してアクセスする

例えば、クラスター内部でWebアプリケーションに接続したい場合はClusterIPを利用します。

Serviceの一覧を確認するコマンドは以下のとおりです。

kubectl get services

8. Namespace(ネームスペース)

Namespace(ネームスペース)とは、Kubernetesのクラスター内にあるリソースを論理的に分割するための仕組みです。

例えば、開発環境・テスト環境・本番環境のリソースを分けて管理したい場合に利用できます。

Namespaceを利用すると、同じクラスター内でも環境ごとにPodやDeploymentなどを整理できます。

Namespaceの一覧を確認するコマンドは以下のとおりです。

kubectl get namespaces

Namespaceを指定してPodを確認する場合は、以下のコマンドを実行します。

kubectl get pods -n default

なお、NodeやPersistentVolumeなど、Namespaceに属さないクラスタースコープのリソースもあります。

9. ConfigMap(コンフィグマップ)

ConfigMap(コンフィグマップ)とは、アプリケーションの設定情報を管理するためのリソースです。

例えば、アプリケーションの接続先URLや環境ごとに異なる設定値などを管理できます。

コンテナイメージに環境ごとの設定を直接埋め込む必要がなくなるため、開発環境や本番環境などで同じイメージを利用しやすくなります。

ConfigMapの一覧を確認するコマンドは以下のとおりです。

kubectl get configmaps

10. Secret(シークレット)

Secret(シークレット)とは、パスワードやAPIキー、認証情報などの機密情報を管理するためのリソースです。

ConfigMapと似ていますが、Secretは機密情報を扱うために用意されています。

例えば、データベースの接続情報やAPIキーなどを管理する場合に利用します。

Secretの一覧を確認するコマンドは以下のとおりです。

kubectl get secrets

なお、SecretのデータはデフォルトではBase64エンコードされているだけで、暗号化されているわけではありません。

本番環境で利用する場合は、保存時の暗号化やアクセス権限の制御なども重要です。

11. Volume(ボリューム)

Volume(ボリューム)とは、Pod内のコンテナから利用できるストレージのことです。

コンテナのファイルシステムは、コンテナの再作成などによってデータが失われる場合があります。

Volumeを利用すると、コンテナとは別にストレージを管理できます。

また、同じPod内にある複数のコンテナでストレージを共有することもできます。

データを長期間保存したい場合は、PersistentVolumeなどの仕組みを利用します。

12. PersistentVolume(PV)

PersistentVolume(PV)とは、Kubernetesクラスター内で利用できる永続ストレージを表すリソースです。

Podが削除・再作成されても、ストレージ上のデータを保持したい場合に利用します。

例えば、データベースのデータやアップロードされたファイルなどを保存する用途があります。

PVは、クラウドストレージやネットワークストレージなどを利用して構成できます。

13. PersistentVolumeClaim(PVC)

PersistentVolumeClaim(PVC)とは、Podなどで利用する永続ストレージを要求するためのリソースです。

PVが実際に利用できるストレージを表すのに対し、PVCは必要なストレージ容量やアクセスモードなどを指定して利用を要求します。

PVとPVCの関係は以下のとおりです。

  • PV:利用可能な永続ストレージ
  • PVC:必要なストレージを要求する仕組み
  • Pod:PVCを通じてストレージを利用する

Kubernetesでデータを永続化する場合に重要な概念です。

14. Ingress(イングレス)

Ingress(イングレス)とは、クラスター外部からHTTP・HTTPS通信でServiceにアクセスするためのルールを定義するリソースです。

例えば、Webアプリケーションに対して、ドメイン名やURLのパスに応じてアクセス先を振り分けたい場合に利用できます。

Ingressを利用するには、Ingress Controllerの導入・設定も必要です。

なお、Ingress APIは機能追加が進まない状態となっており、新しい仕組みとしてGateway APIも提供されています。

Kubernetesで覚えておきたいその他の用語

ここまで紹介した用語以外にも、Kubernetesには重要な概念があります。

最初からすべて覚える必要はありませんが、以下の用語も少しずつ理解しておくとよいでしょう。

用語概要
Control Planeクラスター全体を管理する仕組み
kube-apiserverKubernetes APIを提供するコンポーネント
etcdクラスターの状態などを保存するキーバリューストア
kube-schedulerPodを配置するNodeを決定するコンポーネント
kube-controller-manager各種コントローラーを実行するコンポーネント
kubeletNode上でPodの実行状態を管理するエージェント
Container Runtimeコンテナを実行するソフトウェア
LabelKubernetesリソースに付ける識別用の情報
SelectorLabelを条件にリソースを選択する仕組み
Probeコンテナの状態を確認する仕組み
Resource Requestsコンテナが必要とするCPU・メモリの要求量
Resource Limitsコンテナが利用できるCPU・メモリの上限
HPAPodの数を自動的に増減させる仕組み
RBACユーザーやサービスアカウントのアクセス権限を管理する仕組み

Kubernetes初心者が最初に覚えるべき用語は?

Kubernetesには多くの概念がありますが、最初からすべて覚える必要はありません。

まずは、以下の5つを優先して理解するのがおすすめです。

優先度用語覚えるポイント
1Podコンテナを実行する最小単位
2DeploymentPodの作成・更新・数を管理する
3ServicePodへの安定したアクセスを提供する
4NodePodを実行するサーバー
5Namespaceリソースを論理的に分割する

特に重要なのが、Pod・Deployment・Serviceの3つです。

この3つの関係を理解すると、Kubernetesの基本的なアプリケーション構成がイメージしやすくなります。

その後、ConfigMapやSecret、Volumeなどを学習すると、実際のアプリケーションを動かすための知識が身につきます。

まとめ

Kubernetesには、Cluster・Node・Pod・Deployment・Serviceなど、さまざまな概念や用語があります。

初心者の場合、最初からすべてを覚えようとすると難しく感じてしまいます。

まずは、以下の順番で学習するのがおすすめです。

  1. ClusterとNodeの関係を理解する
  2. PodとContainerの違いを理解する
  3. DeploymentによるPodの管理方法を理解する
  4. Serviceによるネットワーク接続を理解する
  5. NamespaceやConfigMapなどの設定管理を学ぶ

基本的な概念を理解したら、実際にkubectlコマンドを実行してPodやDeploymentなどの状態を確認してみましょう。

用語の意味だけでなく、実際に操作しながら学習することで、Kubernetesの仕組みをより深く理解できます。