Ausgabe
ich habe eine Frage zu kubernates. Ich muss einen Horizontal Load Balancer für einen Dienst mit Kubernates konfigurieren. Speziell in meiner Yaml-Datei habe ich die folgende Art verwendet: HorizontalPodAutoscaler; Das Problem ergibt sich aus der Logik des Hochladens von Dateien auf das Volume: Kurz gesagt, wenn ein Pod freigegeben wird, werden die darin enthaltenen Daten überschrieben, sodass bei einem neuen Pod das Volume geleert wird. Liege ich falsch in den Konfigurationen? Konkret habe ich das Volume im Dockerfile so eingestellt, dass es das entsprechende Image des mit Kubernates gestarteten Dienstes erstellt.
Lösung
Es ist keine gute Idee, Daten in Dockerimage zu speichern, aber Sie können immer noch Folgendes tun:
- Kopieren Sie Daten in das Docker-Image
- Erstellen Sie im Kubernetes POD das PVC-Volume
- Bringen Sie POD an PVC an und verwenden Sie die Volumenhalterung
- Verwenden Sie den Init-Container , um Daten aus dem Docker-Pfad in den Pfad der Volume-Mount-Datei zu kopieren
Dockerfile
FROM python:latest
COPY data.csv ./tmp/
Kubernetes-YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: POD-name
spec:
replicas: 2
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
initContainers:
- name: copy
image: busybox:1.28
command: ["/bin/sh", "-c", "cp /tmp/data.csv /data/data.csv"]
volumeMounts:
- name: pvc
mountPath: /data/
containers:
- name: test
image: image:tag
ports:
- containerPort: 8080
env:
- name: PORT
value: "8080"
volumeMounts:
- mountPath: "/data/"
name: pvc
volumes:
- name: pvc
persistentVolumeClaim:
claimName: pvc-claim
Beantwortet von – Harsh Manvar
Antwort geprüft von – Mildred Charles (FixError Admin)