繁体   English   中英

如何将声明用作卷

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM