上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 使用本地存储
容器引擎服务CCE
百度智能云容器引擎服务 CCE 使用本地存储

文档简介:
emptyDir 类型的 Volume 在 Pod 分配到 Node 上时被创建,Kubernetes 会在 Node 上自动分配一个目录,因此无需指定宿主机 Node 上对应的目录文件,这个目录的初始内容为空。 当 Pod 从 Node 上移除时,emptyDir 中的数据会被永久删除。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

EmptyDir

概述

emptyDir 类型的 Volume 在 Pod 分配到 Node 上时被创建,Kubernetes 会在 Node 上自动分配一个目录,因此无需指定宿主机 Node 上对应的目录文件,这个目录的初始内容为空。

当 Pod 从 Node 上移除时,emptyDir 中的数据会被永久删除。

使用 kubectl create -f testemptyDir.yaml 创建一个 Pod,该 Pod 使用 EmptyDir,testemptyDir.yaml 如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: test-ed
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

查看创建的 Pod 详情:

$ kubectl describe pod test-ed

进入 Pod 内部查看挂载效果:

$ kubectl exec -it test-ed -c test-container /bin/sh

HostPath

概述

HostPath 类型则是映射 Node 文件系统中的文件或者目录到 Pod 里。在使用 HostPath 类型的存储卷时,也可以设置 type 字段,支持的类型有文件、目录、File、Socket、CharDevice 和 BlockDevice。

使用 kubectl create -f testhostPath.yaml 创建一个 Pod,该 Pod 使用 HostPath,testhostPath.yaml 如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: test-hp
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      #directory location on host
      path: /data

Local Volume

概述

Local Volume 允许将 Node 本地的磁盘、分区或者目录作为持久化存储使用。Local Volume 适合应用于数据缓存,应用可以就近访问数据,快速处理,同时还适用于分布式存储系统,如分布式数据库 Cassandra ,分布式文件系统 ceph/gluster。

目前 Kubernetes 对于 Local PV 的一些支持情况:

  • Kubernetes v1.7: 正式引入 Local PV;
  • Kubernetes v1.10: Local PV 进入 Beta;
  • Kubernetes v1.14: Local PV 进入 GA

创建storage class

kubectl create -f local-volume.yaml,local-volume.yaml 内容如下:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local-volume
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

其中WaitForFirstConsumer表示PV不要立即绑定PVC,而是直到有Pod需要用PVC的时候才绑定。

静态创建 PV

通过 kubectl create -f local-volume-pv.yaml,静态创建一个 5GiB 的 PV;该 PV 使用 node 的 /data/volume 目录(需要手动创建目录)

local-volume-pv.yaml 内容如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-local-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-volume
  local:
    path: /data/volume
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - HOSTNAME

通过kubectl get nodes 获得node_name替换上面的HOSTNAME字段。

$ kubectl get pv example-local-pv
$ kubectl get pv
NAME                                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM     
                     STORAGECLASS      REASON   AGE
example-local-pv                          5Gi        RWO            Retain           Bound    default/myclaim  
              local-volume               5s

使用 local volume PV

创建一个关联 local-volume的PVC,并创建一个pod使用该pvc,kubectl create -f local-volume-pvc.yaml。

local-volume-pvc.yaml内容如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: local-volume
---
kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/usr/share/nginx/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: mypvc

查看创建的pv,pvc,pod。

$ kubectl get pv
NAME                    CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM      
                    STORAGECLASS      REASON   AGE
example-local-pv        5Gi        RWO            Retain           Bound    default/mypvc  
                local-volume               5s
$ kubectl get pvc
NAME                   STATUS   VOLUME                                    CAPACITY   ACCESS MODES   STORAGECLASS      AGE
mypvc                  Bound    example-local-pv                          5Gi        RWO            local-volume      4m20s
$ kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
mypod                            1/1     Running   0          4m28s

向本地的/data/volume写入内容,使用curl查看是否写入成功

$ echo "hello world" > /data/volume/index.html
$ curl 172.19.4.63
#这里替换自己的pod的ip
hello world

删除时注意首先删除创建的pod,随后删除pvc,pv。

相似文档
  • 当前 CDS 磁盘支持以 FlexVolume 和 CSI 形式(要求集群k8s版本≥1.11)在集群中挂载。FlexVolume 形式支持直接在 Pod 中以 volume 方式挂载,CSI 形式挂载需要创建 PV 和 PVC 存储资源后,再将 PVC 挂载到 Pod 中。两种挂载方案都可以满足容器内特定数据持久化的需求,两者详细的区别请参考 kubernetes 官方文档: Volumes。 Persistent Volumes。
  • 准备工作: 用户做好以下准备,才能在容器中挂载CFS实例。 注册百度账号,并完成实名认证。 创建一个可用的容器集群。 开通CFS服务。 创建CFS实例和挂载点。 创建容器集群: 创建一个容器集群,操作步骤参考创建集群。 下载命令行客户端kubectl,并连接集群,操作步骤参考通过kubectl连接Kubernetes集群。
  • 准备工作: 用户做好以下准备,才能在容器中挂载BOS实例。 注册百度账号,并完成实名认证。 进入BOS页面创建bucket。 创建一个可用的容器集群。 创建Bucket: 创建BOS Bucket,操作步骤请参考创建bucket。 注意: 请注意创建的BOS Bucket所处地域。如果创建的BOS Bucket与容器集群分属不同地域,要求挂载点所在BCC/BBC开放公网访问,同地域则可以通过内网读写。
  • 目前 CCE 的容器监控是由一系列的开源组件构成,用户可以在页面上自定义部署各个组件,并设置其公网开放策略、持久化配置等。全部部署后,用户将获得如下的监控能力: 基于开源的 prometheus + grafana + node-exporter + kube-state-metrics 的采集、存储、展示方案。
  • CCE 基于 Prometheus + Alertmanager 的方案为用户提供快速可视化的报警配置,用户可根据需求配置节点,应用等维度的报警规则,告警将以邮件或短信发送给指定用户或用户组。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部