首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

腾讯云TKE持久化存储

腾讯云TKE持久化存储

对于Kuberentes中,一些服务需要持久化的内容,我们一般都会使用一个共享的文件系统,类似与目前各个云厂商提供的对象存储服务,或文件系统服务,自建的话也有NFS、Ceph选择;

这里就简单的说一下我自身采用过的方式:

  • 持久化存储使用的云厂商的对象存储;
  • 使用Kubernetes中的PV与对象存储进行关联;
  • 而后PV与PVC关联;
  • 从而每个服务,使用Volume挂载该PVC,从而实现服务Pod下有持久化存储可以使用。

随着Kubernetes不断的功能完善,国内云厂商也在不断的适配,腾讯云TKE目前支持StorageClass,这样一种动态的添加持久化存储。

主要解决的问题:

在没有这种能力之前,集群管理员需要联系他们的云或者存储提供者来创建新的存储卷,成功以后再创建 PersistentVolume对象,才能够在 Kubernetes 中使用。动态卷供给能力让管理员不必进行预先创建存储卷,而是随用户需求进行创建。

StorageClass:可以定义多个 StorageClass 对象,并可以分别指定存储插件、设置参数,用于提供不同的存储卷。这样的设计让集群管理员能够在同一个集群内,定义和提供不同类型的、不同参数的卷(相同或者不同的存储系统)。这样的设计还确保了最终用户在无需了解太多的情况下,有能力选择不同的存储选项。

示例:这里我就采用腾讯云TKE进行快速的持久化存储创建

1、首先创建StorageClass;

新建

生成的yaml文件如下:

代码语言:javascript
复制
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  creationTimestamp: "2020-06-18T07:29:23Z"
  name: sc-jingwei
  resourceVersion: "235169"
  selfLink: /apis/storage.k8s.io/v1/storageclasses/sc-jingwei
  uid: 43af2853-e5e2-4e47-86a3-be6aa9a870bb
parameters:
  paymode: POSTPAID
  type: CLOUD_PREMIUM
  zone: "160001"
provisioner: cloud.tencent.com/qcloud-cbs
reclaimPolicy: Retain
volumeBindingMode: Immediate

2、新建PVC;

如果是自己维护的Kubernetes集群,创建PVC的需要先创建PV,才能进行,但是由于这是TKE所以我们可以直接创建PVC即可,PV会根据PVC中的选择自动创建关联;

新建

生成的yaml文件如下:

代码语言:javascript
复制
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: cloud.tencent.com/qcloud-cbs
  creationTimestamp: "2020-06-18T07:34:10Z"
  finalizers:
  - kubernetes.io/pvc-protection
  name: pvc-jingwei
  namespace: default
  resourceVersion: "235881"
  selfLink: /api/v1/namespaces/default/persistentvolumeclaims/pvc-jingwei
  uid: 2679abc0-1430-4234-91b5-98cdc4aa78ce
spec:
  accessModes:
  - ReadWriteOnce
  dataSource: null
  resources:
    requests:
      storage: 100Gi
  storageClassName: sc-jingwei
  volumeMode: Filesystem
  volumeName: pvc-2679abc0-1430-4234-91b5-98cdc4aa78ce
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 100Gi
  phase: Bound

3、查看自动创建的PV;

4、自由测试;

这里我通过命令行来进行查看

代码语言:javascript
复制
[root@192-168-100-4 ~]# kubectl get sc
NAME         PROVISIONER                    AGE
sc-jingwei   cloud.tencent.com/qcloud-cbs   11m
[root@192-168-100-4 ~]# kubectl get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   REASON   AGE
pvc-2679abc0-1430-4234-91b5-98cdc4aa78ce   100Gi      RWO            Retain           Bound    default/pvc-jingwei   sc-jingwei              6m38s
[root@192-168-100-4 ~]# kubectl get pvc
NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc-jingwei   Bound    pvc-2679abc0-1430-4234-91b5-98cdc4aa78ce   100Gi      RWO            sc-jingwei     6m43s

这里我们再自己创建一个deploymeny文件,使用Nginx的镜像进行确认pvc能否使用。

deployment yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
    name: deploy-nginx
    namespace: default
    labels:
        team: test
spec:
    replicas: 1
    selector:
        matchLabels:
            team: test
    template:
        metadata:
            labels:
                team: test
        spec:
            containers:
            - name: pod-nginx
              image: nginx:alpine
              imagePullPolicy: Always
              resources:
                requests:
                    cpu: "128m"
                    memory: "256Mi"
                limits:
                    cpu: "2"
                    memory: "4096Mi"
              ports:
              - containerPort: 42508
              readinessProbe:
                tcpSocket:
                    port: 80
                initialDelaySeconds: 5
                periodSeconds: 10
                timeoutSeconds: 1
                successThreshold: 1
                failureThreshold: 3
              livenessProbe:
                tcpSocket:
                    port: 80
                initialDelaySeconds: 15
                periodSeconds: 20
              volumeMounts:
              - name: config-volume
                mountPath: /etc/java/configs
                # 这里我随便挂载到一个目录,待会有这个目录就说明成功了。
            volumes:
                - name: config-volume
                  persistentVolumeClaim:
                    claimName: pvc-jingwei
            restartPolicy: Always

这里我在命令行就直接应用了

切入容器查看

经过确认,此方式没用问题!

总结:

通过使用腾讯云TKE的存储服务,可以快速的创建的PVC,PV会根据PVC的需求对应创建,并自动增加云硬盘。

下一篇
举报
领券