連載
» 2015年10月23日 05時00分 公開

Docker運用管理製品/サービス大全(3):Docker管理ツール、Kubernetes、etcd、flannel、cAdvisorの概要とインストール、基本的な使い方 (6/6)

[澤井健,株式会社NTTデータ]
前のページへ 1|2|3|4|5|6       

Pod内のコンテナーで共有される情報について調査

 Pod内のコンテナーで共有される情報にはIPやストレージがありますが、下記yamlファイルでPodを作成し検証しました。

apiVersion: v1beta3
kind: Pod
metadata:
  labels:
    name: redis
    redis-sentinel: ""true""
    role: master
  name: redis-master
spec:
  containers:
    - name: master
      image: kubernetes/redis:v1
      env:
        - name: MASTER
          value: ""true""
      ports:
        - containerPort: 6379
      resources:
        limits:
          cpu: ""1""
      volumeMounts:
        - mountPath: /redis-master-data-1
          name: data
    - name: sentinel
      image: kubernetes/redis:v1
      env:
        - name: SENTINEL
          value: ""true""
      ports:
        - containerPort: 26379
      volumeMounts:
        - mountPath: /redis-master-data-2
          name: data
  volumes:
    - name: data
      emptyDir: {}

 このyamlファイルでPodを作成すると内部的にはコンテナーが3つ作成されます。そして、「22d8f822d44f」のコンテナーのみが「eth0」を持ち、他2つのコンテナーはこのeth0を共有する形で外部と通信します。

[root@ip-kubernetes]# docker ps
CONTAINER ID        IMAGE                                  COMMAND             CREATED             STATUS              PORTS               NAMES
eed1da6d179f        kubernetes/redis:v1                    "sh -c /run.sh"     2 minutes ago       Up 2 minutes                            k8s_sentinel.62d3959a_redis-master_default_e43859f1-05e6-11e5-9d75-0a30794a454d_6d5d5dff
11441ec66ee9        kubernetes/redis:v1                    "sh -c /run.sh"     2 minutes ago       Up 2 minutes                            k8s_master.d16ec183_redis-master_default_e43859f1-05e6-11e5-9d75-0a30794a454d_3753e6d4
22d8f822d44f        gcr.io/google_containers/pause:0.8.0   "/pause"            2 minutes ago       Up 2 minutes                            k8s_POD.39750b55_redis-master_default_e43859f1-05e6-11e5-9d75-0a30794a454d_af6f0593
 
[root@ip-kubernetes]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' eed1da6d179f
[root@ip-kubernetes]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' 11441ec66ee9
[root@ip-kubernetes]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' 22d8f822d44f
172.17.0.3
 
[root@ip-kubernetes]# curl http://172.17.0.3:6379
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
^C
[root@ip-kubernetes]# curl http://172.17.0.3:26379
-ERR unknown command 'GET'
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
c^H^C

 次に、ストレージの共有を確認しました。ストレージの共有は「volumeMounts:/volumes」オプションを設定することによって行われ、ホストのディスクスペースを使ってデータの共有を行います。

[root@ip-kubernetes]# docker exec -it eed1da6d179f bash
root@redis-master:/data# ls /redis-master-data-1/
appendonly.aof
root@redis-master:/data# echo "aaa" > /redis-master-data-1/201505291845.txt
root@redis-master:/data# cat /redis-master-data-1/201505291845.txt
aaa
[root@ip-kubernetes]#  docker exec -it 11441ec66ee9 bash
root@redis-master:/data# echo "bbb" > /redis-master-data-2/201505291845.txt
root@redis-master:/data# cat /redis-master-data-2/201505291845.txt
bbb

 共有のディスクスペースにあるファイルは双方のコンテナーから書き込みが可能です。また、双方のコンテナーからwhile文でテキストに大量の文字列を書き込んでみましたが、文字が混ざることなく排他的に書き込みが行われていました。

Kubernetes 1.0での変更点

 今回は、グーグルが開発するOSSの運用管理ツールを紹介しましたが、いかがでしたでしょうか。記事では基本的にKubernetes 0.17についての情報を扱いましたが、2015年7月21日にリリースされたKubernetes 1.0では、flannelがコンテナーでインストールされているようになるなど、設定が簡単になりました。また、監視機能に「Prometheus」が追加されています。

 次回は、Kubernetesの管理サービスGoogle Container Engine(GKE)について解説します。

特集:Docker運用管理製品/サービス大全

数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。



筆者紹介

澤井健

富山県出身。株式会社NTTデータに入社後、PostgresForestやHinemosの開発、保守、導入支援に携わり、今はHinemosのクラウドへの普及展開を進めている。休日は仕事を離れ、宝塚観劇のため日比谷や兵庫に訪れるなど趣味を満喫している。

  • 執筆履歴

Software Design plusシリーズ『Hinemos 統合管理[実践]入門』(共著:技術評論社)


前のページへ 1|2|3|4|5|6       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。