[英]How to use claims as Volumes
谁能告诉我如何在 kubernetes 中将声明用作卷?
是否需要创建卷?
文档没有提供太多关于它的信息: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#claims-as-volumes
PersistentVolumeClaim
允许绑定到现有的PersistentVolume
。 PersistentVolume
是“真实”存储设备的表示。
您在下一页的Matching and binding
部分中有详细的查找算法: https://github.com/kubernetes/community/design-proposals/storage/persistent-storage.md
由于手动声明每个PersistentVolume
不是很实用,因此可以选择使用StorageClass
来动态创建PersistentVolume
。 您可以在PersistentVolumeClaim
中设置StorageClass
,也可以为集群定义默认StorageClass
。
因此,当 Pod 使用PersistentVolumeClaim
作为卷时。 首先将搜索匹配的PersistentVolume
。 如果找不到匹配的 PV 并且在声明中定义了StorageClass
(或存在默认StorageClass
),则将动态创建卷。
您需要创建一个持久性卷声明,即使 pod 被删除,也可以帮助您保留数据,卷数据保留在您的服务器上的特定位置,您想要保留数据的位置可以在部署中给出。 yaml。 当您重新创建新 pod 时,借助持久卷声明,数据将保持不变,即它将从您的服务器(您想要获取数据的位置)获取数据
Mysql 数据库的示例,在 Kubernetes 上具有持久卷声明
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 文件的名称应该相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.