• 検索結果がありません。

K5コンテナサービスチュートリアル

N/A
N/A
Protected

Academic year: 2021

シェア "K5コンテナサービスチュートリアル"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 i

コンテナサービス

チュートリアル

Version 1.0

2018 年 3 月 1 日 富士通株式会社

(2)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 ii

改訂履歴

改訂 No. 日付 Version 章 No. 項 No. 改訂内容

(3)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 ii

目次

第 1 章

まえがき ... 2

1.1 本書の位置づけ ... 2 1.2 対象の読者 ... 2 1.3 商標 ... 2 1.4 お願い ... 2

第 2 章

WEB/AP/DB 構成のコンテナ環境作成 ... 3

2.1 Docker イメージの作成 ... 3 2.1.1 Tomcat 環境の準備 ... 3 2.1.2 Apache 環境の準備 ... 5 2.1.3 PostgreSQL 環境の準備 ... 6 2.1.4 Dockerfile 作成 ... 7 2.1.5 Docker イメージの作成・登録 ... 9 2.2 Docker イメージのデプロイ ... 10 2.2.1 yaml ファイルの作成 ... 10 2.3 動作確認 ... 14 2.3.1 クラスタ FQDN の動作確認 ... 14

第 3 章

オートスケール/マニュアルスケール ... 15

3.1 オートスケール ... 15 3.1.1 初回設定 ... 15 3.1.2 設定変更 ... 18 3.1.3 オートスケール状態の確認 ... 19 3.1.4 オートスケール設定の注意事項 ... 19 3.2 マニュアルスケール ... 20 3.2.1 yaml ファイルの編集 ... 20 3.2.2 マニュアルスケールの設定変更確認 ... 20 3.3 オートスケール/マニュアルスケール時のスティッキーセッション設定... 21

第 4 章

データベース移行作業... 22

4.1 PostgreSQL コンテナへの DB 移行 ... 22 4.1.1 PV へダンプファイルの格納 ... 22 4.1.2 リストアの実行 ... 22

(4)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 2

第1章 まえがき

1.1 本書の位置づけ

本書は、コンテナサービスを利用したアプリケーション開発に関するチュートリアルです。 「コンテナサービス利用ガイド」と合わせて参照ください。

1.2 対象の読者

本書は、コンテナサービス上で Docker コンテナを活用したアプリケーション開発・運用を行う方を対象としています。 本サービスを利用するにあたり、以下の知識が必要です。 ・ Docker/Kubernetes に関する基本的な知識 ・ Linux に関する基本的な知識

1.3 商標

・ Linux は、米国及びその他の国における Linus Torvalds の登録商標です。

・ Docker は、Docker,Inc.の米国およびその他の国における商標または登録商標です。

・ Kubernetes は、The Linux Foundation の米国およびその他の国における商標または登録商標です。 ・ そのほか、本書に記載されている会社名および製品名は、それぞれ各社の商標または登録商標です。

1.4 お願い

・ 本書は、予告なしに変更されることがあります。 ・ 本書を無断で他に転用しないようお願いします。

(5)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 3

第2章 WEB/AP/DB 構成のコンテナ環境作成

2.1 Docker イメージの作成

作業用サーバーで Docker コンテナイメージを作成します。

本章では、Docker 社が提供する DockerHub に存在する CentOS7 のベースイメージに Apache、Tomcat、PostgreSQL をインストールする手順を示します。

2.1.1 Tomcat 環境の準備

Tomcat の Dockerfile を作成するために事前に必要な作業を行います。 2.1.1.1 Tomcat インストールファイルのダウンロード Dockerfile を作成するディレクトリにインストール用の tar ファイルをダウンロードします。 Tomcat のバージョンに関しては「http://ftp.riken.jp/net/apache/tomcat/tomcat-8/」をご確認ください。 2.1.1.2 Tomcat 環境設定スクリプトの作成

Dockerfile を作成するディレクトリに下記の内容で Tomcat 環境設定用のシェルスクリプト(setenv.sh)を作成します。

2.1.1.3 Tomcat 起動スクリプトの作成

Dockerfile を作成するディレクトリに下記の内容で Tomcat 起動用のシェルスクリプト(start_tomcat.sh)を作成します。 ●実行コマンド

curl -O http://ftp.riken.jp/net/apache/tomcat/tomcat-8/v8.x.x/bin/apache-tomcat-8.x.x.tar.gz

