Fehlerbehebung — S3 Buckets
AccessDenied beim Zugriff auf den Bucket
Ursache: Die verwendeten Zugangsdaten sind falsch, oder der verwendete Bucket-Name entspricht nicht dem tatsächlichen Namen im S3-Backend.
Lösung:
-
Rufen Sie die Zugangsdaten aus dem Kubernetes Secret ab:
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq -
Verwenden Sie das Feld
spec.bucketNameals Bucket-Namen (nichtmetadata.name):aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/ -
Überprüfen Sie, ob
accessKeyIDundaccessSecretKeyin Ihrem S3-Tool korrekt konfiguriert sind.
ListBucket schlägt am Root fehl
Ursache: Jeder Bucket verfügt über eigene isolierte Zugangsdaten. Es ist nicht möglich, alle Buckets mit einem einzigen Satz von Zugangsdaten aufzulisten.
Lösung:
-
Verwenden Sie die spezifischen Zugangsdaten des Buckets, den Sie auflisten möchten:
aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/ -
Um alle Ihre Buckets aufzulisten, verwenden Sie
kubectl:kubectl get buckets -
Für jeden Bucket rufen Sie die individuellen Zugangsdaten aus dem entsprechenden Secret ab.
Zugangsdaten nicht auffindbar
Ursache: Der Name des Secrets folgt dem Muster bucket-<name>, wobei <name> der metadata.name der Bucket-Ressource ist.
Lösung:
-
Listen Sie die verfügbaren Secrets auf:
kubectl get tenantsecrets | grep bucket- -
Extrahieren Sie die Zugangsinformationen:
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq -
Um nur die Schlüssel zu extrahieren:
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' \
| base64 -d \
| jq -r '.spec.secretS3 | "\(.accessKeyID) \(.accessSecretKey)"'
Langsamer Upload oder Timeout
Ursache: Netzwerkproblem, große Dateigröße ohne Multipart-Upload oder entfernter Endpunkt.
Lösung:
-
Überprüfen Sie Ihre Konnektivität zum Endpunkt:
curl -s -o /dev/null -w "%{time_total}" https://prod.s3.hikube.cloud -
Verwenden Sie den regionalen Endpunkt
https://prod.s3.hikube.cloud(kein zwischengeschaltetes CDN). -
Für große Dateien aktivieren Sie den Multipart-Upload:
aws --endpoint-url https://prod.s3.hikube.cloud s3 cp large-file.tar.gz s3://<bucket-name>/ \
--expected-size $(stat -c%s large-file.tar.gz) -
Mit
mcerfolgt Multipart automatisch bei Dateien über 64 MB.
Bucket nach Erstellung nicht gefunden
Ursache: Der tatsächliche Bucket-Name im S3-Backend (spec.bucketName) unterscheidet sich vom metadata.name der Kubernetes-Ressource.
Lösung:
-
Überprüfen Sie den Status der Bucket-Ressource:
kubectl get bucket <name>
kubectl describe bucket <name> -
Rufen Sie den tatsächlichen Bucket-Namen aus dem Secret ab:
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' \
| base64 -d \
| jq -r '.spec.bucketName' -
Verwenden Sie diesen tatsächlichen Namen für den Zugriff auf den Bucket:
aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<real-bucket-name>/
Verwechseln Sie nicht metadata.name (Kubernetes-Name) und spec.bucketName (tatsächlicher Name in S3). Nur der zweite funktioniert für den S3-Zugriff.