在讲解TKE存储,我们先了解以下几个概念。
简介
PersistentVolume(PV):集群内的存储资源,例如节点是集群的资源。PV 独立于 Pod 的生命周期,根据不同的 StorageClass 类型创建不同类型的 PV。
PersistentVolumeClaim(PVC):集群内的存储请求。例如,PV 是 Pod 使用节点资源,PVC 则声明使用 PV 资源。当 PV 资源不足时,PVC 也可以动态创建 PV。
StorageClass 描述存储的类型,集群管理员可以为集群定义不同的存储类别。腾讯云 TKE 服务默认提供块存储类型的 StorageClass,通过 StorageClass 配合 PersistentVolumeClaim 可以动态创建需要的存储资源。
注意事项
- CBS 盘不支持跨可用区挂载。若挂载 CBS 类型 PV 的 Pod 迁移到其他可用区,将会导致挂载失败。
- TKE 控制台不支持 CBS 盘扩缩容,请自行前往 CBS 控制台执行操作。
配置步骤
1.创建StoragClass
2.创建PVC通过界面挂载
3.创建PVC通过yaml文件挂载
4.验证挂载成功
1.创建Storagclass

点击并展开存储,点击StorageClass,进入 StorageClass 信息页面,点击新建。
根据实际需求,设置 StorageClass 参数。关键参数信息如下:
- 名称:自定义。(我填写的是cbs)
- 计费模式:根据实际需求进行选择。(我选择的是按量计费)
- 可用区:根据实际需求进行设置,默认为 “随机可用区”。(我这里选择广州二区)
- 云盘类型:根据实际需求进行选择。(我选择的是普通盘)
- 回收策略:根据实际需求进行选择。(我选择的是删除)
单击【创建StorageClass】,完成创建。
至此,storageclass创建完成!
2.创建PVC通过界面挂载
2.1 创建PVC数据卷
展开存储,选择并点击PersitentVolumeClaim,点击新建。
输入PVC数据卷名称,输入容量大小(我这里填写10G,用于测试),其他参数默认,点击创建PersitentVolumeClaim
至此PVC创建完成!
2.2 将数据卷挂载至wordpress容器
现在我要将创建10G的PVC卷挂载至wordpress nginx容器的/tmp目录
界面方式挂载:
3.创建PVC通过yaml文件挂载
现在我要将创建10G的PVC卷挂载至wordpress nginx容器的/tmp目录
创建PVC流程,可参考步骤2中的2.1 创建PVC数据卷。
这里需要登录node节点机器,执行
# kubectl get deployment //查看deployment任务
# kubectl edit deployment wordpress //编辑deployment wordpress yaml文件,进行参数添加
添加如下框选处的YAML文件内容(pvc-data是之前创建PVC的名称),然后执行:wq保存退出即可。
修改后的wordpress yaml文件内容如下:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
generation: 1
labels:
k8s-app: wordpress
qcloud-app: wordpress
name: wordpress
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: wordpress
qcloud-app: wordpress
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: wordpress
qcloud-app: wordpress
spec:
containers:
- env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
image: ccr.ccs.tencentyun.com/liangfeng/test:test-nginx-201908051618-d852fb93feb0e32c386f4facb8550a3e1e679066
imagePullPolicy: IfNotPresent
name: nginx
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: data-volume
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
- env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
image: ccr.ccs.tencentyun.com/liangfeng/test:test-php-201908051634-7ec4253f2f17431d387aadecbf3d2b79a690681f
imagePullPolicy: IfNotPresent
name: php
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: qcloudregistrykey
- name: tencenthubkey
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: data-volume
persistentVolumeClaim:
claimName: pvc-data
复制
4.验证挂载成功
在pod管理中,点击远程登录,再登录,此时进入nginx容器控制台,执行df -h,可以看到PVC 10G数据卷已挂载在/tmp目录,挂载成功!