#!/bin/bash

JDK_VERSION=`repoquery --all --pkgnarrow=installed --qf="%{name}-%{version}-%{release}.%{arch}" | grep "java-1.8.0-openjdk-1.8.0" | awk '{print $1}'` CATALINA_HOME="/usr/lib/${TOMCAT_VERSION}"

CATALINA_PID="/usr/lib/${TOMCAT_VERSION}/catalina.pid" JRE_HOME="/usr/lib/jvm/${JDK_VERSION}/jre"

CATALINA_OPTS="-Ddb_host=$DB_HOST -Ddb_port=$DB_PORT -Dap_logs=$AP_LOGS -Dpod_name=$POD_NAME" UMASK="0022" #!/bin/bash rm -rf /usr/lib/${TOMCAT_VERSION}/webapps/ROOT cp /mnt/data/tomcat/app/$WARFILE /usr/lib/${TOMCAT_VERSION}/webapps/ROOT.war cp /mnt/data/tomcat/conf/* /usr/lib/${TOMCAT_VERSION}/conf/ /usr/lib/${TOMCAT_VERSION}/bin/catalina.sh run

(6)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 4 2.1.1.4 ユーザー資産の格納 デプロイ対象のアプリケーション資産や設定ファイルを PV へ格納します。 PV へファイルを格納するためには、namespace の作成、および専用のコンテナを起動する必要があります。詳細はコンテナサービス利用ガイド「第 7 章 PV 内のファイル管理」を参照してください。 コンテナ起動後、GUI 経由でディレクトリ作成やファイルコピー、ファイルアップロード等の操作が可能となります。 なお、下記に示す下線部のディレクトリはユーザー側で作成後、必要な資産を対象のディレクトリ配下に格納してください。 ■補足

スクリプト内で変数「CATALINA_OPTS」に DB_HOST(DB サーバーの FQDN)、DB_PORT(DB サーバーのポート番号)を設定することにより Tomcat のパラメータとして与えます。 アプリケーション資産のソースコードで DB 接続を行う場合は JDBC の URL 設定を下記コード例のように行います。

スクリプト内で変数「CATALINA_OPTS」に AP_LOGS(PV 上のログ出力ディレクトリ)、POD_NAME(Pod 名)を設定することにより Tomcat のパラメータとして与えます。 アプリケーション資産で Tomcat およびアプリケーションのログ出力設定を行う場合は下記コード例のように行います。

PV のログ出力ディレクトリは「/mnt/logs/」をご利用ください。 ●server.xml のコード例

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${ap_logs}" prefix="${pod_name}_localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> ●logging.properties のコード例 1catalina.org.apache.juli.AsyncFileHandler.directory = ${ap_logs} 1catalina.org.apache.juli.AsyncFileHandler.prefix = ${pod_name}_catalina. ●コード例

"jdbc:postgresql://" + System.getProperty("db_host") + ":" + System.getProperty("db_port") + "/" + <DB 名> ●PV 配下の資産格納先

例:アプリケーション資産が server.xml, logging.properties, AppTest.war の場合 ・ /data/tomcat/conf/server.xml

・ /data/tomcat/conf/logging.properties ・ /data/tomcat/app/AppTest.war

●log4j.xml のコード例

(7)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 5

2.1.2 Apache 環境の準備

Apache の Dockerfile を作成するために事前に必要な作業を行います。 2.1.2.1 Apache 起動スクリプトの作成 下記の内容で Apache 起動用のシェルスクリプト(start_httpd.sh)を作成します。 2.1.2.2 設定ファイルの格納 Apache の設定ファイルを PV へ格納します。 PV へファイルを格納するためには、対象の namespace に対して専用のコンテナを起動する必要があります。詳細はコンテナサービス利用ガイド「第 7 章 PV 内のファイル管理」を参照してください。 コンテナ起動後、GUI 経由でディレクトリ作成やファイルコピー、ファイルアップロード等の操作が可能となります。 なお、以下に示す下線部のディレクトリはユーザー側で作成後、必要な資産を対象のディレクトリ配下に格納してください。 ■補足 Apache のログ出力設定を行う場合は下記コード例のように行います。 下記例ではログ出力用の環境変数 WEB_LOGS(PV 上のログ出力ディレクトリ)、POD_NAME(Pod 名)を使用します。 PV のログ出力ディレクトリは「/mnt/logs/」をご利用ください。 #!/bin/bash #Tomcat 連携用設定ファイルを作成します。

