Ich benutze Helm mit Kubernetes auf Google Cloud-Plattform.SchedulerPredicates fehlgeschlagen aufgrund PersistentVolumeClaim ist nicht gebunden
bekomme ich folgende Fehler für meine Postgres Einsatz:
SchedulerPredicates failed due to PersistentVolumeClaim is not bound
es sieht aus wie es auf den persistenten Speicher verbinden kann nicht, aber ich verstehe nicht, warum, weil die persistenten Speicher fein geladen.
Ich habe versucht, die Helm Release komplett zu löschen, dann auf Google-Cloud-Konsole> compute-engine> Festplatten; Ich habe alle persistente Festplatte gelöscht. und schließlich versucht, aus dem Helm Diagramm zu installieren, aber die Postgres-Bereitstellung noch keine Verbindung zum PVC.
meine Datenbank-Konfiguration:
{{- $serviceName := "db-service" -}}
{{- $deploymentName := "db-deployment" -}}
{{- $pvcName := "db-disk-claim" -}}
{{- $pvName := "db-disk" -}}
apiVersion: v1
kind: Service
metadata:
name: {{ $serviceName }}
labels:
name: {{ $serviceName }}
env: production
spec:
type: LoadBalancer
ports:
- port: 5432
targetPort: 5432
protocol: TCP
name: http
selector:
name: {{ $deploymentName }}
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: {{ $deploymentName }}
labels:
name: {{ $deploymentName }}
env: production
spec:
replicas: 1
template:
metadata:
labels:
name: {{ $deploymentName }}
env: production
spec:
containers:
- name: postgres-database
image: postgres:alpine
imagePullPolicy: Always
env:
- name: POSTGRES_USER
value: test-user
- name: POSTGRES_PASSWORD
value: test-password
- name: POSTGRES_DB
value: test_db
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- containerPort: 5432
volumeMounts:
- mountPath: "/var/lib/postgresql/data/pgdata"
name: {{ $pvcName }}
volumes:
- name: {{ $pvcName }}
persistentVolumeClaim:
claimName: {{ $pvcName }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ $pvcName }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
selector:
matchLabels:
name: {{ $pvName }}
env: production
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ .Values.gcePersistentDisk }}
labels:
name: {{ $pvName }}
env: production
annotations:
volume.beta.kubernetes.io/mount-options: "discard"
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
gcePersistentDisk:
fsType: "ext4"
pdName: {{ .Values.gcePersistentDisk }}
ist diese Konfiguration für kubenetes richtig? Ich habe die Dokumentation gelesen und es sieht so aus als ob das funktionieren sollte. Ich bin neu zu Kubernetes und Helm, also wird jeder Rat geschätzt.
EDIT:
i ein PersistentVolume hinzugefügt haben und verknüpft es mit dem PersistentVolumeClaim, um zu sehen, ob das hilft, aber es scheint, dass, wenn ich dies tun, die PersistentVolumeClaim Status in „pending“ stecken bleibt (was in derselben Ausgabe wie zuvor).
Wenn Sie 'kubectl erhalten pv' vor der PersistentVolumeClaim erstellt wird, zeigt die PersistentVolume verfügbar? – oe18
Ich erstelle keine PV ... nur ein PVC. 'kubectl get pv' gibt' No resources found' aus. Das gleiche gilt für "kubectl get pvc" (weil ich die gesamte Version gelöscht habe). Aber wenn ich ein neues Release erstelle, wird die Postgres-Bereitstellung fehlschlagen, weil sie keine Verbindung zum PVC herstellen kann. – X0r0N