This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第3章 OpenShift Container Platform コンポーネントの復元
3.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、クラスターおよびそのコンポーネントの 復元 は、ノードおよびアプリケーションなどの要素を別のストレージから再作成することで実行できます。
クラスターを復元するには、まずバックアップを作成します。
以下のプロセスでは、アプリケーションおよび OpenShift Container Platform クラスターを復元するための通常の方法について説明しています。ここではカスタム要件は考慮されません。クラスターを復元するために追加のアクションを実行する必要がある可能性があります。
3.2. クラスターの復元 リンクのコピーリンクがクリップボードにコピーされました!
クラスターを復元するには、まず OpenShift Container Platform を再インストールします。
手順
- 最初に OpenShift Container Platform をインストールしたのと同じ方法で OpenShift Container Platform を再インストールします。
- OpenShift Container Platform の制御下にないサービスを変更したり、モニターエージェントなどの追加サービスのインストールなど、インストール後のカスタム手順すべてを実行します。
3.3. マスターホストのバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
重要なマスターホストファイルのバックアップを作成した後に、それらのファイルが破損しているか、または間違って削除された場合は、それらのファイルをマスターにコピーし直してファイルを復元し、それらに適切なコンテンツが含まれることを確認してから、影響を受けるサービスを再起動します。
手順
/etc/origin/master/master-config.yaml
ファイルを復元します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* cp /etc/origin/master/master-config.yaml /etc/origin/master/master-config.yaml.old cp /backup/$(hostname)/$(date +%Y%m%d)/origin/master/master-config.yaml /etc/origin/master/master-config.yaml master-restart api master-restart controllers
# MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* # cp /etc/origin/master/master-config.yaml /etc/origin/master/master-config.yaml.old # cp /backup/$(hostname)/$(date +%Y%m%d)/origin/master/master-config.yaml /etc/origin/master/master-config.yaml # master-restart api # master-restart controllers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告マスターサービスの再起動によりダウンタイムが生じる場合があります。ただし、マスターホストを可用性の高いロードバランサープールから削除し、復元操作を実行することができます。サービスが適切に復元された後に、マスターホストをロードバランサープールに再び追加することができます。
注記影響を受けるインスタンスを完全に再起動して、
iptables
設定を復元します。パッケージがないために OpenShift Container Platform を再起動できない場合は、パッケージを再インストールします。
現在インストールされているパッケージの一覧を取得します。
rpm -qa | sort > /tmp/current_packages.txt
$ rpm -qa | sort > /tmp/current_packages.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの一覧の間に存在する差分を表示します。
diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt ansible-2.4.0.0-5.el7.noarch
$ diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt > ansible-2.4.0.0-5.el7.noarch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 足りないパッケージを再インストールします。
yum reinstall -y <packages>
# yum reinstall -y <packages>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<packages>
は、パッケージの一覧ごとに異なるパッケージに置き換えます。
システム証明書を
/etc/pki/ca-trust/source/anchors/
ディレクトリーにコピーして復元し、update-ca-trust
を実行します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* sudo cp ${MYBACKUPDIR}/external_certificates/my_company.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust
$ MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* $ sudo cp ${MYBACKUPDIR}/external_certificates/my_company.crt /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ファイルをコピーし直す時に、ユーザー ID およびグループ ID だけでなく、
SELinux
コンテキストも復元されていることを常に確認してください。
3.4. ノードホストバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
重要なノードホストファイルのバックアップを作成した後に、それらのファイルが破損しているか、または間違って削除された場合、これらのファイルをコピーし直してファイルを復元し、適切なコンテンツが含まれることを確認してから、影響を受けるサービスを再起動します。
手順
/etc/origin/node/node-config.yaml
ファイルを復元します。MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) cp /etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml.old cp /backup/$(hostname)/$(date +%Y%m%d)/etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml systemctl restart atomic-openshift-node
# MYBACKUPDIR=/backup/$(hostname)/$(date +%Y%m%d) # cp /etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml.old # cp /backup/$(hostname)/$(date +%Y%m%d)/etc/origin/node/node-config.yaml /etc/origin/node/node-config.yaml # systemctl restart atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サービスの再起動によりダウンタイムが生じる場合があります。このプロセスを容易にするためのヒントについては、「ノードの保守」を参照してください。
影響を受けるインスタンスを完全に再起動して、iptables
設定を復元します。
パッケージがないために OpenShift Container Platform を再起動できない場合は、パッケージを再インストールします。
現在インストールされているパッケージの一覧を取得します。
rpm -qa | sort > /tmp/current_packages.txt
$ rpm -qa | sort > /tmp/current_packages.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージの一覧の間に存在する差分を表示します。
diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt ansible-2.4.0.0-5.el7.noarch
$ diff /tmp/current_packages.txt ${MYBACKUPDIR}/packages.txt > ansible-2.4.0.0-5.el7.noarch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 足りないパッケージを再インストールします。
yum reinstall -y <packages>
# yum reinstall -y <packages>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<packages>
は、パッケージの一覧ごとに異なるパッケージに置き換えます。
システム証明書を
/etc/pki/ca-trust/source/anchors/
ディレクトリーにコピーして復元し、update-ca-trust
を実行します。MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* sudo cp ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/my_company.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust
$ MYBACKUPDIR=*/backup/$(hostname)/$(date +%Y%m%d)* $ sudo cp ${MYBACKUPDIR}/etc/pki/ca-trust/source/anchors/my_company.crt /etc/pki/ca-trust/source/anchors/ $ sudo update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ファイルをコピーし直す時に、ユーザー ID およびグループ ID だけでなく、
SELinux
コンテキストも復元されていることを常に確認してください。
3.5. etcd の復元 リンクのコピーリンクがクリップボードにコピーされました!
etcd 設定ファイルの復元手順では、適切なファイルを置き換えてからサービスを再起動します。
etcd ホストが破損し、/etc/etcd/etcd.conf
ファイルが失われる場合は、以下を使用してこれを復元します。
ssh master-0 cp /backup/yesterday/master-0-files/etcd.conf /etc/etcd/etcd.conf restorecon -Rv /etc/etcd/etcd.conf systemctl restart etcd.service
$ ssh master-0
# cp /backup/yesterday/master-0-files/etcd.conf /etc/etcd/etcd.conf
# restorecon -Rv /etc/etcd/etcd.conf
# systemctl restart etcd.service
この例では、バックアップファイルは /backup/yesterday/master-0-files/etcd.conf
パスに保存されます。ここでは外部 NFS 共有、S3 バケットまたは他のストレージソリューションとして使用できます。
3.5.1. etcd v2 および v3 データの復元 リンクのコピーリンクがクリップボードにコピーされました!
以下のプロセスでは正常なデータファイルを復元し、etcd クラスターを単一ノードとして起動してから、etcd クラスターが必要な場合に残りのノードを追加します。
手順
すべての etcd サービスを停止します。
systemctl stop etcd.service
# systemctl stop etcd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 適切なバックアップが復元されていることを確認するには、etcd ディレクトリーを削除します。
ディレクトリーを削除する前に現在の etcd データをバックアップするには、以下のコマンドを実行します。
mv /var/lib/etcd /var/lib/etcd.old mkdir /var/lib/etcd chown -R etcd.etcd /var/lib/etcd/ restorecon -Rv /var/lib/etcd/
# mv /var/lib/etcd /var/lib/etcd.old # mkdir /var/lib/etcd # chown -R etcd.etcd /var/lib/etcd/ # restorecon -Rv /var/lib/etcd/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、ディレクトリーおよび etcd、データを削除するには、以下のコマンドを実行します。
rm -Rf /var/lib/etcd/*
# rm -Rf /var/lib/etcd/*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記オールインワンクラスターの場合、etcd データディレクトリーは
/var/lib/origin/openshift.local.etcd
ディレクトリーに置かれます。
正常なバックアップデータファイルをそれぞれの etcd ノードに復元します。この手順は、etcd と同じ場所に配置されているマスターホストを含むすべての etcd ホストで実行します。
cp -R /backup/etcd-xxx/* /var/lib/etcd/ mv /var/lib/etcd/db /var/lib/etcd/member/snap/db chcon -R --reference /backup/etcd-xxx/* /var/lib/etcd/ chown -R etcd:etcd /var/lib/etcd/R
# cp -R /backup/etcd-xxx/* /var/lib/etcd/ # mv /var/lib/etcd/db /var/lib/etcd/member/snap/db # chcon -R --reference /backup/etcd-xxx/* /var/lib/etcd/ # chown -R etcd:etcd /var/lib/etcd/R
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ホストで etcd サービスを実行し、新規クラスターを強制的に実行します。
これにより etcd サービスのカスタムファイルが作成されます。これにより、
--force-new-cluster
オプションを追加して実行コマンドが上書きされます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージの有無を確認します。
journalctl -fu etcd.service
$ journalctl -fu etcd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正常性のステータスを確認します。
etcdctl2 cluster-health
# etcdctl2 cluster-health member 5ee217d17301 is healthy: got healthy result from https://192.168.55.8:2379 cluster is healthy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターモードで etcd サービスを再起動します。
rm -f /etc/systemd/system/etcd.service.d/temp.conf systemctl daemon-reload master-restart etcd
# rm -f /etc/systemd/system/etcd.service.d/temp.conf # systemctl daemon-reload # master-restart etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 正常性のステータスとメンバーの一覧を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 最初のインスタンスの実行後に、残りの etcd サーバーを復元できます。
3.5.1.1. peerURLS パラメーターの修正 リンクのコピーリンクがクリップボードにコピーされました!
データの復元および新規クラスターの作成後に、peerURLs
パラメーターは、 etcd がピア通信をリッスンする IP の代わりに localhost
を示します。
etcdctl2 member list
# etcdctl2 member list
5ee217d17301: name=master-0.example.com peerURLs=http://*localhost*:2380 clientURLs=https://192.168.55.8:2379 isLeader=true
3.5.1.1.1. 手順 リンクのコピーリンクがクリップボードにコピーされました!
etcdctl member list
を使用してメンバー ID を取得します。`etcdctl member list`
`etcdctl member list`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd がピア通信をリッスンする IP を取得します。
ss -l4n | grep 2380
$ ss -l4n | grep 2380
Copy to Clipboard Copied! Toggle word wrap Toggle overflow メンバー情報をこの IP で更新します。
etcdctl2 member update 5ee217d17301 https://192.168.55.8:2380
# etcdctl2 member update 5ee217d17301 https://192.168.55.8:2380 Updated member with ID 5ee217d17301 in cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 検証するには、IP がメンバーの一覧にあることを確認します。
etcdctl2 member list
$ etcdctl2 member list 5ee217d17301: name=master-0.example.com peerURLs=https://*192.168.55.8*:2380 clientURLs=https://192.168.55.8:2379 isLeader=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.2. etcd v3 スナップショットの復元 リンクのコピーリンクがクリップボードにコピーされました!
v3 データの復元手順は v2 データの復元プロセスと同様です。
スナップショットの整合性については、復元時にオプションで検証できます。スナップショットが etcdctl snapshot save
で取得される場合、これには etcdctl snapshot restore
でチェックされる整合性ハッシュが含まれます。スナップショットがデータディレクトリーからコピーされる場合には整合性ハッシュはなく、--skip-hash-check
を使用して実行されます。
v3 データのみを復元する手順は単一 etcd ホストで実行される必要があります。その後に残りのノードをクラスターに追加することができます。
手順
すべての etcd サービスを停止します。
systemctl stop etcd.service
# systemctl stop etcd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古いデータについては、
etcdctl
が復元手順が実行されるノードでその再作成を実行するため、それらすべてをクリアします。rm -Rf /var/lib/etcd
# rm -Rf /var/lib/etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow snapshot restore
コマンドを実行し、/etc/etcd/etcd.conf
ファイルの値を置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow パーミッションおよび
selinux
コンテキストを復元ファイルに復元します。chown -R etcd.etcd /var/lib/etcd/ restorecon -Rv /var/lib/etcd
# chown -R etcd.etcd /var/lib/etcd/ # restorecon -Rv /var/lib/etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd サービスを起動します。
systemctl start etcd
# systemctl start etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エラーメッセージの有無を確認します。
master-logs etcd etcd
# master-logs etcd etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. etcd ノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
etcd の復元後、他の etcd ノードをクラスターに追加できます。Ansible Playbook を使用するか、または手動の手順を実行して etcd ホストを追加できます。
3.6.1. Ansible を使用した新規 etcd ホストの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
Ansible インベントリーファイルで、
[new_etcd]
という名前の新規グループを作成し、新規ホストを追加します。次に、new_etcd
グループを[OSEv3]
グループの子として追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform がインストールされており、Ansible インベントリーファイルをホストするホストから、etcd
scaleup
Playbook を実行します。ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-etcd/scaleup.yml
$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-etcd/scaleup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook が実行された後に、新規 etcd ホストを
[new_etcd]
グループから[etcd]
グループに移行し、現在のステータスを反映するようにインベントリーファイルを変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Flannel を使用する場合には、OpenShift Container Platform のホストごとに、
/etc/sysconfig/flanneld
にあるflanneld
サービス設定を変更し、新しい etcd ホストを追加します。FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flanneld
サービスを再起動します。systemctl restart flanneld.service
# systemctl restart flanneld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2. 新規 etcd ホストの手動による追加 リンクのコピーリンクがクリップボードにコピーされました!
手順
現在の etcd クラスターの変更
etcd 証明書を作成するには、値を環境の値に置き換えて openssl
コマンドを実行します。
環境変数を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記etcd_v3_ca_*
として使用されるカスタムのopenssl
拡張には、subjectAltName
としての $SAN 環境変数が含まれます。詳細は、/etc/etcd/ca/openssl.cnf
を参照してください。設定および証明書を保存するディレクトリーを作成します。
mkdir -p ${PREFIX}
# mkdir -p ${PREFIX}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバー証明書要求を作成し、これに署名します (server.csr および server.crt)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ピア証明書要求を作成し、これに署名します (peer.csr および peer.crt)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 後で変更できるように、現在の etcd 設定および
ca.crt
ファイルをサンプルとして現在のノードからコピーします。cp /etc/etcd/etcd.conf ${PREFIX} cp /etc/etcd/ca.crt ${PREFIX}
# cp /etc/etcd/etcd.conf ${PREFIX} # cp /etc/etcd/ca.crt ${PREFIX}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 存続する etcd ホストから、新規ホストをクラスターに追加します。etcd メンバーをクラスターに追加するには、まず最初のメンバーの
peerURLs
値のデフォルトの localhost ピアを調整する必要があります。member list
コマンドを使用して最初のメンバーのメンバー ID を取得します。etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member list
# etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \
1 member list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
--peers
パラメーター値でアクティブな etcd メンバーのみの URL を指定するようにしてください。
etcd がクラスターピアについてリッスンする IP アドレスを取得します。
ss -l4n | grep 2380
$ ss -l4n | grep 2380
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 直前の手順で取得されたメンバー ID および IP アドレスを渡して、
etcdctl member update
コマンドを使用してpeerURLs
の値を更新します。etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member update 511b7fb6cc0001 https://172.18.1.18:2380
# etcdctl --cert-file=/etc/etcd/peer.crt \ --key-file=/etc/etcd/peer.key \ --ca-file=/etc/etcd/ca.crt \ --peers="https://172.18.1.18:2379,https://172.18.9.202:2379,https://172.18.0.75:2379" \ member update 511b7fb6cc0001 https://172.18.1.18:2380
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
member list
コマンドを再実行し、ピア URL に localhost が含まれなくなるようにします。
新規ホストを etcd クラスターに追加します。新規ホストはまだ設定されていないため、新規ホストを設定するまでステータスが
unstarted
のままであることに注意してください。警告各メンバーを追加し、1 回に 1 つずつメンバーをオンライン状態にします。各メンバーをクラスターに追加する際に、現在のピアの
peerURL
一覧を調整する必要があります。peerURL
一覧はメンバーが追加されるたびに拡張します。etcdctl member add
コマンドは、以下に説明されているように、メンバーを追加する際に etcd.conf ファイルで設定する必要のある値を出力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この行で、
10.3.9.222
は etcd メンバーのラベルです。ホスト名、IP アドレスまたは単純な名前を指定できます。
サンプル
${PREFIX}/etcd.conf
ファイルを更新します。以下の値を直前の手順で生成された値に置き換えます。
- ETCD_NAME
- ETCD_INITIAL_CLUSTER
- ETCD_INITIAL_CLUSTER_STATE
以下の変数は、直前の手順で出力された新規ホストの IP に変更します。
${NEW_ETCD_IP}
は、値として使用できます。ETCD_LISTEN_PEER_URLS ETCD_LISTEN_CLIENT_URLS ETCD_INITIAL_ADVERTISE_PEER_URLS ETCD_ADVERTISE_CLIENT_URLS
ETCD_LISTEN_PEER_URLS ETCD_LISTEN_CLIENT_URLS ETCD_INITIAL_ADVERTISE_PEER_URLS ETCD_ADVERTISE_CLIENT_URLS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - メンバーシステムを etcd ノードとして使用していた場合には、/etc/etcd/etcd.conf ファイルの現在の値を上書きする必要があります。
ファイルで構文エラーや欠落している IP アドレスがないかを確認します。エラーや欠落がある場合には、etced サービスが失敗してしまう可能性があります。
vi ${PREFIX}/etcd.conf
# vi ${PREFIX}/etcd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
インストールファイルをホストするノードでは、/etc/ansible/hosts インベントリーファイルの
[etcd]
ホストグループを更新します。古い etcd ホストを削除し、新規ホストを追加します。 証明書、サンプル設定ファイル、および
ca
を含むtgz
ファイルを作成し、これを新規ホストにコピーします。tar -czvf /etc/etcd/generated_certs/${CN}.tgz -C ${PREFIX} . scp /etc/etcd/generated_certs/${CN}.tgz ${CN}:/tmp/
# tar -czvf /etc/etcd/generated_certs/${CN}.tgz -C ${PREFIX} . # scp /etc/etcd/generated_certs/${CN}.tgz ${CN}:/tmp/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新規 etcd ホストの変更
iptables-services
をインストールして etcd の必要なポートを開くために iptables ユーティリティーを指定します。yum install -y iptables-services
# yum install -y iptables-services
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd の通信を許可する
OS_FIREWALL_ALLOW
ファイアウォールルールを作成します。- クライアントのポート 2379/tcp
ピア通信のポート 2380/tcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この例では、新規チェーン
OS_FIREWALL_ALLOW
が作成されます。これは、OpenShift Container Platform インストーラーがファイアウォールルールに使用する標準の名前になります。警告環境が IaaS 環境でホストされている場合には、インスタンスがこれらのポートに入ってくるトラフィックを許可できるように、セキュリティーグループを変更します。
etcd をインストールします。
yum install -y etcd
# yum install -y etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バージョン
etcd-2.3.7-4.el7.x86_64
以降がインストールされていることを確認します。etcd サービスが実行されていないことを確認します。
systemctl disable etcd --now
# systemctl disable etcd --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd 設定およびデータを削除します。
rm -Rf /etc/etcd/* rm -Rf /var/lib/etcd/*
# rm -Rf /etc/etcd/* # rm -Rf /var/lib/etcd/*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書および設定ファイルを展開します。
tar xzvf /tmp/etcd0.example.com.tgz -C /etc/etcd/
# tar xzvf /tmp/etcd0.example.com.tgz -C /etc/etcd/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイル所有者のパーミッションを変更します。
chown -R etcd/etcd /etc/etcd/* chown -R etcd/etcd /var/lib/etcd/
# chown -R etcd/etcd /etc/etcd/* # chown -R etcd/etcd /var/lib/etcd/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ホストで etcd を起動します。
systemctl enable etcd --now
# systemctl enable etcd --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ホストがクラスターの一部であることと現在のクラスターの正常性を確認します。
v2 etcd api を使用する場合は、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow v3 etcd api を使用する場合は、以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
各 OpenShift Container Platform マスターの変更
すべてのマスターの
/etc/origin/master/master-config.yaml
ファイルのetcClientInfo
セクションでマスター設定を変更します。新規 etcd ホストを、データを保存するために OpenShift Container Platform が使用する etcd サーバーの一覧に追加し、失敗したすべての etcd ホストを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マスター API サービスを再起動します。
全マスターのインストールに対しては、以下を実行します。
systemctl restart atomic-openshift-master-api
# systemctl restart atomic-openshift-master-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、単一マスタークラスターのインストールでは以下を実行してください。
#systemctl restart atomic-openshift-master
#systemctl restart atomic-openshift-master
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告etcd ノードの数は奇数でなければなりません。そのため、2 つ以上のホストを追加する必要があります。
Flannel を使用する場合、新規 etcd ホストを組み込むために、すべての OpenShift Container Platform ホストの
/etc/sysconfig/flanneld
にあるflanneld
サービス設定を変更します。FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379,https://etcd0.example.com:2379
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flanneld
サービスを再起動します。systemctl restart flanneld.service
# systemctl restart flanneld.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. OpenShift Container Platform サービスの再オンライン化 リンクのコピーリンクがクリップボードにコピーされました!
変更を終了した後に、OpenShift Container Platform をオンラインに戻します。
手順
それぞれの OpenShift Container Platform マスターで、バックアップからマスターおよびノード設定を復元し、すべての関連するサービスを有効にしてから再起動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各 OpenShift Container Platform ノードで、必要に応じてノードの設定マップを更新し、atomic-openshift-node サービスを有効化して再起動します。
cp /etc/origin/node/node-config.yaml.<timestamp> /etc/origin/node/node-config.yaml systemctl enable atomic-openshift-node systemctl start atomic-openshift-node
# cp /etc/origin/node/node-config.yaml.<timestamp> /etc/origin/node/node-config.yaml # systemctl enable atomic-openshift-node # systemctl start atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8. プロジェクトの復元 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを復元するには、oc create -f pods.json
を実行して新規プロジェクトを作成してから、エクスポートされたファイルを復元します。ただし、プロジェクトをゼロから復元するには、一部のプロジェクトが他のプロジェクトに依存していることから特定の順序を指定する必要があります。たとえば、pods
を作成する前に configmaps
を作成する必要があります。
手順
プロジェクトが単一ファイルとしてエクスポートされている場合は、以下のコマンドを実行してこのファイルをインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告Pod およびデフォルトサービスアカウントなどの一部のリソースは作成できない場合があります。
project_export.sh
スクリプトを使用してプロジェクトをエクスポートした場合、ファイルはprojectname
ディレクトリーにあります。それらは、project_import.sh
スクリプトを再度実行してインポートできます。このスクリプトは適切な順序でoc create
プロセスを実行します。mkdir ~/git cd ~/git git clone https://github.com/openshift/openshift-ansible-contrib.git cd openshift-ansible-contrib/reference-architecture/day2ops/scripts ./project_import.sh <projectname_path>
$ mkdir ~/git $ cd ~/git $ git clone https://github.com/openshift/openshift-ansible-contrib.git $ cd openshift-ansible-contrib/reference-architecture/day2ops/scripts $ ./project_import.sh <projectname_path>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記serviceaccounts
およびシークレットなどの一部のオブジェクトがプロジェクト作成時に自動的に作成されるためにAlreadyExists
エラーが表示される場合があります。buildconfigs
を使用するかどうかを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow buildconfigs
を使用する場合、ビルドは自動的にトリガーされず、アプリケーションは実行されません。buildconfigs
を使用する場合、ビルドをトリガーするにはoc start-build
コマンドを実行します。for bc in $(oc get bc -o jsonpath="{.items[*].metadata.name}") do oc start-build ${bc} done
$ for bc in $(oc get bc -o jsonpath="{.items[*].metadata.name}") do oc start-build ${bc} done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod はビルドの完了後にデプロイされます。
プロジェクトが復元されたことを確認するには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記サービスおよび Pod IP アドレスは作成時に動的に割り当てられるので異なります。
3.9. アプリケーションデータの復元 リンクのコピーリンクがクリップボードにコピーされました!
rsync
がコンテナーイメージ内にインストールされていることを前提とすると、アプリケーションデータは oc rsync
コマンドを使用して復元できます。Red Hat rhel7 ベースイメージには rsync
が含まれるので、rhel7 をベースとするすべてのイメージにもこれが含まれます。「CLI 操作のトラブルシューティングおよびデバッグ - rsync」を参照してください。
これはアプリケーションデータの 汎用的な 復元についての説明であり、データベースシステムの特殊なエクスポート/インポート手順などのアプリケーション固有のバックアップ手順については考慮に入れられていません。
使用する永続ボリュームのタイプ (Cinder、NFS、Gluster など) によっては、他の復元手段を使用できる場合もあります。
手順
Jenkins デプロイメントのアプリケーションデータの復元例
バックアップを確認します。
ls -la /tmp/jenkins-backup/
$ ls -la /tmp/jenkins-backup/ total 8 drwxrwxr-x. 3 user user 20 Sep 6 11:14 . drwxrwxrwt. 17 root root 4096 Sep 6 11:16 .. drwxrwsrwx. 12 user user 4096 Sep 6 11:14 jenkins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsync
ツールを使用してデータを実行中の Pod にコピーします。oc rsync /tmp/jenkins-backup/jenkins jenkins-1-37nux:/var/lib
$ oc rsync /tmp/jenkins-backup/jenkins jenkins-1-37nux:/var/lib
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記アプリケーションによっては、アプリケーションを再起動する必要があります。
オプションとして、新規データを使ってアプリケーションを再起動します。
oc delete pod jenkins-1-37nux
$ oc delete pod jenkins-1-37nux
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、デプロイメントを 0 にスケールダウンしてから再びスケールアップします。
oc scale --replicas=0 dc/jenkins oc scale --replicas=1 dc/jenkins
$ oc scale --replicas=0 dc/jenkins $ oc scale --replicas=1 dc/jenkins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10. Persistent Volume Claim (永続ボリューム要求、PVC) の復元 リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、データを復元するための 2 つの方法について説明します。最初の方法ではファイルを削除してから、ファイルを予想される場所に戻します。2 つ目の例では、PVC を移行する方法を示します。この移行は、ストレージを移動する必要がある場合や、バックアップストレージがなくなるなどの障害発生時の状況で実行されます。
データをアプリケーションに復元する手順について、特定のアプリケーションについての復元手順を確認してください。
3.10.1. ファイルの既存 PVC への復元 リンクのコピーリンクがクリップボードにコピーされました!
手順
ファイルを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC にあったファイルの rsync バックアップが含まれるサーバーのファイルを置き換えます。
oc rsync uploaded demo-2-fxx6d:/opt/app-root/src/
$ oc rsync uploaded demo-2-fxx6d:/opt/app-root/src/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh
を使用してファイルが Pod に戻されていることを確認し、Pod に接続してディレクトリーのコンテンツを表示します。oc rsh demo-2-fxx6d
$ oc rsh demo-2-fxx6d sh-4.2$ *ls /opt/app-root/src/uploaded/* lost+found ocp_sop.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.2. データの新規 PVC への復元 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、新規 pvc
が作成されていることを前提としています。
手順
現在定義されている
claim-name
を上書きします。oc volume dc/demo --add --name=persistent-volume \ --type=persistentVolumeClaim --claim-name=filestore \ --mount-path=/opt/app-root/src/uploaded --overwrite
$ oc volume dc/demo --add --name=persistent-volume \ --type=persistentVolumeClaim --claim-name=filestore \ --mount-path=/opt/app-root/src/uploaded --overwrite
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod が新規 PVC を使用していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメント設定では新規の
pvc
を使用しているため、oc rsync
を実行してファイルを新規のpvc
に配置します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc rsh
を使用してファイルが Pod に戻されていることを確認し、Pod に接続してディレクトリーのコンテンツを表示します。oc rsh demo-3-2b8gs
$ oc rsh demo-3-2b8gs sh-4.2$ ls /opt/app-root/src/uploaded/ lost+found ocp_sop.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow