2024-07-26 08:24 PM
HA CVIM-MON を 4.2.x から 4.4.x へアップグレードを行った際、prepare_cvimmon_upgrade コマンド実行中に kubectl cp がエラーを返す場合があります。本ドキュメントでは、そのエラーの原因と対策について説明します。
本ドキュメントで紹介する内容は CVIM 4.2.x および CVIM 4.4.x に基づいています。その他のバージョンでは内容が異なる場合があります。なお、HA CVIM MON の 4.2.x から 4.4.x へのアップグレードの方法につきましては、Administortor's Guide をご参照ください。下記アーティクルにおいてもご紹介していますのでこちらも合わせてご参照ください。
https://community.cisco.com/t5/-/-/ta-p/5077970
[HA CVIM-MON] HA CVIM MON の 4.2.x から 4.4.x へのアップグレード方法
HA CVIM MON を 4.2.x から 4.4.x へアップグレードする際、そのアップグレードの準備処理として prepare_cvimmon_upgrade コマンドを実行します。prepare_cvimmon_upgrade コマンドを実行した際、下記の例のように kubectl コマンドがエラーとなる場合があります。
例)
[root@jcvim-hamon-mgmt ~]# prepare_cvimmon_upgrade --storage_location /root/Databackup1 --backup_location /root/cvimmonha_backup_4.2.2_20240403_133728.tgz -st 4.2.2 -n 4.4.3 -d
==================================================================
CVIMMON PREPARE UPGRADE TOOL
==================================================================
2024-04-03 16:17:46,269 INFO Runner - Preparing for Cvimmon Upgrade from 4.2.2 to 4.4.3
2024-04-03 16:17:46,946 INFO Runner - Checking if the backup is good
2024-04-03 16:17:46,947 INFO Runner - Copying all required files
2024-04-03 16:17:46,960 INFO Runner - Enabling Admin API in all stacks
2024-04-03 16:18:07,903 INFO Runner - Creating Prometheus Snapshots
2024-04-03 16:18:28,181 INFO Runner - Copying snapshot to storage
error: unable to upgrade connection: container not found ("prometheus-server")
2024-04-03 16:18:28,374 ERROR Runner - Command '['/usr/bin/kubectl', 'cp', 'prometheus-stack-1-server-0:/data/snapshots/', '/root/Databackup1/snapshot_20240403_161746/stack-1', '-c', 'prometheus-server', '-n', 'stack-1']' returned non-zero exit status 1.
2024-04-03 16:18:28,374 ERROR Runner - ERROR: Failed running command : /usr/bin/kubectl cp prometheus-stack-1-server-0:/data/snapshots/ /root/Databackup1/snapshot_20240403_161746/stack-1 -c prometheus-server -n stack-1
error: unable to upgrade connection: container not found ("prometheus-server")
2024-04-03 16:18:28,936 ERROR Runner - Command '['/usr/bin/kubectl', 'cp', 'prometheus-cvimmon-monitor-server-1:/data/snapshots/', '/root/Databackup1/snapshot_20240403_161746/cvimmon-monitor', '-c', 'prometheus-server', '-n', 'cvimmon-monitor']' returned non-zero exit status 1.
2024-04-03 16:18:28,936 ERROR Runner - ERROR: Failed running command : /usr/bin/kubectl cp prometheus-cvimmon-monitor-server-1:/data/snapshots/ /root/Databackup1/snapshot_20240403_161746/cvimmon-monitor -c prometheus-server -n cvimmon-monitor
CVIMMON Snapshot Tool Completed Successfully!!
CVIMMON MINIO data backup started.................
Backup complete!
The logs for this run are available at /var/log/cvimmonha/20240403_161746_prepare_cvimmon_upgrade/prepare_cvimmon_upgrade.log
HA CVIM MON の Kubernetes クラスタノードは3台で構成されており、Prometheus はそのうちの2台のノードで稼働するように設計されています。通常、コンテナイメージは実行されるノードに保持されますので、3台のうちの1台のノード上にはイメージは作成されていません。
アップグレードでは、HA CVIM MON の mgmt ノードを、4.4.x のISOイメージを使って再構築し、その後にprepare_cvimmon_upgradeコマンドを実行します。コマンドを実行すると、Prometheusのバージョンアップ処理を行うために Prometheus deployment にパッチが適用され、この処理で Prometheus の Pod は作り直されます。この時、作り直しが再構築前と同じクラスタノードで処理された場合には、そのノードにはすでにコンテナイメージが保持されているため問題は生じません。しかし Prometheus の Pod がこれまで稼働したことのないクラスタノードで作り直しが実行された場合、そのノードは Prometheus のコンテナイメージを保持していないため Pod を作成することができず、エラーとなります。
prepare_cvimmon_upgrade コマンドを実行する前に、3台のクラスタノード全てで Prometheus の Pod の作成に必要なイメージを保持することでこの問題を回避することができます。以下の方法で3台のクラスタノードすべてで必要なイメージを保持します。
1) 3台のクラスタノードすべてで、docker images を実行して必要なコンテナイメージが存在しているかを確認します。
docker images | grep -e busybox -e configmap-reload -e prometheus
必要なコンテナイメージは以下の3つです。XXXは環境によって異なります。
XXX.XXX.XXX:5000/prom/prometheus v2.24.1 19162aa1f28d 3 years ago 173MB
XXX.XXX.XXX:5000/busybox 1.30 af2f74c517aa 5 years ago 1.2MB
XXX.XXX.XXX:5000/jimmidyson/configmap-reload v0.2.2 7a344aad0fdb 6 years ago 22.4MB
3台のクラスタノードの中に上記のコンテナイメージ3つが揃っていないノードが存在した場合は、コンテナイメージを保持しているノードからコンテナイメージをコピーする必要があります。
2) コンテナイメージを保持しているノードにログインし、コンテナイメージをアーカイブします。この例では、busyboxのイメージをアーカイブしています。
docker save -o /tmp/busybox.tar XXX.XXX.XXX:5000/busybox:1.30
3) アーカイブしたコンテナイメージを、コンテナイメージが不足しているノードにコピーします。
scp /tmp/busybox.tar root@<nodeip>:/root/busybox.tar
4) コンテナイメージが不足しているノードにログインして、アーカイブからコンテナイメージを作成します。
docker load -i /tmp/busybox.tar
5) docker images でイメージが作成されたことを確認します。
docker images
以下は実際の例です。この例では3台のクラスタノードのうち、cluster#1 (jcvim-ha1) に prometheus のコンテナイメージがありません。
[cluster#1]
[root@jcvim-ha1 ~]# docker images | grep -e busybox -e configmap-reload -e prometheus
172.21.190.75:5000/busybox 1.30 af2f74c517aa 5 years ago 1.2MB
172.21.190.75:5000/jimmidyson/configmap-reload v0.2.2 7a344aad0fdb 6 years ago 22.4MB
[root@jcvim-ha1 ~]#
[cluster#2]
[root@jcvim-ha2 ~]# docker images | grep -e busybox -e configmap-reload -e prometheus
172.21.190.75:5000/prom/prometheus v2.24.1 19162aa1f28d 3 years ago 173MB
172.21.190.75:5000/busybox 1.30 af2f74c517aa 5 years ago 1.2MB
172.21.190.75:5000/jimmidyson/configmap-reload v0.2.2 7a344aad0fdb 6 years ago 22.4MB
[root@jcvim-ha2 ~]#
[cluster#3]
[root@jcvim-ha3 ~]# docker images | grep -e busybox -e configmap-reload -e prometheus
172.21.190.75:5000/prom/prometheus v2.24.1 19162aa1f28d 3 years ago 173MB
172.21.190.75:5000/busybox 1.30 af2f74c517aa 5 years ago 1.2MB
172.21.190.75:5000/jimmidyson/configmap-reload v0.2.2 7a344aad0fdb 6 years ago 22.4MB
[root@jcvim-ha3 ~]#
そのため、cluster#2 で prometheus のコンテナイメージをアーカイブし、そのファイルを cluster#1 に展開します。
[root@jcvim-ha2 ~]# docker save -o /tmp/prometheus.tar 172.21.190.75:5000/prom/prometheus:v2.24.1
[root@jcvim-ha2 ~]# ls -l /tmp/
total 170008
-rwx------. 1 root root 1379 Apr 23 21:46 ks-script-02cipi34
-rwx------. 1 root root 4649 Apr 23 21:46 ks-script-8b8w20vm
-rwx------. 1 root root 488 Apr 23 21:46 ks-script-k6icpu1o
-rwx------. 1 root root 1512 Apr 23 21:46 ks-script-x623mqo3
-rw-------. 1 root root 2708 Apr 23 22:02 kube-apiserver.yaml.20240423220208
-rw-------. 1 root root 2708 Apr 23 22:02 kube-controller-manager.yaml.20240423220210
drwxr-xr-x. 2 root root 33 Apr 23 21:57 kubeadm-ha
-rw-------. 1 root root 174057472 Apr 24 09:00 prometheus.tar
drwx------. 3 root root 17 Apr 23 21:53 systemd-private-1ee37c98f4b44f9ea40dc34a39bfba00-chronyd.service-bqS3zG
[root@jcvim-ha2 ~]#
作成したアーカイブを cluster#1 にコピーします。
[root@jcvim-ha2 ~]# scp /tmp/prometheus.tar root@jcvim-ha1:/tmp/prometheus.tar
cluster#1 にログインし、コピーされたアーカイブからコンテナイメージを作成します。
[root@jcvim-ha1 ~]# docker load -i /tmp/prometheus.tar
de168d3b8ec4: Loading layer [==================================================>] 1.45MB/1.45MB
984b531aa9f1: Loading layer [==================================================>] 2.594MB/2.594MB
7e0d47847fab: Loading layer [==================================================>] 89.9MB/89.9MB
690380c0341c: Loading layer [==================================================>] 79.87MB/79.87MB
7d4d5ec72251: Loading layer [==================================================>] 3.584kB/3.584kB
87f81c9839e1: Loading layer [==================================================>] 13.82kB/13.82kB
5c7cac1a7f3b: Loading layer [==================================================>] 28.16kB/28.16kB
7b46efdfdb0f: Loading layer [==================================================>] 13.31kB/13.31kB
8fd21a6f217a: Loading layer [==================================================>] 5.12kB/5.12kB
4bdb927aad0b: Loading layer [==================================================>] 121.9kB/121.9kB
59a6523d22b0: Loading layer [==================================================>] 3.072kB/3.072kB
420f416041c8: Loading layer [==================================================>] 5.12kB/5.12kB
Loaded image: 172.21.190.75:5000/prom/prometheus:v2.24.1
[root@jcvim-ha1 ~]#
cluster#1 に、Prometheus の Pod の作成に必要なコンテナイメージが揃ったことを確認します。
[root@jcvim-ha1 ~]# docker images | grep -e busybox -e configmap-reload -e prometheus
172.21.190.75:5000/prom/prometheus v2.24.1 19162aa1f28d 3 years ago 173MB
172.21.190.75:5000/busybox 1.30 af2f74c517aa 5 years ago 1.2MB
172.21.190.75:5000/jimmidyson/configmap-reload v0.2.2 7a344aad0fdb 6 years ago 22.4MB
[root@jcvim-ha1 ~]#
3台のクラスタノード全てにPrometheus の Pod の作成に必要なコンテナイメージが保持された状態なので、prepare_cvimmon_upgrade コマンドを実行してもエラーは発生しません。
root@jcvim-hamon-mgmt ~]# prepare_cvimmon_upgrade --storage_location /root/Databackup1 --backup_location /var/cvimmonha_backup_4.2.2_20240424_100733.tgz -st 4.2.2 -n 4.4.3 -d
==================================================================
CVIMMON PREPARE UPGRADE TOOL
==================================================================
2024-04-24 11:18:31,578 INFO Runner - Preparing for Cvimmon Upgrade from 4.2.2 to 4.4.3
2024-04-24 11:18:32,232 INFO Runner - Checking if the backup is good
2024-04-24 11:18:32,233 INFO Runner - Copying all required files
2024-04-24 11:18:32,275 INFO Runner - Enabling Admin API in all stacks
2024-04-24 11:18:53,251 INFO Runner - Creating Prometheus Snapshots
2024-04-24 11:19:13,483 INFO Runner - Copying snapshot to storage
CVIMMON Snapshot Tool Completed Successfully!!
CVIMMON MINIO data backup started.................
Backup complete!
The logs for this run are available at /var/log/cvimmonha/20240424_111831_prepare_cvimmon_upgrade/prepare_cvimmon_upgrade.log
[root@jcvim-hamon-mgmt ~]#
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます