-
サーバ構築のデージーネットTOP
-
OSS情報
-
一押しOSS
-
Kubernetes〜コンテナ管理の課題を解決するOSS〜
-
KubernetesのPod機能
-
サーバ構築のデージーネットTOP
-
OSS情報
-
コンテナ型仮想化
-
Kubernetes〜コンテナ管理の課題を解決するOSS〜
-
KubernetesのPod機能
KubernetesのPod機能
Podとは?
Podとは、KubernetesでDockerコンテナを管理するための最小単位です。Podは、複数のDockerコンテナの集合体です。Dockerコンテナを単独で管理するのではなく、グループとして管理することで、Dockerコンテナの使いにくさを解消することができます。
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管理画面です。
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」