GKEでクラスター環境を構築すると自動的にNodeにFluentdのコンテナーがセットアップされます(/etc/kubernetes/manifests/配下にFluentdのマニフェストファイルがあります)。このFluentdによってDockerコンテナーのログなどが取得できます。
Fluentdコンテナー内の「/etc/google-fluentd/google-fluentd.conf」にデフォルトで取得するログの設定があります。
下図は「docker logs」コマンドで取得したログと、Fluentdで取得したログです。
「docker ps | grep fluentd」コマンドで出力された「gcr.io/google_containers/pause:0.8.0」コンテナーについて調べました(参考)。
これはFluentd特有のコンテナーではなく、Pod内のコンテナーがネットワークを利用するために作成するコンテナーです。Podを作成すると、このコンテナーが作成され、ネットワークインターフェースは、このコンテナーが持つ形になります。
前回記事の「Pod内のコンテナーで共有される情報について調査」の「22d8f822d44f」のコンテナーが、こちらに該当いたします。
efa846246329 gcr.io/google_containers/fluentd-gcp:1.5 "\"/bin/sh -c '/usr/ 7 days ago Up 7 days k8s_fluentd-cloud-logging.6e929303_fluentd-cloud-logging-k8s-cluster-1-node-1_default_e7a73ce4931dc175ddc463501188a765_4032dc70 863f058e21a8 gcr.io/google_containers/pause:0.8.0 "/pause" 7 days ago Up 7 days k8s_POD.e4cc795_fluentd-cloud-logging-k8s-cluster-1-node-1_default_e7a73ce4931dc175ddc463501188a765_9ea9f6a0
GKEでPodの数をスケーリングさせるには、コマンドから実行する必要があります。GUIからは実行できません。そのため、Google Cloud SDKを実行できる環境が必要になります。Google Cloud SDKを実行できる環境で「kubectl resize」コマンドを実行します。
kubectl resize --replicas=<レプリカ数> rc <Replication Controller名>
ここでは、Nodeを3つ持っているGuestbookサンプルのレプリカ数を2から5に変更しました。
kubectl resize --replicas=5 rc guestbook-controller
guestbook-controller-5gmyw <IP>
k8s-guestbook-node-1/<IP> name=guestbook Running About an hour
php-redis brendanburns/php-redis
Running About an hour
guestbook-controller-6ccpe <IP>
k8s-guestbook-node-1/<IP> name=guestbook Running 4 seconds
php-redis brendanburns/php-redis
Running 3 seconds
guestbook-controller-6kddh <IP>
k8s-guestbook-node-2/<IP> name=guestbook Running 4 seconds
php-redis brendanburns/php-redis
Running 3 seconds
guestbook-controller-g3o65 <IP>
k8s-guestbook-node-3/<IP> name=guestbook Running About an hour
php-redis brendanburns/php-redis
Running About an hour
guestbook-controller-ik7ro <IP>
k8s-guestbook-node-2/<IP> name=guestbook Running 4 seconds
php-redis brendanburns/php-redis
Running 3 seconds
GKEでは、コマンドでPodのImageの自動アップデートが可能です。このコマンドもGUIからは実行できません。下記のコマンドを実行すると徐々にPodが新しいイメージに入れ替わっていきます。
gcloud alpha container kubectl --cluster <Cluster名> rollingupdate <Replication Contoroller名> --image=<新しいイメージ名> gcloud alpha container kubectl --cluster <Cluster名> rollingupdate <Replication Contoroller名> -f <Replication Contorollerファイル>
下記は実行例です。
# gcloud alpha container kubectl --cluster guestbook rollingupdate guestbook-controller --image=brendanburns/redis-slave WARNING: This command is deprecated. Use kubectl directly with the cluster. kubectl config use-context gke_containertest20150522_asia-east1-b_guestbook kubectl rollingupdate guestbook-controller --image=brendanburns/redis-slave Creating guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 At beginning of loop: guestbook-controller replicas: 2, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 1 Updating guestbook-controller replicas: 2, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 1 At end of loop: guestbook-controller replicas: 2, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 1 At beginning of loop: guestbook-controller replicas: 1, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 2 Updating guestbook-controller replicas: 1, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 2 At end of loop: guestbook-controller replicas: 1, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 2 At beginning of loop: guestbook-controller replicas: 0, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 3 Updating guestbook-controller replicas: 0, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 3 At end of loop: guestbook-controller replicas: 0, guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 replicas: 3 Update succeeded. Deleting old controller: guestbook-controller Renaming guestbook-controller-bb92f86361aa667617bfd5bae6cb5973 to guestbook-controller guestbook-controller
# kubectl get pod | grep php
php-redis brendanburns/php-redis
Running 3 hours
php-redis brendanburns/redis-slave
php-redis brendanburns/php-redis
Running 3 hours
php-redis brendanburns/php-redis
Running 3 hours
# kubectl get pod | grep php
php-redis brendanburns/redis-slave
Running 7 minutes
php-redis brendanburns/redis-slave
Running 7 minutes
php-redis brendanburns/redis-slave
Running 8 minutes
所要時間わずか10分で「Docker」を体験しよう――Azureで始めるDocker入門
Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント
Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開
Docker、そしてCloud FoundryとPaaSの価値とは
レッドハットが発表したOpenShift Enterprise 3は「Dockerを知らなくても使える」基盤
米グーグルのDockerコンテナ管理サービスが一般提供開始Copyright © ITmedia, Inc. All Rights Reserved.