echo "<IfModule mod_proxy_ajp.c>" > /etc/httpd/conf.d/modproxy.conf echo " <Location / >" >> /etc/httpd/conf.d/modproxy.conf echo " ProxyPass ajp://$AP_HOST:8009/" >> /etc/httpd/conf.d/modproxy.conf echo " </Location>" >> /etc/httpd/conf.d/modproxy.conf echo "</IfModule>" >> /etc/httpd/conf.d/modproxy.conf cp $CONF_FROM $CONF_TO /usr/sbin/httpd -DFOREGROUND ●PV 配下の資産格納先 例:設定ファイルが httpd.conf の場合 ・ /data/httpd/conf/httpd.conf ●httpd.conf のエラーログ設定のコード例

ErrorLog "|/usr/sbin/rotatelogs -l -n 4 ${WEB_LOGS}${POD_NAME}_error_log 86400" ●httpd.conf のアクセスログ設定のコード例

(8)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 6

2.1.3 PostgreSQL 環境の準備

PostgreSQL の Dockerfile を作成するために事前に必要な作業を行います。 2.1.3.1 起動スクリプトの作成 下記の内容で PostgreSQL 起動用のシェルスクリプト(start_postgres.sh)を作成します。 2.1.3.2 設定ファイルの格納 設定ファイルを PV へ格納します。 PostgreSQL の設定ファイルを PV へ格納します。 PV へファイルを格納するためには、対象の namespace に対して専用のコンテナを起動する必要があります。詳細はコンテナサービス利用ガイド「第 7 章 PV 内のファイル管理」を参照してください。 コンテナ起動後、GUI 経由でディレクトリ作成やファイルコピー、ファイルアップロード等の操作が可能となります。 なお、以下に示す下線部のディレクトリはユーザー側で作成後、必要な資産を対象のディレクトリ配下に格納してください。 #!/bin/bash #PGDATA のディレクトリ存在チェック(初回起動チェック) #初回起動の場合、PGDATA のディレクトリ作成と所有者変更、initdb を実行。 if [ ! -e $PGDATA ]; then mkdir -p $PGDATA

chown postgres:postgres $PGDATA

su postgres -c "initdb --encoding=UTF8 --no-locale --auth=ident -D $PGDATA" fi #設定ファイルのコピー、PostgreSQL の起動 cp $CONF_FROM $PGDATA su postgres -c "postgres" ●PV 配下の資産格納先 例:設定ファイルが postgresql.conf, pg_hba.conf の場合 ・ /data/postgresql/conf/postgresql.conf ・ /data/postgresql/conf/pg_hba.conf /pv/test-namespace/data/postgresql/conf/pg_hba.conf

(9)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 7

2.1.4 Dockerfile 作成

Docker イメージを作成するために、Dockerfile を作成します。Dockerfile には、コンテナを構築するためコマンド等を記述します。

Dockerfile を活用することにより、同一環境の構築が容易となりますので、従来の開発と比較して構築コストの削減や環境差異の発生を防止することが可能です。 2.1.4.1 Tomcat 用 Dockerfile

以下の Tomcat の作成例を参考に Dockerfile を作成します。

環境変数「TOMCAT_VERSION」に指定する Tomcat のバージョンに関しては「http://ftp.riken.jp/net/apache/tomcat/tomcat-8/」をご確認の上、適宜変更してください。 ●実行コマンド vi Dockerfile #Dockerfile 作成例 #ベースとなる CentOS7 のイメージを指定 i FROM centos:centos7 #作成者 MAINTAINER testuser #Tomcat のインストール

ENV TOMCAT_VERSION apache-tomcat-8.x.x RUN mkdir /tmp/work

ADD ${TOMCAT_VERSION}.tar.gz /tmp/work RUN mv /tmp/work/${TOMCAT_VERSION} /usr/lib #OpenJDK のインストール

RUN yum install -y java-1.8.0-openjdk.x86_64 ADD setenv.sh /usr/lib/${TOMCAT_VERSION}/bin #Tomcat 起動スクリプトコピー

ADD start_tomcat.sh /tmp/work #各種スクリプト実行権限設定

