はじめに
このドキュメントでは、継続的に再起動するGrafanaポッドを回復する回避策について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Subscriber Microservices Infrastructure(SMI)Ultra Cloud Core Common Execution Environment(CEE)
- 5G Cloud Native Deployment Platform(CNDP)またはSMI-bare-metal(BM)アーキテクチャ
- DockersおよびKubernetes
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- スイス2020.02.2.35
- Kubernetes v1.21.0
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
バックグラウンド情報
SMIとは何ですか。
Cisco SMIは、クラウドテクノロジーとクラウド標準の階層型スタックであり、Cisco Mobility、Cable、Broadband Network Gateway(BNG)ビジネスユニットからのマイクロサービスベースのアプリケーションを可能にします。これらのアプリケーションには、同様の加入者管理機能と同様のデータストア要件があります。
属性:
- レイヤクラウドスタック(テクノロジーと標準)は、トップツーボトムの導入を提供し、現在のクラウドインフラストラクチャに対応します。
- すべてのアプリケーションが非アプリケーション機能(データストレージ、導入、設定、テレメトリ、アラーム)のCEEを共有し、すべてのカスタマータッチポイントと統合ポイントに一貫したインタラクションとエクスペリエンスを提供します。
- アプリケーションとCEEはマイクロサービスコンテナ内に導入され、インテリジェントサービスメッシュに接続されます。
- 導入、設定、管理のための公開されたAPIにより、自動化が可能になります。
SMI CEEとは何ですか。
- CEEは、SMI上に導入されたモバイルおよびケーブルアプリケーションを監視するために開発されたソフトウェアソリューションです。CEEは、エンジニアがデバッグやトラブルシューティングを行えるように、アプリケーションから情報(主要なメトリック)を一元的に取得します。
- CEEは、すべてのアプリケーションにインストールされる共通のツールセットです。専用のオペレーションセンターが付属しており、コマンドラインインターフェイス(CLI)とモニタツールを管理するAPIを提供します。各クラスタで使用できるCEEは1つだけです。
CEEポッドとは
- ポッドは、Kubernetesクラスタで実行されるプロセスです。ポッドは、コンテナと呼ばれる細かい単位をカプセル化します。ポッドには1つまたは複数のコンテナが含まれます。
- Kubernetesは、1つまたは複数のポッドを1つのノード(物理マシンまたは仮想マシン)に導入します。各ポッドには、内部IPアドレスとポート空間を持つ個別のIDがあります。ただし、ポッド内のコンテナは、ストレージとネットワークリソースを共有できます。CEEには、固有の機能を持つポッドが多数あります。GrafanaとPostgressは、いくつかのCEEポッドの1つです。
Grafana Podとは何ですか。
Grafanaポッドは、Prometheusという名前のPrometheusサービスを介してアクセスすることで、Prometheusポッドと通信できます。
Postgres Podとは何ですか。
Postgresは冗長性を備えたSQLデータベースをサポートし、アラートとGrafanaダッシュボードを保存します。
問題
Grafanaポッドは定期的に再起動し、Postgresポッドは問題なく動作します。
回復するには、次のコマンドを使用してGrafanaポッドを手動で削除します。
kubectl delete pod -n
削除すると、Grafanaポッドが再作成され、再起動されます。
問題が解決しない場合は、次のCLIコマンドを使用してCEEからサンプルアラートを取得し、問題を特定します。
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"
例:
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"
時間アラート名説明ポート・アクセスID重大度アラート・ソース
16:26 PCF_POD_Restarted " "処理エラーアラーム"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_883が再起動されました。" InService Major NETX
16:23 PCF_k8s-pod-crashing-loop " "Processing Error Alarm"} " "Pod cee-dnrce301/grafana-59768df649-n6x6x (grafana)が1.03回 / 5分で再起動しています。" インサービスクリティカルNETX
16:20 PCF_POD_Restarted " "処理エラーアラーム"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_882が再起動されました。" InService Major NETX
16:14 PCF_POD_Restarted " "Processing Error Alarm"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_881が再起動されました。" InService Major NETX
16:08 PCF_POD_Restarted " "Processing Error Alarm"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_880が再起動されました。" InService Major NETX
16:02 PCF_POD_Restarted " "Processing Error Alarm"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_879が再起動されました。" InService Major NETX
15:56 PCF_POD_Restarted " "Processing Error Alarm"} " "コンテナk8s_grafana_grafana-59768df649-n6x6x_cee-dnrce301_a4ff57名前空間cee-dnrce301内のpod grafana-59768df649-n6x6xの11-0e20-4dd4-ae7f-47296c334930_878が再起動されました。" InService Major NETX
15:53 PCF_k8s-pod-crashing-loop " "Processing Error Alarm"} " "Pod cee-dnrce301/grafana-59768df649-n6x6x (grafana)が1.03回 / 5分で再起動しています。" インサービスクリティカルNETX
回避策
CEEのシャットダウン
シャットダウンするには、CEEから次のコマンドを実行します。
[pod-name-smf/podname] cee# conf
Entering configuration mode terminal
[pod-name-smf/podname] cee(config)# system mode shutdown
[pod-name-smf/podname] cee(config)# commit
Commit complete.
[pod-name-smf/podname] cee(config)# end
システムが100 %に達するまで待ちます。
PostgresポッドのDBフォルダの削除
Postgresポッドが生成されたノードを確認します。
この例では、すべてのPostgresポッドが「master-1」で生成されます。
cloud-user@dnup0300-aio-1-master-1:~$ kubectl get pods -n cee-dnrce301 -o wide | grep postgres
postgres-0 1/1 Running 0 35d 10.108.50.28 dnup0300-aio-1-master-1 <none> <none>
postgres-1 1/1 Running 0 35d 10.108.50.47 dnup0300-aio-1-master-1 <none> <none>
postgres-2 1/1 Running 0 35d 10.108.50.102 dnup0300-aio-1-master-1 <none> <none>
このパスの各Postgresに対して、DBを保存するノードにフォルダが作成されます。
/data/<cee-namespace>/postgres<0,1,2>
次に示すように、これらのフォルダを削除します。
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-0
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-1
cloud-user@dnup0300-aio-1-master-1:/data/cee-dnrce301$ sudo rm -rf data-postgres-2
注:フォルダ"/data/<cee-namespace>/postgres<0,1,2>"が、master-1、master-2、master-3などの異なるノードで作成される場合があります。
CEEの復元
Ops CenterにログインしてCEEを復元し、次のCLIコマンドを実行します。
[pod-name-smf/podname] cee# conf
Entering configuration mode terminal
[pod-name-smf/podname] cee(config)# system mode running
[pod-name-smf/podname] cee(config)# commit
Commit complete.
[pod-name-smf/podname] cee(config)# end
[pod-name-smf/podname] cee# exit
システムが100 %に達するまで待ちます。
事後チェック
マスターからのKubernetesの確認
Grafanaポッドおよびその他のポッドのステータスを確認するには、次のコマンドを実行します。
cloud-user@pod-name-smf-master-1:~$ kubectl get pods -A -o wide | grep grafana
cloud-user@pod-name-smf-master-1:~$ kubectl get pods -A -o wide
再起動を行わなくても、すべてのポッドがUP状態であり、RUNNING状態であることを確認します。
CEEからアラートがクリアされたことの確認
次のコマンドを実行して、CEEからアラートがクリアされたことを確認します。
[pod-name-smf/podname] cee# show alerts active summary | include "POD_Res|k8s_grafana"