OpenStack의 Kubernetes CSI가 노드에 잘못된 nodeid 주석을 추가합니다.

OpenStack의 Kubernetes CSI가 노드에 잘못된 nodeid 주석을 추가합니다.

Cinder CSI 플러그인을 구성하려고 합니다(https://github.com/kubernetes/cloud-provider-openstack/blob/master/docs/using-cinder-csi-plugin.md) 내 Kubernetes 클러스터(OpenStack 인스턴스에 설치됨)에 있습니다.

모든 것이 잘 작동하지만(PV, PVC 및 실제 Cinder 볼륨은 정상적으로 생성됨) csi-attacher내 Cinder 볼륨을 내 노드에 연결하려고 하면 다음과 같이 실패합니다.

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

관련 정보