ページの先頭行へ戻る
Enterprise Service Development Platform V1.1.0 インストールガイド
FUJITSU Software

4.1.3 Container Management

ここでは、Container Managementを旧バージョンから本バージョンにアップデートする手順について説明します。

以下の事項が前提です。

注意

アップデート作業中、Container Managementで動作するアプリケーションが業務無停止となるために、以下の条件を満たす必要があります。

  • KubernetesクラスタにKubernetes nodeサーバが2台以上存在すること。

  • 配備するアプリケーションが停止されたとき、グレースフルにシャットダウンするよう設計されていること。(注1)

  • 配備するアプリケーションのコンテナの数が、常に1つ以上動作するように設計されていること。(注2)

注1) 設計の詳細は、The Twelve-Factor App (IX. Disposability)を参照してください。未設計の場合、Container Managementのアップデート中に業務処理が停止する場合があります。

注2) アプリケーションの実行最小数をKubernetesのPodDisruptionBudgetで制御することができます。詳細はKubernetes公式ドキュメントのDisruptionsを参照してください。未設計の場合、アップデート中に業務処理が失敗する場合があります。

注意

  • 更新ツールでは「概説書」のサポート範囲で、既存のデータおよびオープンソースの設定ファイルを、アップデート後のオープンソースに適用します。オープンソースの設定ファイルや機能に対して個別に追加・設定した場合は更新後、設定を引き継げない場合があります。個別に機能・設定を追加した場合は、該当のオープンソースを業務とは異なる環境で再現・更新することで引き継ぎ可能であることを検証し、更新ツールを実行してください。

  • 更新ツールでは、設定ファイルのバックアップやデータを引き継ぐためのデータベースのダンプファイル取得を行います。お客様のシステムのリソース利用状況に合わせ、十分なリソース状況であることを確認した後、更新ツールの実行を行ってください。リソース確認方法は「運用ガイド」を参照してください。

  • オープンソースのアップデートの際、非互換である機能の取り込みが含まれる可能性があります。切り戻しによっても更新前に復元できない場合に備え、更新前に必ずバックアップを取得してください。バックアップ方法は「運用ガイド」を参照してください。

  • Container Managementのアップデートでは、Kubernetes nodeサーバを1台ずつ、配備されたアプリケーション(コンテナ)を別のKubernetes nodeサーバに退避させながらアップデートを行います。そのため、アプリケーションが一部のKubernetes nodeサーバに偏って配置される場合があります。偏って配置された場合でも正常に動作するようリソース使用量を考慮し、更新ツールの実行を計画してください。詳細は「設計ガイド」3.2. Container Managementに関する設定 を参照してください。

  • 更新、および、切り戻しの操作は多重実行できません。各操作はシーケンシャルに実行してください。

Automation Managerコンテナにログインし、以下の手順を行うことでContainer Managementのアップデートができます。

  1. 事前準備

    • 以下のコマンドを実行し、更新ツールの実行に必要なファイルを生成します。

      # cd /data/playbook
      # ansible-playbook -i inventories/<環境識別子>/hosts play_create_playbook_for_update_tool.yml

      <環境識別子>は、「第2章 インストール手順」実施時に環境を一意に識別するために指定した任意の文字列を指定します。

  2. Container Managementのアップデート

    以下のコマンドを実行し、Container Managementをアップデートします。

    # cd /data/playbook
    # ansible-playbook -i inventories/<環境識別子>/hosts play_update_container_mng.yml

    コマンドを実行すると、以下のメッセージが表示されます。誤って実行した場合や前提・業務無停止の条件を満たしていない場合は、「n」を入力し、Enterキーを押下することでアップデートを中断できます。アップデートを継続する場合は「y」を入力し、Enterキーを押下します。

    [Please confirm]
    ==============================================================
    [WARNING] Do you want to run Update Container Management? (y/n)
    ==============================================================
    :

    注意

    Kubernetesのバージョンアップでは、Kubernetes masterおよびnodeサーバの台数分、マイナーバージョンを1世代ずつアップデートします。

    この際、業務無停止とするために、ロードバランサーやAPI ProxyからKubernetes nodeへの振り分け停止/再開を行う操作が必要となります。

    アップデートの処理は、以下の形式でメッセージを表示して一時停止します。

    [update/container_mng/k8s_cluster : confirm]
    ======================================================
    <メッセージ>
    ======================================================

    以降の説明に従って、Kubernetes nodeへの振り分け停止/再開の操作を行ってください。

    【メッセージ】

    [WARNING]
    Upgrade the version of k8s_node [<IPアドレス>] to <バージョン>.
    Please prepare to continue working on other k8s nodes instead of the [<IPアドレス>].
    If you are ready to continue, please press enter key.

    【説明】

    <IPアドレス>のKubernetes nodeサーバを<バージョン>にアップデートします。

    <IPアドレス>のKubernetes nodeサーバへの振り分けを停止してください。

    振り分け停止後、Enterキーを押下し、処理を再開してください。

    【メッセージ】

    [WARNING]
    k8s_node [<IPアドレス>] has been upgraded to <バージョン>.
    Please prepare to resume work on k8s_node [<IPアドレス>].
    If you are ready to continue, please press enter key.

    【説明】

    <IPアドレス>のKubernetes nodeサーバを<バージョン>にアップデートしました。

    <IPアドレス>のKubernetes nodeサーバへの振り分けを再開してください。

    振り分け再開後、Enterキーを押下し、処理を再開してください。

    【正常終了時】

    正常終了時は下記のようにunreachable=0, failed=0となり、XX、YYは任意の整数が記載されています。

    PLAY RECAP *********************************************************************
    127.0.0.1                  : ok=XX  changed=YY  unreachable=0    failed=0

    【異常終了時】

    異常終了時は下記のようにunreachable, failedのAAおよびBBは任意の整数が記載されています。

    PLAY RECAP *********************************************************************
      127.0.0.1                  : ok=XX  changed=YY  unreachable=AA    failed=BB

注意

KubernetesとDockerではLinux カーネル搭載のControl Group(以下cgroup) を利用してリソースの割当を制御しています。

本製品V1.0.0ではcgroupのドライバとして「cgroupfs」を使用するようにAutomation Managerが製品をセットアップしていましたが、本製品V1.1.0では「systemd」を使用するように制御しています。

更新ツールでV1.1.0に更新した場合、cgroupのドライバとして「cgroupfs」の設定が維持されます。

Red Hat Enterprise Linux 7/CentOS 7で「cgroupfs」を利用し続ける場合、コンテナの作成・削除でメモリが不当に残存し、Kubernetes masterサーバ/Kubernetes nodeサーバの再起動が必要となる場合があります。速やかに「systemd」に変更することを推奨します。

変更方法については「B.1 アップデート手順後のContainer Management cgroup driver変更」を参照してください。