Kubernetes 如何将声明用作卷
有谁能告诉我如何使用库伯内特斯的声明作为卷 是否需要创建卷 文档并没有提供太多关于它的信息:Kubernetes 如何将声明用作卷,kubernetes,Kubernetes,有谁能告诉我如何使用库伯内特斯的声明作为卷 是否需要创建卷 文档并没有提供太多关于它的信息: APersistentVolumeClaim允许绑定到现有的PersistentVolume。PersistentVolume是“真实”存储设备的表示 在下一页的匹配和绑定部分中有详细的查找算法: 由于手动声明每个PersistentVolume不太实际,因此可以选择使用StorageClass动态创建PersistentVolume。 您可以在PersistentVolumeClaim中设置Stora
A
PersistentVolumeClaim
允许绑定到现有的PersistentVolume
。PersistentVolume
是“真实”存储设备的表示
在下一页的匹配和绑定部分中有详细的查找算法:
由于手动声明每个PersistentVolume
不太实际,因此可以选择使用StorageClass
动态创建PersistentVolume
。
您可以在PersistentVolumeClaim
中设置StorageClass
,或者为集群定义默认的StorageClass
因此,当Pod使用PersistentVolumeClaim
作为卷时。首先,将搜索匹配的PersistentVolume
。如果找不到匹配的PV,并且声明中定义了StorageClass
(或存在默认的StorageClass
),则将动态创建一个卷。您需要创建一个持久卷声明,该声明将帮助您保留数据,即使pod被删除,卷数据保存在服务器上的特定位置,您希望保存数据的位置可以在deployment.yaml中给出。在持久卷声明的帮助下,当您重新创建新pod时,数据将保持完整,即它将从您的服务器(您希望接收数据的位置)获取数据
Kubernetes上具有持久卷声明的Mysql数据库示例
PVC.yaml
---
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
name: "mysqldb-pvc-development"
namespace: "development"
labels:
app: "mysqldb-development"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: gp2
部署.yaml
---
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "mysqldb-development"
namespace: "development"
spec:
selector:
matchLabels:
app: "mysqldb-development"
replicas: 1
strategy:
type: "RollingUpdate"
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
minReadySeconds: 5
template:
metadata:
labels:
app: "mysqldb-development"
tier: "mysql"
spec:
containers:
-
name: "mysqldb-development"
image: "mysql_image_name"
imagePullPolicy: "Always"
env:
-
name: "MYSQL_ROOT_PASSWORD"
value: "mysql_password"
ports:
-
containerPort: 3306
name: "mysql"
volumeMounts:
-
name: "mysql-persistent-storage"
mountPath: "/var/lib/mysql"
volumes:
-
name: "mysql-persistent-storage"
persistentVolumeClaim:
claimName: "mysqldb-pvc-development"
imagePullSecrets:
-
name: "mysqldb"
注意:-deployment.yaml文件中的ClaimName和pvc.yaml文件的名称应该相同。这取决于您使用的环境。在云环境中,您不需要创建PV。上次我尝试使用Minikube时,我不需要创建PV。通常集群会为您创建一个与声明匹配的PersistentVolume。我可能已经引用了Kubernetes文档链接中的YAML片段来说明如何设置它;是否存在特定的问题?请注意,由于PersistentVolumeClaim中指定了storageClass,因此该问题可以正常工作。此外,此示例仅适用于AWS(),因此他必须在其kubernetes提供商的功能中对其进行更新。Thnaks适用于您的答案如果您发现它有用,请进行投票,如果您的问题得到解决,请勾选答案。非常感谢,这澄清了很多!