オープンソース

サーバ構築のデージーネットTOP > OSS情報 > 一押しOSS > Kubernetes〜コンテナ管理ツール〜 > KubernetesのPod機能

サーバ構築のデージーネットTOP > OSS情報 > コンテナ型仮想化 > Kubernetes〜コンテナ管理ツール〜 > KubernetesのPod機能

KubernetesのPod機能

Podとは?

Podとは、KubernetesでDockerコンテナを管理するための最小単位です。Podは、複数のDockerコンテナの集合体です。Dockerコンテナを単独で管理するのではなく、グループとして管理することで、Dockerコンテナの使いにくさを解消することができます。

Podイメージ画面

KubernetesのPodの利点

例えば、LAMPアプリケーションをDockerコンテナで実現する場合を考えてみましょう。このアプリケーションの動作のためには、WebサーバとPHPプログラム、データベースサーバなどの要素が必要です。そのため、少なくとも、WebサーバとPHPプログラムのDockerコンテナと、データベースサーバのDockerコンテナの2つのDockerコンテナを作成します。そして、この2つのDockerコンテナを連携して動作させるための設定も考慮する必要があります。Dockerコンテナには、いろいろな環境ですぐにサービスを起動できる利点がありますが、こうした連携までを考慮してDockerコンテナを管理することは非常に煩雑です。

KubernetesのPod機能は、Dockerコンテナをまとめてサービス単位で管理する機能です。あらかじめPodを定義しておくことで、サービスの起動や停止をまとめて行うことができます。

KubernetesでのPod定義

KubernetesでPodを定義するためには、マニフェストというファイルを記述します。次は、ownCloudとMariaDBの2つのDockerコンテナを持つPodのマニュフェストの例です。

Podのマニュフェストの例(owncloud.yml)

apiVersion: v1
kind: Pod
metadata:
  name: owncloud-pod
spec:
  # MariaDBのデータストア
  volumes:
    - name: maria-vol
      # Podが動作するホストの/tmp/mysqlを指定
      hostPath:
        path: /tmp/mysql/
  # コンテナ設定
  containers:
    # OwnCloudのコンテナ(Apache/PHP含む)
    - name: owncloud-container
      image: owncloud
      ports:
      - containerPort: 80
    # MariaDBのコンテナ
    - name: maria-container
      image: mariadb:5.5
      ports:
      - containerPort: 3306
      # データストアを/var/lib/mysqlにマウント
      volumeMounts:
      - name: maria-vol
        mountPath: /var/lib/mysql
      # 環境変数
      env:
      - name: MYSQL_ROOT_PASSWORD
        value: example

この例では、2つのDockerコンテナの定義とMariaDBのデータストアが定義されています。このように、Podのマニュフェストには、サービスとして動作するために必要なDockerコンテナ設定をすべて記述します。

Kubernetes上でのPodの管理

Kubernetes上に動作しているPodの管理は、GUIとコマンドラインの両方で行うことができます。次は、管理GUIのPod管理画面です。

管理GUIのPod管理画面

Kubernetes上でのコマンドラインからのPodの起動

Kubernetesでは、kubectlコマンドを使って、コマンドラインからPodの制御を行うことができます。上記のマニュフェストのファイルを指定して次のように実行すると、KubernetesがPodを起動します。

# kubectl create -f owncloud.yml ⏎

Kubernetes上でのコマンドラインからのPodの確認

コマンドラインから、Kubernetes上のPodを管理することができます。次は、owncloud-podの状態の表示例です。

# kubectl describe pod owncloud-pod ⏎
Name:         owncloud-pod
(省略)
IP:           10.44.0.6
Containers:
  owncloud-container:
    Container ID:   docker://6064ef77e2b2e388b3c8e9b1edef1280b21a3c20225c7ae1da19db049574fda9
    Image:          owncloud
    Image ID:       docker-pullable://owncloud@sha256:78a1b4775ec2a661893ccc1979ceeebf5cd81a923a51c6b375cacf2d64e9840e
    Port:           80/TCP
    (省略)
  maria-container:
    Container ID:   docker://b032ef89256c1e294e23685f6e1c96e2db109d69ab1580989fc3b50f1f4bf3e4
    Image:          mariadb:5.5
    Image ID:       docker-pullable://mariadb@sha256:db58c9fe0424404fc224cdf2d0bbeaf9ab12e1536f93a6c5ee7c3578d6620d2c
    Port:           3306/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 29 May 2018 14:14:00 +0900
    Ready:          True
    Restart Count:  0
    Environment:
      MYSQL_ROOT_PASSWORD:  example
    Mounts:
      /var/lib/mysql from maria-vol (rw)
 (省略)

Kubernetes上でのコマンドラインからのPodの削除

Kubernetes上で動作しているPodをコマンドラインから削除するには、次のようにします。

# kubectl delete pods owncloud-pod ⏎

デモのお申込み

もっと使い方が知りたい方へ
Kubernetesの操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。Kubernetesのデモをご希望の方は、下記よりお申込みいただけます。


デモをご希望の方


OSS情報「Kubernetes」

Kubernetes〜コンテナ管理ツール〜
ここでは、Dockerコンテナの管理を自動化するためのソフトウェア「Kubernetes」を紹介します。
Kubernetesクラスタの構築
ここでは、CentOS7に最小限のKubernetesクラスタを構築する方法について説明いたします。
KubernetesのPod機能
ここではPod機能について説明いたします。
Kubernetesのレプリカセットとデプロイメント
ここではデプロイメントという機能を利用してレプリカセットを作成する方法について説明いたします。
Kubernetesのアーキテクチャ
ここではアーキテクチャについて説明いたします。
Kubernetesのコンテナアップデート
ここでは、Kubernetesでソフトウェアをアップデートする場合の手法について説明いたします。
Kubernetesのローリングアップデート
ここでは、Kubernetesのローリングアップデート機能の概要について説明いたします。
Kubernetesのダッシュボード
ここでは管理用のダッシュボードについて説明いたします。
Kubernetesの永続ストレージ
ここでは永続ストレージについて説明いたします。
GitLab〜OSSコンテナレジストリ〜
GitLabは、ウェブ型のGitリポジトリマネージャーです。ここではGitLabのコンテナレジストリについて説明いたします。
DRBD-SDSとKubernetes
ここではDRBD-SDSを利用することでサービスの冗長化を実現させる手法について説明いたします。

KubernetesのPod機能の先頭へ