前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云TKE持久化存储

腾讯云TKE持久化存储

原创
作者头像
蒋经纬
修改2020-06-18 18:03:46
5.2K0
修改2020-06-18 18:03:46
举报

腾讯云TKE持久化存储

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

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

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

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

主要解决的问题:

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

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

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

1、首先创建StorageClass;

新建

生成的yaml文件如下:

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文件如下:

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、自由测试;

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

[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

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的需求对应创建,并自动增加云硬盘。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 腾讯云TKE持久化存储
    • 主要解决的问题:
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档