OpenStack 上の Kubernetes CSI がノードに不正なノード ID アノテーションを追加する

OpenStack 上の Kubernetes CSI がノードに不正なノード ID アノテーションを追加する

Cinder CSIプラグインを設定しようとしています(https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md) を Kubernetes クラスター (OpenStack インスタンスにインストール) にインストールします。

すべて正常に動作します (PV、PVC、および実際の Cinder ボリュームは正常に作成されます) が、csi-attacherCinder ボリュームをノードに接続しようとすると、次のエラーで失敗します。

Error processing "csi-0c1aee9c7e99bc90a586541a4bb7974e38978dc3a2c441a1ad1413d7435d886c": failed to attach: rpc error: code = Unknown desc = failed to attach 445d9931-9e32-48b5-b765-209a4526691f volume to i-0031336c compute: Resource not found

ただし、ボリューム ID は正しいことに注意してください。

> cinder list | grep 445d9931-9e32-48b5-b765-209a4526691f
| 445d9931-9e32-48b5-b765-209a4526691f | available | pvc-788eb00a-99bc-11e9-b7dc-fa163eb3415c | 1    | classic     | false    |                                      |

私のノードはi-0031336c実際の UUID ではありません:

> nova list | grep worker03-dev
| 9d7cd2bb-a365-4276-86ed-f4884132c361 | worker03-dev     | ACTIVE | -          | Running     | Ext-Net=<redacted>    |

理由はわかりませんが、何か (私はまだ CSI 側の専門家ではありません) が間違った ID の注釈をノードに追加しています。

> kubectl get node worker03-dev.node.consul -o yaml | grep nodeid
    csi.volume.kubernetes.io/nodeid: '{"cinder.csi.openstack.org":"i-0031336c"}'

ホストから OpenStack API をクエリすると、正しい UUID も返されます。

root@worker03-dev ~ # curl -s 169.254.169.254/openstack/latest/meta_data.json | jq '.uuid'
"9d7cd2bb-a365-4276-86ed-f4884132c361"

何か完全に間違っているのでしょうか?

以下の CSI コンテナを実行します。

image: quay.io/k8scsi/csi-attacher:v1.1.1
image: quay.io/k8scsi/csi-provisioner:v1.0.1
image: quay.io/k8scsi/csi-snapshotter:v1.0.1
image: quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
image: docker.io/k8scloudprovider/cinder-csi-plugin:latest

v1.0.1(すべてのコンテナから始めましたk8scsiが、いくつかのコンテナをアップグレードしようとしましたが、成功しませんでした)

答え1

問題は CSI ではなく、cloud-initOpenStack メタデータではなく EC2 メタデータを取得していた私の設定にありました (ではなく/etc/cloud/cloud.cfg.d/90_dpkg.cfgを参照していました)。そのため、適切なインスタンス ID が取得されませんでした。Ec2OpenStack

root@worker03-dev ~ # cat /var/lib/cloud/data/instance-id 
i-0031336c

問題を修正した後、cloud-init正しいインスタンス ID を取得しました。

root@worker03-dev ~ # cat /var/lib/cloud/data/instance-id 
9d7cd2bb-a365-4276-86ed-f4884132c361

これで、正しい NodeID がノードにアタッチされました。

ただし、クラウド プロバイダー (OVH) が EC2 メタデータ URL に間違った情報を返す理由はわかりません。

root@worker03-dev ~ # curl http://169.254.169.254/latest/meta-data/instance-id
i-0031336c

関連情報