検索

第8章 ホストの既存クラスターへの追加

download PDF

8.1. 概要

OpenShift Container Platform クラスターのインストール方式に応じて、インストールツールによるクイックインストールか、または scaleup.yml Playbook による通常インストール (Advanced installation) を使用して新規ホスト (ノードまたはマスター) をインストールに追加できます。

8.2. クイックインストーラーツールを使用したホストの追加

クイックインストールツールを使用して OpenShift Container Platform クラスターをインストールした場合は、クイックインストールツールを使用して新規ノードホストを既存クラスターに追加できます。

注記

現時点では、クイックインストーラーツールを使用して新規マスターホストを追加することはできません。新規マスターホストを追加するには、通常インストール (Advanced installation) 方式を使用する必要があります。

インストーラーを対話型モードまたは無人モードのいずれかで使用した場合は、インストール設定ファイル~/.config/openshift/installer.cfg.ymlにある限り (または -c オプションで別の場所を指定して)、インストールを再実行できます。

重要

推奨される最大ノード数については、「Cluster Limits」セクションを参照してください。

ノードをインストールに追加するには、以下を実行します。

  1. atomic-openshift-utils パッケージを更新して最新のインストーラーと Playbook を取得します。

    # yum update atomic-openshift-utils
  2. 対話型モードまたは無人モードで scaleup サブコマンドを使用してインストーラーを実行します。

    # atomic-openshift-installer [-u] [-c </path/to/file>] scaleup
  3. インストーラーによって現在の環境が検出され、ノードを追加できるようになります。

    *** Installation Summary ***
    
    Hosts:
    - 100.100.1.1
      - OpenShift master
      - OpenShift node
      - Etcd (Embedded)
      - Storage
    
    Total OpenShift masters: 1
    Total OpenShift nodes: 1
    
    
    ---
    
    We have detected this previously installed OpenShift environment.
    
    This tool will guide you through the process of adding additional
    nodes to your cluster.
    
    Are you ready to continue? [y/N]:

    (y) を選択し、画面の指示に従って必要なタスクを完了します。

8.3. ホストの追加

scaleup.yml Playbook を実行して新規ホストをクラスターに追加できます。この Playbook は、マスターをクエリーし、新規ホストの新規証明書を生成して配布し、これらの新規ホストでのみ、設定 Playbook を実行します。scaleup.yml Playbook を実行する前に、前提条件となるホストの準備手順をすべて完了してください。

重要

scaleup.yml の Playbook は新規ホストの設定のみを実行します。マスターサービスの NO_PROXY の更新やマスターサービスの再起動は行いません。

scaleup.yml Playbook を実行するには、現在のクラスター設定を表す既存のインベントリーファイル (/etc/ansible/hosts など) が必要です。以前に atomic-openshift-installer コマンドを使用してインストールを実行した場合は、~/.config/openshift/hosts を調べて、インストーラーによって生成された最新のインベントリーファイルを見つけ、それをそのまま使用するか、インベントリーファイルの必要に応じて変更することができます。後で ansible-playbook を呼び出すときに、-i オプションを使用してそのファイルを指定する必要があります。

重要

推奨される最大ノード数については、「Cluster Limits」セクションを参照してください。

