云服务器内容精选

  • 使用kubectl自动创建本地持久卷 使用kubectl连接集群。 使用StorageClass动态创建PVC及PV。 创建pvc-local.yaml文件。 apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-local namespace: default spec: accessModes: - ReadWriteOnce # 本地持久卷必须为ReadWriteOnce resources: requests: storage: 10Gi # 本地持久卷大小 storageClassName: csi-local-topology # StorageClass类型为本地持久卷 表2 关键参数说明 参数 是否必选 描述 storage 是 PVC申请容量,单位为Gi。 storageClassName 是 存储类名称,本地持久卷对应的存储类名称为csi-local-topology。 执行以下命令,创建PVC。 kubectl apply -f pvc-local.yaml 创建应用。 创建web-local.yaml文件,本示例中将本地持久卷挂载至/data路径。 apiVersion: apps/v1 kind: StatefulSet metadata: name: web-local namespace: default spec: replicas: 1 selector: matchLabels: app: web-local serviceName: web-local # Headless Service名称 template: metadata: labels: app: web-local spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: pvc-disk #卷名称,需与volumes字段中的卷名称对应 mountPath: /data #存储卷挂载的位置 imagePullSecrets: - name: default-secret volumes: - name: pvc-disk #卷名称,可自定义 persistentVolumeClaim: claimName: pvc-local #已创建的PVC名称 --- apiVersion: v1 kind: Service metadata: name: web-local # Headless Service名称 namespace: default labels: app: web-local spec: selector: app: web-local clusterIP: None ports: - name: web-local targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: ClusterIP 执行以下命令,创建一个挂载本地持久存储的应用。 kubectl apply -f web-local.yaml 工作负载创建成功后,容器挂载目录下的数据将会持久化保持,您可以参考验证数据持久化中的步骤进行验证。
  • 相关操作 您还可以执行表3中的操作。 表3 其他操作 操作 说明 操作步骤 事件 查看PVC或PV的事件名称、事件类型、发生次数、Kubernetes事件、首次和最近发生的时间,便于定位问题。 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”或“存储卷”页签。 单击目标实例操作列的“事件”,即可查看1小时内的事件(事件保存时间为1小时)。 查看YAML 可对PVC或PV的YAML文件进行查看、复制和下载。 在左侧导航栏选择“存储”,在右侧选择“存储卷声明”或“存储卷”页签。 单击目标实例操作列的“查看YAML”,即可查看或下载YAML。
  • 验证数据持久化 查看部署的应用及本地文件。 执行以下命令,查看已创建的Pod。 kubectl get pod | grep web-local 预期输出如下: web-local-0 1/1 Running 0 38s 执行以下命令,查看本地持久卷是否挂载至/data路径。 kubectl exec web-local-0 -- df | grep data 预期输出如下: /dev/mapper/vg--everest--localvolume--persistent-pvc-local 10255636 36888 10202364 0% /data 执行以下命令,查看/data路径下的文件。 kubectl exec web-local-0 -- ls /data 预期输出如下: lost+found 执行以下命令,在/data路径下创建static文件。 kubectl exec web-local-0 -- touch /data/static 执行以下命令,查看/data路径下的文件。 kubectl exec web-local-0 -- ls /data 预期输出如下: lost+found static 执行以下命令,删除名称为web-local-0的Pod。 kubectl delete pod web-local-0 预期输出如下: pod "web-local-0" deleted 删除后,StatefulSet控制器会自动重新创建一个同名副本。执行以下命令,验证/data路径下的文件是否更改。 kubectl exec web-local-0 -- ls /data 预期输出如下: lost+found static static文件仍然存在,则说明本地持久存储中的数据可持久化保存。