RUN chmod +x /usr/lib/${TOMCAT_VERSION}/bin/setenv.sh RUN chmod +x /tmp/work/start_tomcat.sh

#Tomcat を起動

(10)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 8 2.1.4.2 Apache 用 Dockerfile 以下に Apache の Dockerfile 作成例を記載します。 2.1.4.3 PostgreSQL 用 Dockerfile 以下に PostgreSQL の Dockerfile 作成例を記載します。

既存データベースの移行時など PostgreSQL のバージョン指定が必要な利用シーンを想定し、CentOS7 のベースイメージに PostgreSQL をインストールする手順としています。 ●実行コマンド vi Dockerfile #Dockerfile 作成例 #ベースとなる CentOS7 のイメージを指定 FROM centos:centos7 #作成者 MAINTAINER testuser #Apache(httpd)のインストール RUN yum install -y httpd #Apache 起動スクリプトコピー RUN mkdir /tmp/work

ADD start_httpd.sh /tmp/work #各種スクリプト実行権限設定

RUN chmod +x /tmp/work/start_httpd.sh #Apache を起動 CMD /tmp/work/start_httpd.sh ●実行コマンド vi Dockerfile #Dockerfile 作成例 #ベースとなる CentOS7 のイメージを指定 FROM centos:centos7 #作成者 MAINTAINER testuser #PostgreSQL のインストール

RUN yum install -y postgresql-server #PostgreSQL 起動スクリプトコピー

RUN mkdir /tmp/work

ADD start_postgres.sh /tmp/work #各種スクリプト実行権限設定

RUN chmod +x /tmp/work/start_postgres.sh #コンテナ起動時のサービス起動コマンド指定

(11)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 9

2.1.5 Docker イメージの作成・登録

2.1.5.1 Docker イメージ作成 Dockerfile をビルドすることによって、Docker イメージを作成します。 ビルド時に指定するローカルレジストリは「reg.local:5000」となります。「イメージ名:タグ名」は任意の値を設定してください。 2.1.5.2 Docker イメージ作成 作成した Docker イメージをコンテナ実行環境にデプロイするためローカルレジストリへイメージ登録をします。 ●実行コマンド

docker push reg.local:5000/<イメージ名:タグ名> 実行例:

docker push reg.local:5000/test-namespace/local_tomcat:v1.0 ●実行コマンド

docker build -t <ローカルレジストリ>/<イメージ名:タグ名> <Dockerfile が存在するディレクトリパス> 実行例:(カレントディレクトリに Dockerfile が存在)

(12)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 10

2.2 Docker イメージのデプロイ

ローカルレジストリに格納したイメージをコンテナ実行環境上にデプロイします。Pod(コンテナ)を起動するために必要な yaml ファイルを準備し、Kubernetes のコマンドを使用してデプロイを行います。

2.2.1 yaml ファイルの作成

2.2.1.1 WEB/AP デプロイ用ファイル

WEB/AP(Apache、Tomcat)デプロイ用 yaml ファイル(web-ap-test.yaml)を作成します。 ●実行コマンド vi web-ap-test.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: web-ap-test spec: replicas: 1 template: metadata: labels: app: webap spec: containers: - name: httpd-test image: reg.local:5000/test-namespace/local_httpd:v1.0 env: - name: "AP_HOST" value: "localhost" - name: "CONF_FROM" value: "/mnt/data/httpd/conf/*" - name: "CONF_TO" value: "/etc/httpd/conf/" - name: "WEB_LOGS" value: "/mnt/logs/" - name: "POD_NAME" valueFrom: fieldRef: fieldPath: metadata.name ports: - containerPort: 80 resources: requests: cpu: 30m volumeMounts: - mountPath: /mnt name: pvcl ~~~次ページへ続く~~~

(13)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 11 ~~~前ページからの続き~~~ - name: tomcat-test image: reg.local:5000/test-namespace/local_tomcat:v1.0 env: - name: "DB_HOST" value: "db-test-sv.test-namespace.svc.fcxlocal" - name: "DB_PORT" value: "5432" - name: "WARFILE" value: "AppTest.war" - name: "AP_LOGS" value: "/mnt/logs/" - name: "POD_NAME" valueFrom: fieldRef: fieldPath: metadata.name ports: - containerPort: 8009 resources: requests: cpu: 30m volumeMounts: - mountPath: /mnt name: pvcl volumes: - name: pvcl persistentVolumeClaim: claimName: claim-test-namespace imagePullSecrets: - name: myregistrykey --- apiVersion: v1 kind: Service metadata: name: web-ap-test-sv spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: webap ●実行コマンド

