因为我尝试创建持久卷,但没有获得任何价值,因为我在 virtualbox 托管的 minikube 虚拟机中创建卷。
我的部署的 yaml 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-flask-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: python-flask-app-dep
template:
metadata:
labels:
app: python-flask-app-dep
spec:
volumes:
- name: mypod-pvc
persistentVolumeClaim:
claimName: mypvc
containers:
- name: python-app-container
image: jackazjimmy/flask-test-demo-eks:v1
volumeMounts:
- mountPath: /app/instance/
name: mypod-pvc
ports:
- containerPort: 31816 # Exposed port in your Dockerfile
resources:
limits:
cpu: 500m
requests:
cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
name: python-app-service
spec:
selector:
app: python-flask-app-dep
ports:
- protocol: TCP
port: 8080 # External port
targetPort: 31816 # Container port
type: NodePort
PVC yaml 文件:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc
spec:
storageClassName: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
PV yaml 文件:
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv
spec:
storageClassName: ""
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/mydata"
应用或创建所有必需的资源后,每当我通过 minikube ssh 连接时,都无法获取本地卷中的文件存储。 任何建议都会有帮助:)
K8s 几乎支持所有可在 K8s 上运行的应用程序的 PV 和 PVC。根据您的文件,您将存储类别留空。它采用默认存储类别。您很有可能没有任何存储类别,或者可能不是 10GB。首先,您创建一个要存储卷的存储类。它可能是本地的,也可能是集群外部的 NFS,或者使用 Minio 或 Rook 等第三方解决方案。您还可以定义此存储类别的大小(例如,10GB 100GB)。然后,您使用此存储类创建一个 PV,并使用与您要使用它的应用程序相关的唯一名称。最后,使用 PV 挂载 PVC(持久卷声明)。现在您的应用程序会将数据存储到 PVC 中,PVC 与 PV 一起安装,并且 PV 将数据存储到存储类中。 这是存储类 yaml 文件的示例。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
- debug
volumeBindingMode: Immediate
我希望这有帮助。