CSN ストレージ ポッド コンテナーが ContainerCreating
で停止している
このドキュメントでは、CSN ストレージ ポッドが ContainerCreating
状態になる可能性がある、まれな問題のユーザー エクスペリエンスについて詳しく説明します。 この問題を解決するための回避策も示します。
原因
ランタイム アップグレードではベアメタル ノードのオペレーティング システムが置き換えられます。これにより、IQN (iSCSI 修飾名) が再作成され、まれに iscsi ログイン エラーが発生する可能性があります。 iscsi エラーは、ポータルのログインが成功しない特定のノードで発生します。 このガイドでは、この特定の問題の解決策を示します。
このガイドでは、問題を解決するために Volumeattachment を削除し、ポッドを再起動するプロセスを簡単に説明します。
プロセス
ポッドが ContainerCreating
状態のままである理由を確認します。
Warning FailedMapVolume 52s (x19 over 23m) kubelet MapVolume.SetUpDevice failed for volume "pvc-b38dcc54-5e57-435a-88a0-f91eac594e18" : rpc error: code = Internal desc = required at least 2 portals but found 0 portals
ここでは、問題が発生した baremetal_machine
のみに焦点を当てます。
次の実行コマンドを実行して、ポッドが containerCreating で停止する問題を解決します
az networkcloud baremetalmachine run-command --bare-metal-machine-name <control-plane-baremetal-machine> \
--subscription <subscription> \
--resource-group <cluster-managed-resource-group> \
--limit-time-seconds 60 \
--script "cG9kcz0kKGt1YmVjdGwgZ2V0IHBvZHMgLW4gbmMtc3lzdGVtIHxncmVwIC1pIGNvbnRhaW5lcmNyZWF0aW5nIHwgYXdrICd7cHJpbnQgJDF9JykKCmZvciBwb2RuYW1lIGluICRwb2RzOyBkbwogICAga3ViZWN0bCBkZXNjcmliZSBwbyAkcG9kbmFtZSAtbiBuYy1zeXN0ZW0KCiAgICBwdmNuYW1lPSQoa3ViZWN0bCBnZXQgcG8gJHBvZG5hbWUgLW4gbmMtc3lzdGVtIC1vIGpzb24gfCBqcSAtciAnLnNwZWMudm9sdW1lc1swXS5wZXJzaXN0ZW50Vm9sdW1lQ2xhaW0uY2xhaW1OYW1lJykKCiAgICBwdm5hbWU9JChrdWJlY3RsIGdldCBwdmMgJHB2Y25hbWUgLW4gbmMtc3lzdGVtIC1vIGpzb24gfCBqcSAtciAnLnNwZWMudm9sdW1lTmFtZScpCgogICAgbm9kZW5hbWU9JChrdWJlY3RsIGdldCBwbyAkcG9kbmFtZSAtbiBuYy1zeXN0ZW0gLW9qc29uIHwganEgLXIgJy5zcGVjLm5vZGVOYW1lJykKCiAgICB2b2xhdHRhY2hOYW1lPSQoa3ViZWN0bCBnZXQgdm9sdW1lYXR0YWNobWVudCB8IGdyZXAgLWkgJHB2bmFtZSB8IGF3ayAne3ByaW50ICQxfScpCgogICAga3ViZWN0bCBkZWxldGUgdm9sdW1lYXR0YWNobWVudCAkdm9sYXR0YWNoTmFtZQoKICAgIGt1YmVjdGwgY29yZG9uICRub2RlbmFtZSAtbiBuYy1zeXN0ZW07a3ViZWN0bCBkZWxldGUgcG8gLW4gbmMtc3lzdGVtICRwb2RuYW1lCmRvbmU="
run コマンドでは次のスクリプトが実行されます。
pods=$(kubectl get pods -n nc-system |grep -i containercreating | awk '{print $1}')
for podname in $pods; do
kubectl describe po $podname -n nc-system
pvcname=$(kubectl get po $podname -n nc-system -o json | jq -r '.spec.volumes[0].persistentVolumeClaim.claimName')
pvname=$(kubectl get pvc $pvcname -n nc-system -o json | jq -r '.spec.volumeName')
nodename=$(kubectl get po $podname -n nc-system -ojson | jq -r '.spec.nodeName')
volattachName=$(kubectl get volumeattachment | grep -i $pvname | awk '{print $1}')
kubectl delete volumeattachment $volattachName
kubectl cordon $nodename -n nc-system;kubectl delete po -n nc-system $podname
done
このコマンドはポッドから pvc を取得し、volumeattachment
オブジェクトを削除します。 その後、ポッドを削除します。 ポッドは、成功した volume attachment オブジェクトと共に、後で別のノード上に再作成されます。
さらに不明な点がある場合は、サポート にお問い合わせください。 サポート プランの詳細については、Azure サポート プランに関するページを参照してください。