kubectl create -f <Pod/Service に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

(14)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 12

2.2.1.2 DB デプロイ用ファイル

DB(PostgreSQL)デプロイ用 yaml ファイル(db-test.yaml)を作成します。

■補足 PGDATA には PV のマウントパス配下のディレクトリのみ指定可能です。PV のマウントパス(例:/mnt)は指定できません。 ●実行コマンド vi db-test.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: db-test spec: replicas: 1 template: metadata: labels: app: db spec: containers: - name: db-test image: reg.local:5000/test-namespace/local_postgresql:v1.0 env: - name: "PGDATA" value: "/mnt/data/postgresql/pgdata" - name: "CONF_FROM" value: "/mnt/data/postgresql/conf/*" ports: - containerPort: 5432 volumeMounts: - mountPath: /mnt name: pvcl volumes: - name: pvcl persistentVolumeClaim: claimName: claim-test-namespace imagePullSecrets: - name: myregistrykey --- apiVersion: v1 kind: Service metadata: name: db-test-sv spec: ports: - port: 5432 targetPort: 5432 protocol: TCP selector: app: db

(15)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 13

●実行コマンド

kubectl create -f <Pod/Service に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

(16)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 14

2.3 動作確認

ブラウザにて公開設定を行った Apache の URL を入力し、動作確認を行います。 公開設定に関してはコンテナサービス利用ガイドの「6.8 アプリケーションの動作確認、および公開」を参照ください。

2.3.1 クラスタ FQDN の動作確認

クラスタ FQDN で外部公開した URL をブラウザで入力します。

入力 URL 内容:https://[サービス名] -[namepace 名]. [契約ごとに一意な文字列].k5container.net/ 入力 URL 例:https://web-ap-test-sv-test-namespace.xxxxxxx.k5container.net/

(17)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 15

第3章 オートスケール/マニュアルスケール

3.1 オートスケール

Pod の CPU 使用率に応じて、指定した範囲内で Pod 数を自動的に調整する機能です。 Deployment で生成した Pod に対して調整が可能です。 本機能を設定する事で、オートスケールを制御する HorizontalPodAutoscaler (hpa)というリソースが生成されます。 本章では、「2.2.1.1 WEB/AP デプロイ用ファイル」の手順にもとづいてデプロイしたものに対してオートスケールを設定します。

3.1.1 初回設定

オートスケールの初回設定手順は、以下となります。 3.1.1.1 Deployment 設定確認 オートスケールを設定するには、設定対象の Deployment に CPU のリクエスト設定が必要となります。 設定対象の Deployment にリクエスト設定がある事を確認します。 ※リクエスト設定については、コンテナサービス利用ガイドの「6.5.1 yaml ファイルの作成」を参照してください。 設定されていない場合のみ、次項の「3.1.1.2 Deployment 設定変更」を実施してください。 ●実行内容

kubectl get deployment <deployment 名> -o yaml --namespace=<利用設定済の namespace 名> | grep -C2 "requests:" 実行例:

kubectl get deployment web-ap-test -o yaml --namespace=test-namespace | grep -C2 "requests:" ●実行結果 CPU リクエスト値が設定されている事を確認します。 … resources: requests: cpu: <CPU リクエスト値>m … 結果例 … resources: requests: cpu: 30m …

(18)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 16

3.1.1.2 Deployment 設定変更

オートスケールを設定するために、Deployment の設定を変更します。

●実行コマンド

kubectl apply -f <Pod/Service に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

kubectl apply -f web-ap-test.yaml --namespace=test-namespace ●実行内容 vi web-ap-test.yaml 以下の「resources」から「cpu」を追加します。 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: web-ap-test spec: replicas: 1 template: metadata: labels: app: webap spec: containers: - name: httpd-test image: reg.local:5000/test-namespace/local_httpd:v1.0 env: - name: "AP_HOST" value: "localhost" - name: "CONF_FROM" value: "/mnt/data/httpd/conf/*" - name: "CONF_TO" value: "/etc/httpd/conf/" - name: "WEB_LOGS" value: "/mnt/logs/" - name: "POD_NAME" valueFrom: fieldRef: fieldPath: metadata.name ports: - containerPort: 80 resources: requests: cpu: 30m 以下略

(19)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 17 3.1.1.3 オートスケール設定 オートスケールを設定する yaml ファイルを作成し、オートスケールを設定します。 ■オートスケール設定用の yaml に関する補足 項目 説明 scaleTargetRef name オートスケール対象の Pod を管理する Deployment の名称を指定します。

Deployment の yaml ファイルから「metadata: name: 」の値を指定してください。

minReplicas オートスケールする際の Pod 数の下限値

maxReplicas オートスケールする際の Pod 数の上限値

targetCPUUtilizationPercentage オートスケールを実行する閾値

オートスケールを設定した Deploymet 内の各 Pod の CPU 平均使用率

3.1.1.4 オートスケール設定確認 オートスケールが設定された事を確認します。 ●実行内容 vi web-ap-test-hpa.yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: web-ap-test-hpa spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: web-ap-test minReplicas: 1 maxReplicas: 2 targetCPUUtilizationPercentage: 50 ●実行内容

kubectl create -f <hpa に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

kubectl create -f web-ap-test-hpa.yaml --namespace=test-namespace

●実行内容

kubectl get hpa <hpa 名> --namespace=<利用設定済の namespace 名> 実行例:

kubectl get hpa web-ap-test-hpa --namespace=test-namespace

●実行結果例

NAME REFERENCE TARGET CURRENT MINPODS MAXPODS AGE web-ap-test-hpa Deployment/web-ap-test 50% 5% 1 2 5s

(20)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 18

3.1.2 設定変更

既存のオートスケールの設定変更は、以下の手順となります。 本章では、「3.1.1.3 オートスケール設定」の手順にもとづいて設定したオートスケールを変更しています。 3.1.2.1 オートスケール設定 オートスケールを設定する yaml ファイルを編集し、オートスケール設定を変更します。 変更個所は、「minReplicas」「maxReplicas」「targetCPUUtilizationPercentage」となります。 3.1.2.2 オートスケール設定変更確認 オートスケールの設定が変更された事を確認します。 ●実行内容 vi web-ap-test-hpa.yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: web-ap-test-hpa spec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: web-ap-test minReplicas: 1 maxReplicas: 2 targetCPUUtilizationPercentage: 80 ●実行内容

kubectl apply -f <hpa に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

kubectl apply -f web-ap-test-hpa.yaml --namespace=test-namespace

●実行内容

kubectl get hpa <hpa 名> --namespace=<利用設定済の namespace 名> 実行例:

kubectl get hpa web-ap-test-hpa --namespace=test-namespace ●実行結果例

変更した値が反映されている事を確認します。

NAME REFERENCE TARGET CURRENT MINPODS MAXPODS AGE web-ap-test-hpa Deployment/web-ap-test 80% 5% 1 2 5s

(21)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 19

3.1.3 オートスケール状態の確認

CPU 負荷増加により実行されたオートスケールの状態を確認します。 上記は CPU 使用率が閾値を上回ったため、Pod 数が 1 から 2 に増えたことを示しています。 オートスケールの状態に変化があると、「Events:」の「Message」欄に以下が表示されます。

(New size: 2; reason: cpu resource utilization (percentage of request) above target)

3.1.4 オートスケール設定の注意事項

No 概要 内容

1 Deployment の 「 replicas 」 設 定 と 、 オ ー ト ス ケ ー ル 設 定 の 「minReplicas」・「maxReplicas」設定の優先度について

Deployment の「replicas」が設定されていた場合でも、オートスケールの設定を追加したタイミングでオートスケール設定に応じた Pod 数となります。 (「minReplicas」・「maxReplicas」設定が優先)

●実行内容

kubectl describe hpa <hpa 名> --namespace=<利用設定済の namespace 名> 実行例:

kubectl describe hpa web-ap-test-hpa --namespace=test-namespace

●実行結果例 …

Events:

Type Reason Age From Message ---- --- ---- ---- ---

Normal SuccessfulRescale 17m horizontal-pod-autoscaler New size: 2; reason: cpu resource utilization (percentage of request) above target Normal SuccessfulRescale 12m horizontal-pod-autoscaler New size: 1; reason: All metrics below target

(22)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 20

3.2 マニュアルスケール

