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.第5章 OpenShift のダウングレード
5.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の「アップグレード」後に、極端なケースではあるものの、クラスターを以前のバージョンにダウングレードする必要がある場合があります。以下のセクションでは、OpenShift Container Platform 3.10 から 3.9 へのダウングレードパスなどの、クラスターの各システムでダウングレードを実行するために必要な手順について説明します。
現時点で、これらの手順は OpenShift Container Platform の「RPM ベースのインストール」でのみサポートされており、クラスター全体でダウンタイムが生じることが前提とされています。
5.2. バックアップの確認 リンクのコピーリンクがクリップボードにコピーされました!
「アップグレードプロセス」で使用される Ansible playbook により、master-config.yaml ファイルのバックアップが作成されているはずです。このファイルと scheduler.json ファイルがマスターに存在しているようにしてください。
/etc/origin/master/master-config.yaml.<timestamp> /etc/origin/master/scheduler.json
/etc/origin/master/master-config.yaml.<timestamp> /etc/origin/master/scheduler.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 「自動アップグレードの準備」の手順では、OpenShift Container Platform 3.9 から 3.10 にアップグレードする前に、以下のファイルをバックアップするように指示されています。これらのファイルが利用できることを確認してください。
マスターホスト:
/usr/lib/systemd/system/atomic-openshift-master-api.service /usr/lib/systemd/system/atomic-openshift-master-controllers.service /etc/sysconfig/atomic-openshift-master-api /etc/sysconfig/atomic-openshift-master-controllers
/usr/lib/systemd/system/atomic-openshift-master-api.service /usr/lib/systemd/system/atomic-openshift-master-controllers.service /etc/sysconfig/atomic-openshift-master-api /etc/sysconfig/atomic-openshift-master-controllers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードとマスターホスト:
/usr/lib/systemd/system/atomic-openshift-*.service /etc/origin/node/node-config.yaml
/usr/lib/systemd/system/atomic-openshift-*.service /etc/origin/node/node-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd ホスト (etcd が共存するマスターを含む):
/etc/etcd/etcd.conf /backup/etcd-xxxxxx/backup.db
/etc/etcd/etcd.conf /backup/etcd-xxxxxx/backup.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. クラスターのシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
すべてのマスターおよびノードホストで、以下を実行します。
systemctl stop atomic-openshift-node
# systemctl stop atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. RPM と静的 Pod の削除 リンクのコピーリンクがクリップボードにコピーされました!
*-excluder パッケージは、インストール時に、エントリーをホストの /etc/yum.conf ファイルの exclude ディレクティブに追加します。
すべてのマスター、ノードおよび etcd メンバー (専用 etcd クラスターを使用している場合) で、以下のパッケージを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パッケージが正常に削除されたことを確認します。
rpm -qa | grep atomic-openshift
# rpm -qa | grep atomic-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールプレーンホスト (マスターおよび etcd ホスト) で静的な pod 定義を移動しましす。
mkdir /etc/origin/node/pods-backup mv /etc/origin/node/pods/* /etc/origin/node/pods-backup/
# mkdir /etc/origin/node/pods-backup # mv /etc/origin/node/pods/* /etc/origin/node/pods-backup/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ホストを再起動します。
systemctl reboot
# systemctl reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. Docker のダウングレード リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 3.9 も 3.10 も Docker 1.13 が必要ですので、Docker をダウングレードする必要はありません。
5.6. RPM の再インストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 3.10 のリポジトリーを無効にし、3.9 のリポジトリーを再び有効にします。
subscription-manager repos \ --disable=rhel-7-server-ose-3.10-rpms \ --enable=rhel-7-server-ose-3.9-rpms
# subscription-manager repos \ --disable=rhel-7-server-ose-3.10-rpms \ --enable=rhel-7-server-ose-3.9-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各マスターで、以下のパッケージをインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ノードで、以下のパッケージをインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ホストでパッケージが正常にインストールされたことを確認します。
rpm -qa | grep atomic-openshift rpm -q openvswitch
# rpm -qa | grep atomic-openshift # rpm -q openvswitch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7. 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
$ ssh master-0
# cp /backup/yesterday/master-0-files/etcd.conf /etc/etcd/etcd.conf
# restorecon -Rv /etc/etcd/etcd.conf
この例では、バックアップファイルは /backup/yesterday/master-0-files/etcd.conf
パスに保存されます。ここでは外部 NFS 共有、S3 バケットまたは他のストレージソリューションとして使用できます。
5.7.1. etcd v3 スナップショットの復元 リンクのコピーリンクがクリップボードにコピーされました!
スナップショットの整合性については、復元時にオプションで検証できます。スナップショットが etcdctl snapshot save
を使用して取得される場合、これには etcdctl snapshot restore
でチェックされる整合性ハッシュが含まれます。スナップショットがデータディレクトリーからコピーされる場合には整合性ハッシュはなく、復元は --skip-hash-check
を使用して実行されます。
v3 データのみを復元する手順は単一 etcd ホストで実行される必要があります。その後に残りのノードをクラスターに追加することができます。
手順
etcd サービスのマスク解除
systemctl unmask etcd
# systemctl unmask etcd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての 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 エラーメッセージの有無を確認します。
journalctl -fu etcd.service
# journalctl -fu etcd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.2. 復元後の etcd ノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
最初のインスタンスを実行後に、複数の etcd サーバーをクラスターに追加できます。
手順
ETCD_NAME
変数でインスタンスの etcd 名を取得します。grep ETCD_NAME /etc/etcd/etcd.conf
# grep ETCD_NAME /etc/etcd/etcd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd がピア通信をリッスンする IP アドレスを取得します。
grep ETCD_INITIAL_ADVERTISE_PEER_URLS /etc/etcd/etcd.conf
# grep ETCD_INITIAL_ADVERTISE_PEER_URLS /etc/etcd/etcd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードが以前のバージョンで etcd クラスターに含まれていた場合には、以前の etcd データを削除します。
rm -Rf /var/lib/etcd/*
# rm -Rf /var/lib/etcd/*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etcd が正しく実行されている etcd ホストで、新しいメンバーを追加します。
etcdctl3 member add *<name>* \ --peer-urls="*<advertise_peer_urls>*"
# etcdctl3 member add *<name>* \ --peer-urls="*<advertise_peer_urls>*"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドでは、以下のような変数が出力されます。
ETCD_NAME="master2" ETCD_INITIAL_CLUSTER="master-0.example.com=https://192.168.55.8:2380" ETCD_INITIAL_CLUSTER_STATE="existing"
ETCD_NAME="master2" ETCD_INITIAL_CLUSTER="master-0.example.com=https://192.168.55.8:2380" ETCD_INITIAL_CLUSTER_STATE="existing"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいホストの
/etc/etcd/etcd.conf
ファイルに、以前のコマンドからの値を追加します。vi /etc/etcd/etcd.conf
# vi /etc/etcd/etcd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターに参加するノードで etcd サービスを起動します。
systemctl start etcd.service
# systemctl start etcd.service
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 - すべての etcd ノードが追加されるまで、以前の手順を繰り返します。
全ノードを追加したら、クラスターのステータスと、健全性を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.8. 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 rm /etc/systemd/system/atomic-openshift-node.service systemctl daemon-reload systemctl enable atomic-openshift-node systemctl start atomic-openshift-node
# cp /etc/origin/node/node-config.yaml.<timestamp> /etc/origin/node/node-config.yaml # rm /etc/systemd/system/atomic-openshift-node.service # systemctl daemon-reload # systemctl enable atomic-openshift-node # systemctl start atomic-openshift-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.9. ダウングレードの検証 リンクのコピーリンクがクリップボードにコピーされました!
ダウングレードを検証するには、すべてのノードに Ready のマークが付けられていることを確認します。
oc get nodes
# oc get nodes NAME STATUS AGE master.example.com Ready,SchedulingDisabled 165d node1.example.com Ready 165d node2.example.com Ready 165d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされている場合には、レジストリーおよびルーターが正常にダウングレードされたことを確認します。
v3.9
バージョンの docker-registry と router のイメージを実行していることを確認します。oc get -n default dc/docker-registry -o json | grep \"image\" oc get -n default dc/router -o json | grep \"image\"
# oc get -n default dc/docker-registry -o json | grep \"image\" "image": "openshift3/ose-docker-registry:v3.9", # oc get -n default dc/router -o json | grep \"image\" "image": "openshift3/ose-haproxy-router:v3.9",
Copy to Clipboard Copied! Toggle word wrap Toggle overflow docker-registry と router pod が実行中で、Ready の状態であることを確認します。
oc get pods -n default
# oc get pods -n default NAME READY STATUS RESTARTS AGE docker-registry-2-b7xbn 1/1 Running 0 18m router-2-mvq6p 1/1 Running 0 6m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
「診断ツール」をマスターで使用し、共通の問題を検索し、提案される方法を確認します。
oc adm diagnostics
# oc adm diagnostics ... [Note] Summary of diagnostics execution: [Note] Completed with no errors or warnings seen.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow