Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何将声明用作卷_Kubernetes - Fatal编程技术网

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适用于您的答案如果您发现它有用,请进行投票,如果您的问题得到解决,请勾选答案。非常感谢,这澄清了很多!