マニュアルで deployment の Pod 数を変更する際の手順は、以下となります。 本章では、「2.2.1.1 WEB/AP デプロイ用ファイル」の手順にもとづいてデプロイしたものに対してマニュアルスケールを設定します。

3.2.1 yaml ファイルの編集

マニュアルスケールを設定するために、deployment の設定を変更します。 以下の「replicas」の値を変更します。

下記の例では、「2.2.1.1 WEB/AP デプロイ用ファイル」の yaml ファイルの「replicas」の設定値を「1」から「2」に変更しています。

3.2.2 マニュアルスケールの設定変更確認

マニュアルスケール設定が変更された事を確認します。 ●実行内容 vi web-ap-test-hpa.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: web-ap-test spec: replicas: 2 template: metadata: labels: app: webap ※以下略 ●実行内容

kubectl apply -f <hpa に関する定義ファイル> --namespace=<利用設定済の namespace 名> 実行例:

kubectl apply -f web-ap-test-hpa.yaml --namespace=test-namespace

●実行内容

kubectl get deployment <deployment 名> --namespace=<利用設定済の namespace 名> 実行例:

kubectl get deployment web-ap-test --namespace=test-namespace

●実行結果例

Pod 数が設定した数になった事を確認します。

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE web-ap-test 2 2 2 2 30m

(23)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 21

3.3 オートスケール/マニュアルスケール時のスティッキーセッション設定

オートスケールまたはマニュアルスケールした Pod にてアプリケーションを公開している場合に スティッキーセッション機能が無効な場合はアクセス先の Pod はアクセス毎に不定になります。 有効にした場合は初回にアクセスした Pod へのアクセスに固定されます。 スティッキーセッションについては、コンテナサービス利用ガイドの「5.8.14 FQDN 設定画面」を参照してください。

(24)

All Right Reserved, Copyright © FUJITSU LIMITED 2018 22

第4章 データベース移行作業

4.1 PostgreSQL コンテナへの DB 移行

ユーザー側で取得したダンプファイルを DB コンテナにリストアする手順です。 下記の例では pg_dump –Fc にて取得したカスタム形式のダンプファイルを使用しています。

4.1.1 PV へダンプファイルの格納

ダンプファイルを PV へ格納します。 PV へファイルを格納するためには、対象の namespace に対して専用のコンテナを起動する必要があります。詳細はコンテナサービス利用ガイド「第 7 章 PV 内のファイル管理」を参照してください。 コンテナ起動後、GUI 経由でディレクトリ作成やファイルコピー、ファイルアップロード等の操作が可能となります。 なお、以下に示す下線部のディレクトリはユーザー側で作成後、必要な資産を対象のディレクトリ配下に格納してください。

4.1.2 リストアの実行

対象の DB を起動している Pod へログインします。 リストア対象のデータベースを事前に作成します。 リストアコマンドを実行します。 ●実行コマンド

su postgres -c 'pg_restore -d <Database 名> -Fc <PV のダンプファイル格納パス>' 実行例:

su postgres -c 'pg_restore -d test -Fc /mnt/data/postgresql/dump/test.dump' ●実行コマンド

su postgres -c 'psql -c "CREATE DATABASE <Database 名>"' 実行例:

su postgres -c 'psql -c "CREATE DATABASE test"' ●実行コマンド

kubectl exec -it <Pod 名> --namespace=<利用設定済みの namespace 名> -- /bin/bash 実行例:

kubectl exec -it postgresql-test-554876664-n9l5q --namespace=test-namespace -- /bin/bash ●PV 配下の資産格納先

例:dump ファイルが test.dump の場合 ・ /data/postgresql/dump/test.dump

参照

関連したドキュメント

l 「指定したスキャン速度以下でデータを要求」 : このモード では、 最大スキャン速度として設定されている値を指 定します。 有効な範囲は 10 から 99999990

納付日の指定を行った場合は、指定した日の前日までに預貯金口座の残

LicenseManager, JobCenter MG/SV および JobCenter CL/Win のインストール方法を 説明します。次の手順に従って作業を行ってください。.. …

事前調査を行う者の要件の新設 ■

タップします。 6通知設定が「ON」になっ ているのを確認して「た めしに実行する」ボタン をタップします。.

(7)

父親が入会されることも多くなっています。月に 1 回の頻度で、交流会を SEED テラスに