Kubernetes Managed Service Column <Kubernetes運用コラム>

Kubernetesのオブジェクトとは?種類やリソースとの違いも

Category: 入門編

2024.01.30

オブジェクトの定義や安定したクラスタ管理のために表現できることを解説

Kubernetes とは、コンテナの運用管理や設定、スケーリングなどを効率的に行うためのプラットフォームです。

Kubernetes の構成要素であるオブジェクトは、クラスタの状態を表現するためのエンティティのことを指します。オブジェクトにワークロードの望ましい状態を記述することで、 Kubernetes はその状態を作成しようと働きかけます。

本記事では Kubernetes オブジェクトの基本的な概要から種類、記述方法まで詳しく解説します。

1. Kubernetes オブジェクトとは

Kubernetes オブジェクトとは、クラスタ(コンテナ化したアプリケーションを実行するためのノードの集合体)の状態を表現するための永続的なエンティティです。 Kubernetes ワークロードの望ましい状態を、開発者あるいは管理者が定義して作成します。

具体的にオブジェクトでは次のような表現ができます。

  • どのようなアプリケーションが稼働しているか、それらはどのノード上で稼働しているか
  • アプリケーションから利用できるリソース
  • アプリケーションのポリシー(アップグレード、再起動、障害耐性など)

一度オブジェクトが作成されると、 Kubernetes は常にその定義された状態と現在の状態の差分を埋めて、望ましい状態が存在し続けるように動きます。

オブジェクトにより Kubernetes に対して理想的な状態を伝えられるため、効率的で安定したクラスタ管理を実現することが可能です。

2. Kubernetes オブジェクトの種類一覧

オブジェクトにはさまざまな種類がありますが、ここでは代表的なものについて解説します。

Pod

Kubernetes においてデプロイ可能な最小単位です。 Pod 内には 1 つ以上のコンテナが含まれ、同じ Pod 内のコンテナはストレージやネットワークリソースを共有します。 Pod はアプリケーションの論理的な単位として機能し、 Kubernetes ではコンテナではなく Pod 単位で制御を行います。

ReplicaSet

Pod を管理するためのオブジェクトです。 Kubernetes では Pod を単独で起動することはほとんどなく、複数の Pod をグループ化した ReplicaSet などの管理用オブジェクトを通して Pod を利用します。

ReplicaSet はクラスタ内で指定した Pod の数を一定に保つ役割があり、何らかの理由で Pod が消えた場合には新たな Pod を作成します。コンテナを冗長化したいときに使われることが多いです。

Deployment

ReplicaSet を管理し、アプリケーションのデプロイと更新を効果的に管理するためのオブジェクトです。 Pod の変更を検知した場合、新たな ReplicaSet を作成して新しいコンテナに置き換えます。

反対に新たな Pod で問題が生じた際は以前の状態に戻すことも可能です。前者をローリングアップデート、後者をロールバックといいます。Kubernetes でのコンテナ管理は Pod ・ ReplicaSet ・ Deployment の 3 層構造となっています。

<コンテナ管理の仕組み>

コンテナ管理の仕組み

Service

複数の Pod をまとめて論理的なグループとし、それにアクセスするポリシーを定義するオブジェクトです。これにより外部または内部の他の Pod からのアクセスを制御します。またクラスタ内のロードバランサーサービスと連携させることも多く、複数の Pod に対するトラフィックを均等に分散します。

ConfigMap

アプリケーションの構成情報を格納するためのオブジェクトです。設定ファイル、環境変数、コマンドライン引数などの構成情報を暗号化されていない Key-Value の形式で保存し、 Pod やコンテナがそれらを参照できるようにします。

Secret

パスワードやアクセスキーなどの Kubernetes 環境内で使用される機密情報を保存するためのオブジェクトです。暗号化できるため、情報漏洩のリスクを低減させることが可能です。

Namespace

クラスタ内の物理的なリソースを論理的にグループ化するためのオブジェクトです。同じクラスタ上でも Namespace ごとにリソースのクオータを設定したりアクセスを制御したりできるため、大規模な環境での Kubernetes の運用においてよく用いられます。

Persistent Volume

クラスタ内での永続的なストレージリソースを定義するオブジェクトです。物理的なストレージやクラウドプロバイダが提供するストレージサービスなどを指定します。

3. Kubernetes オブジェクトの記述方法

Kubernetes オブジェクトを操作するには Kubernetes API を使う必要があります。 Kubernetes が提供するコマンドラインツールである kubectl を使うか、クライアントライブラリを利用して直接 Kubernetes API を利用することも可能です。

オブジェクトの spec と status

オブジェクトは一般的に設定を管理する spec (仕様)と status (状態)という2つのフィールドをもっており、これらは入れ子になっています。それぞれの役割は次のとおりです。

  • spec:望ましい状態を表現するためにオブジェクトにもたせたい特徴を記述する
  • status:オブジェクトの現在の状態を示し、 Kubernetes システムとそのコンポーネントにより提供・更新される

Kubernetes コントロールプレーンは、 spec に記載された望ましい状態と status に更新される現在の状態が一致するように管理を行います。

オブジェクトの必須フィールド

オブジェクトを作成するには、以下のフィールドの記載が必須となります。

  • apiVersion:使用する Kubernetes API のバージョン
  • kind:作成するオブジェクトの種類
  • metadata:一意にオブジェクトを特定するための情報( name 、 UID 、 namespace など)
  • spec:オブジェクトの望ましい状態

書き方の例としては以下のとおりです。

Kubernetes オブジェクトの記述方法

図版出典:kubernetes公式サイト

4. まとめ

Kubernetes オブジェクトとは、クラスタの状態を表現するためのエンティティです。ワークロードの望ましい状態を開発者や管理者が定義して記述します。オブジェクトにはさまざまな種類がありますが、理解することで効率的で安定したクラスタ管理を実現できます。 Kubernetes を扱う開発者・管理者の方は、ぜひオブジェクトを活用してみてください。

Kubernetes の運用をサポートしてほしい

Kubernetes運用サポートサービス

Kubernetes運用サポートサービス

クラウドベンダが提供する Kubernetes 環境の運用をサポートします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Kubernetes運用サポートサービスカタログ

    サービスの詳細をご覧いただけます。

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php