docker
kubernetes
microservices
ibmcloudprivate

V2.1.0からV2.1.0.1にマイグレーションしてみた (Kubernetes / IBM Cloud Private)

はじめに

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 の設定が不要になりました。

/etc/k8s-icp/cluster/hosts
### 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ステップです。

1) インストールイメージを取得
2) 新しくディレクトリを作成
3) 各構成ファイルをコピー
4) config.yamlに各自の構成を追記
5) 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や,バックアップバージョンなどを指定します。

/opt/k8s-icp-2.1.0.1/cluster/config.yaml
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

メニューが整理されて分かりやすくなっています。
image.png

namespaceでフィルターして,Workloadを閲覧できるようになっています。
image.png

まとめ

今回は IBM Cloud Private をV2.1.0からV2.1.0.1にマイグレーションする手順を追ってみました。
手順はものすごく簡単でした。

V2.1.0.1では細かなユーザビリティ向上を含めて,機能追加やアップデートが行われています。
UI面で分かり易いのは,マルチテナント(例えば,組織や複数人)で利用する場合に必要となる
ロールベースアクセス制御 の使い勝手が向上している点かと思います。
試してみたい方は,LDAPを利用してUser/Teamとnamespaceを定義することでアクセス制御を確認できます。

V2.1.0.1のアップデート(箇条書き)はこちらを参照ください。

マイグレーション手順は簡単ということが分かりましたが,本番システムをイメージすると,
実運用におけるマルチノード構成の場合にどうやってマイグレーションするのか?
など気になることがあると思います。

また細かな運用ノウハウについては,別途投稿しようと思います。