手順

  1. atomic-openshift-utils パッケージを更新して最新の Playbook を取得します。

    # yum update atomic-openshift-utils
  2. /etc/ansible/hosts ファイルを編集し、 new_<host_type>[OSEv3:children] セクションに追加します。

    たとえば、新規ノードホストを追加するには、new_nodes を追加します。

    [OSEv3:children]
    masters
    nodes
    new_nodes

    新規マスターホストを追加するには、new_masters を追加します。

  3. [new_<host_type>] セクションを作成して、新規ホストのホスト情報を指定します。このセクションは、以下の新規ノードの追加例で示されているように、既存のセクションと同じような形式で作成します。

    [nodes]
    master[1:3].example.com
    node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}"
    node2.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
    infra-node1.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    infra-node2.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    
    [new_nodes]
    node3.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"

    その他のオプションについては、「ホスト変数の設定」を参照してください。

    新規マスターを追加する場合は、[new_masters] セクションと [new_nodes] セクションの両方に新規ホストを追加して。新規マスターホストが OpenShift SDN の一部となるようにします。

    [masters]
    master[1:2].example.com
    
    [new_masters]
    master3.example.com
    
    [nodes]
    master[1:2].example.com
    node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}"
    node2.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
    infra-node1.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    infra-node2.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    
    [new_nodes]
    master3.example.com
    重要

    マスターホストに region=infra ラベルを付け、それ以外に専用インフラストラクチャーノードがない場合は、エントリーに openshift_schedulable=true を追加してホストにスケジュール可能であることを示すマークを明示的に付ける必要もあります。そうしないと、レジストリー Pod とルーター Pod をどこにも配置できなくなります。

  4. scaleup.yml Playbook を実行します。インベントリーファイルがデフォルトの /etc/ansible/hosts 以外の場所にある場合は、-i オプションで場所を指定します。

    • ノードを追加する場合は、以下を指定します。

      # ansible-playbook [-i /path/to/file] \
          /usr/share/ansible/openshift-ansible/playbooks/openshift-node/scaleup.yml
    • マスターを追加する場合は、以下を実行します。

      # ansible-playbook [-i /path/to/file] \
          /usr/share/ansible/openshift-ansible/playbooks/openshift-master/scaleup.yml
  5. Playbook の実行後に、インストールを確認します。
  6. [new_<host_type>] セクションで定義したホストを適切なセクションに移動します。このようにホストを移動することで、このインベントリーファイルを使用するその後の Playbook の実行で、正しくノードが処理されるようになります。[new_<host_type>] セクションは空のままで結構です。たとえば、新規ノードを追加する場合は以下のように指定します。

    [nodes]
    master[1:3].example.com
    node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}"
    node2.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
    node3.example.com openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
    infra-node1.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    infra-node2.example.com openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
    
    [new_nodes]

8.4. etcd ホストの既存クラスターへの追加

etcd scaleup Playbook を実行して新規 etcd ホストを追加することができます。この Playbook は、マスターをクエリーし、新規ホストの新規証明書を生成してこれを配布し、設定 Playbook を新規ホストにのみ実行します。etcd scaleup.yml Playbook を実行する前に、前提条件となるホストの準備 手順をすべて完了してください。

etcd ホストを既存クラスターに追加するには、以下を実行します。

  1. atomic-openshift-utils パッケージを更新して最新の Playbook を取得します。

    $ yum update atomic-openshift-utils
  2. /etc/ansible/hosts ファイルを編集し、new_<host_type>[OSEv3:children] グループに、ホストを new_<host_type> グループに追加します。

    たとえば、新規 etcd を追加するには、new_etcd を追加します。

    [OSEv3:children]
    masters
    nodes
    etcd
    new_etcd
    
    [etcd]
    etcd1.example.com
    etcd2.example.com
    
    [new_etcd]
    etcd3.example.com
  3. etcd scaleup.yml Playbook を実行します。インベントリーファイルがデフォルトの /etc/ansible/hosts 以外の場所にある場合は、-i オプションで場所を指定します。

    $ ansible-playbook [-i /path/to/file] \
      /usr/share/ansible/openshift-ansible/playbooks/openshift-etcd/scaleup.yml
  4. ノードラベルを logging-infra-fluentd: "true" に設定します。

    # oc label node/new-node.example.com logging-infra-fluentd: "true"
  5. Playbook が正常に完了したら、インストールを確認します。

8.5. 共存する etcd での既存のマスターの置き換え

マシンを別のデータセンターに移行し、割り当てられているネットワークと IP が変更される場合には、以下の手順を実行します。

  1. プライマリー etcd およびマスターノードをバックアップします。

    重要

    etcd のバックアップ」の説明にあるように、/etc/etcd/ ディレクトリーがバックアップされていることを確認します。

  2. 置き換えるマスターの数だけ、新規マシンをプロビジョニングします。
  3. クラスターを追加または拡張します。たとえば、etcd が共存するマスターを 3 つ追加する場合には、マスターノード 3 つまたは etcd ノード 3 つに拡張します。

    1. マスターを追加します。このプロセスのステップ 3 で、[new_masters][new_nodes] に新規データセンターのホストを追加して、マスターの scaleup.yml Playbook を実行します。
    2. 同じホストを etcd セクションに配置して、etcd scaleup.yml Playbook を実行します。
    3. ホストが追加されたことを確認します。

      # oc get nodes
    4. マスターホストの IP が追加されたことを確認します。

      # oc get ep kubernetes
    5. etcd が追加されたことを確認します。ETCDCTL_API の値は、使用するバージョンにより異なります。

      # source /etc/etcd/etcd.conf
      # ETCDCTL_API=2 etcdctl --cert-file=$ETCD_PEER_CERT_FILE --key-file=$ETCD_PEER_KEY_FILE \
        --ca-file=/etc/etcd/ca.crt --endpoints=$ETCD_LISTEN_CLIENT_URLS member list
    6. /etc/origin/master ディレクトリーから、インベントリーファイルの最初に記載されている新規マスターホストに、/etc/origin/master/ca.serial.txt をコピーします。デフォルトでは、これは /etc/ansible/hosts です。
  4. etcd ホストを削除します。

    1. /etc/etcd/ca ディレクトリーを、インベントリーファイルの最初に記載されている新規 etcd ホストにコピーします。デフォルトでは、これは /etc/ansible/hosts です。
    2. master-config.yaml ファイルから以前の etcd クライアントを削除します。

      # grep etcdClientInfo -A 11 /etc/origin/master/master-config.yaml
    3. マスターを再起動します。

      # systemctl restart atomic-openshift-master-*
    4. クラスターから以前の etcd メンバーを削除します。ETCDCTL_API の値は、使用するバージョンにより異なります。

      # source /etc/etcd/etcd.conf
      # ETCDCTL_API=2 etcdctl --cert-file=$ETCD_PEER_CERT_FILE --key-file=$ETCD_PEER_KEY_FILE \
        --ca-file=/etc/etcd/ca.crt --endpoints=$ETCD_LISTEN_CLIENT_URLS member list
    5. 上記のコマンドの出力から ID を取得して、この ID で以前のメンバーを削除します。

      # etcdctl --cert-file=$ETCD_PEER_CERT_FILE --key-file=$ETCD_PEER_KEY_FILE \
        --ca-file=/etc/etcd/ca.crt --endpoints=$ETCD_LISTEN_CLIENT_URL member remove 1609b5a3a078c227
    6. 以前の etcd ホストで etcd サービスを停止して、無効化します。

      # systemctl stop etcd
      # systemctl disable etcd
  5. 以前のマスター API とコントローラーサービスをシャットダウンします。

    # systemctl stop atomic-openshift-master-api
  6. ネイティブのインストールプロセス時にデフォルトでロードバランサーとしてインストールされていた、マスターノードを、HA プロキシー設定から削除します。
  7. マシンの使用を停止します。

    1. 削除するマスター上の atomic-openshift-node サービスを停止します。

      # systemctl stop atomic-openshift-node
    2. ノードリソースを削除します。

      # oc delete node

8.6. ノードの移行

ノード上のサービスの実行方法やスケーリング方法、慣れた方法により、ノードを個別での移行や、グループ (2、5、10 ずつなど) 単位での移行が可能です。

  1. 移行するノードについては、新規データセンターでのノードの使用のために新規の仮想マシンをプロビジョニングします。
  2. 新規ノードを追加するには、インフラストラクチャーを拡大します。新規ノードのラベルが適切に設定されており、新規 API サーバーがロードバランサーに追加され、トラフィックを適切に送信していることを確認します。
  3. 評価し、縮小します。

    1. 現在のノード (古いデータセンター内にある) に「スケジュール対象外」のマークを付けます。
    2. ノードの退避を実行し、ノード上の Pod が他のノードにスケジュールされるようにします。
    3. 退避したサービスが新規ノードで実行されていることを確認します。
  4. ノードを削除します。

    1. ノードが空であり、実行中のプロセスがないことを確認します。
    2. サービスを停止するか、またはノードを削除します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.