はじめに
Kubernetes環境(IBM Cloud Private)を新しいバージョンにマイグレーションしてみたいと思います。
今回は,手順をざっと追ってみます。
適宜公式ページ(Upgrading from IBM® Cloud Private version 2.1.0 to 2.1.0.1) を参照ください。
対象環境
- IBM Cloud Private Community Edition (開発用途無償版) : V2.1.0
まだICPを導入しておらず,これから新規に V2.1.0.1 をインストールする場合は,以前の Qiita記事 を参考にバージョンを読み替えてください。
ちなみに,V2.1.0.1では EvictionPolicy の設定が不要になりました。
### before (as of V2.1.0)
[master]
10.132.75.83 kubelet_extra_args='["--eviction-hard=memory.available<100Mi,nodefs.available<2Gi,nodefs.inodesFree<5%", "--image-gc-high-threshold=100%", "--image-gc-low-threshold=100%"]'
...
### after (as of V2.1.0.1)
[master]
10.132.75.83
...
参考: Installing IBM Cloud Private-CE
参考: ICPクラスターのhostsの設定
早速マイグレーションしてみる
超シンプルな5ステップです。
- インストールイメージを取得
- 新しくディレクトリを作成
- 各構成ファイルをコピー
- config.yamlに各自の構成を追記
- V2.1.0.1をインストール
以下,手順に進みます。
クラスターを複数ノードで構成している場合は,Bootノードで実行します。
(今回はシングル構成です)
1) インストールイメージを取得
docker pull
でICPのインストールイメージ(Dockerイメージ)を取得します
# docker pull ibmcom/icp-inception:2.1.0.1
# docker images
以下のようなイメージが追加されていればOK
...
ibmcom/icp-inception 2.1.0.1 ee6cc00ff945 4 weeks ago 327MB
...
2) 新しくディレクトリを作成
以前,V2.1.0をインストールした際 は,/etc/k8s-icp
というディレクトリを作っていました。
今回は,V2.1.0.1用に,/etc/k8s-icp-2.1.0.1
ディレクトリを作成します。
# mkdir /opt/k8s-icp-2.1.0.1
# cd /opt/k8s-icp-2.1.0.1
次に,構成ファイルを抽出します。
構成ファイルを含んだclusterディレクトリが生成されます。
# docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.1 cp -r cluster /data
# ls
cluster
3) 各構成ファイルをコピー
古いICPクラスターディレクトリから,2)で作ったV2.1.0.1用のディレクトリに構成ファイルをコピーします。
from: /opt/k8s-icp/cluster/cfc-certs
to: /opt/k8s-icp-2.1.0.1/cluster
# cp -r /opt/k8s-icp/cluster/cfc-certs /opt/k8s-icp-2.1.0.1/cluster
# cp -r /opt/k8s-icp/cluster/cfc-keys /opt/k8s-icp-2.1.0.1/cluster
# cp -r /opt/k8s-icp/cluster/cfc-components /opt/k8s-icp-2.1.0.1/cluster
# cp /opt/k8s-icp/cluster/hosts /opt/k8s-icp-2.1.0.1/cluster
# cp /opt/k8s-icp/cluster/ssh_key /opt/k8s-icp-2.1.0.1/cluster
4) config.yamlに各自の構成を追記
UIへのアクセスIPや,バックアップバージョンなどを指定します。
default_admin_password: YOUR_PASSWORD // <== 任意のパスワードを設定
cluster_access_ip: 10.132.75.83 // <== IBM Cloud PrivateのコンソールアクセスIP
proxy_access_ip: 10.132.75.83 // <== リクエストを受け付けるプロキシーIP
glusterfs: false // <== falseを指定
backup_version: 2.1.0 // <== バックアップバージョンを追加
この他,クラスター構成をいじっている場合は同様に修正します。
参考: config.yamlファイル
5) V2.1.0.1をインストール
新バージョンをインストールします。
以下を順に行います。
5-1) クラスターアップグレードの準備
5-2) Kubernetesをアップグレード
5-3) 管理サービスをアップグレード
5-1) クラスターアップグレードの準備
# docker run -e LICENSE=accept --net=host --rm -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.1 upgrade-prepare
5-2) Kubernetesをアップグレード
# docker run -e LICENSE=accept --net=host --rm -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.1 upgrade-k8s
5-3) 管理サービスをアップグレード
# docker run -e LICENSE=accept --net=host --rm -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.1 upgrade-mgtsvc
以下のように,エラー無くダッシュボードURLが出力されれば完了です。
.
.
PLAY RECAP *********************************************************************
10.132.75.83 : ok=3 changed=1 unreachable=0 failed=0
localhost : ok=238 changed=78 unreachable=0 failed=0
POST DEPLOY MESSAGE ************************************************************
The Dashboard URL: https://10.132.75.83:8443, default username/password is xxxxx/xxxxx
Playbook run took 0 days, 0 hours, 21 minutes, 33 seconds
※アップグレードしている最中に,以下のように何度かリトライする場合があります。
※タイムアウトでエラー終了した場合は,再度コマンド実行してみてください。
TASK [cloudant : Deleting cloudant pods] ***************************************
changed: [localhost]
FAILED - RETRYING: Waiting for cloudant to start (50 retries left).
FAILED - RETRYING: Waiting for cloudant to start (49 retries left).
FAILED - RETRYING: Waiting for cloudant to start (48 retries left).
FAILED - RETRYING: Waiting for cloudant to start (47 retries left).
FAILED - RETRYING: Waiting for cloudant to start (46 retries left).
FAILED - RETRYING: Waiting for cloudant to start (45 retries left).
参考: トラブルシューティング
V2.1.0.1のコンソールにログイン
ブラウザで UI URLに接続 (インストール成功時に表示されたものです)
私の場合,
URL: https://10.132.75.83:8443
です。
Username: admin
Password: xxxxxx
namespaceでフィルターして,Workloadを閲覧できるようになっています。
まとめ
今回は IBM Cloud Private をV2.1.0からV2.1.0.1にマイグレーションする手順を追ってみました。
手順はものすごく簡単でした。
V2.1.0.1では細かなユーザビリティ向上を含めて,機能追加やアップデートが行われています。
UI面で分かり易いのは,マルチテナント(例えば,組織や複数人)で利用する場合に必要となる
ロールベースアクセス制御 の使い勝手が向上している点かと思います。
試してみたい方は,LDAPを利用してUser/Teamとnamespaceを定義することでアクセス制御を確認できます。
V2.1.0.1のアップデート(箇条書き)はこちらを参照ください。
マイグレーション手順は簡単ということが分かりましたが,本番システムをイメージすると,
実運用におけるマルチノード構成の場合にどうやってマイグレーションするのか?
など気になることがあると思います。
また細かな運用ノウハウについては,別途投稿しようと思います。