使用阿里云容器ACK通过云存储网关(CSG)挂载OSS

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 本文将详细介绍如何使用阿里云容器服务ACK通过云存储网关挂载OSS。

云存储网关CSG(Cloud Storage Gateway)以阿里云对象存储OSS为后端存储,给云上和云下应用提供业界标准的NFS和CIFS文件存储服务,以及iscsi块存储服务。


云存储网关的挂载方式支持共享存储;只支持静态存储卷,不支持动态存储卷。目前容器服务ACK控制台尚未集成云存储网关类型的存储卷,本文将详细介绍如何在ACK控制台云存储网关持久化存储卷。


一、前提条件

  1. 使用云存储网关需要开通对象存储bucket作为后端存储,可以参考:创建存储空间
  2. 开通云存储网关,并创建NFS协议共享,可以参考:在云控制台上使用文件网关
  3. 创建ACK集群。需要已创建一个ACK集群,且存储插件选择为CSI。创建ACK集群可以参考:创建Kubernetes托管版集群
  4. 已使用kubectl连接Kubernetes集群。具体操作参考:通过kubectl工具连接集群


二、通过控制台挂载


登录网关控制台->点击网关列表->点击需要挂载的网关id->记录下共享挂载点信息。格式为ip:/路径,如172.0.0.1:/share。

网关1.png

网关2.png


2.1 创建存储卷(PV)

在ack控制台,对应的ack集群中,选择存储-存储卷-创建。在“创建存储卷”对话框中选择NAS,挂载点域名选择自定义,填写前面记下的共享ip以及路径。

ack-1.png

2.2 创建存储卷声明(PVC)

选择存储声明,并创建。在“创建存储声明”对话框,选择NAS,分配模式选择已有存储卷。选择2.1步骤中创建的存储卷即可。

ack.png


2.3 创建应用

新建应用,在数据卷中选择增加云存储声明,挂载源选择刚才创建的pvc,容器路径则是自定义,将数据卷挂载容器的哪个路径下。

ack-3.png


2.4 验证存储

2.4.1 查看部署应用和文件

1)在kubectl客户端机器上,执行:

kubectl get pod


结果预期(pod的名称使用pod-1xxx等代替):

NAME       READY   STATUS    RESTARTS   AGE
pod-1xxx   1/1     Running   0          16h
pod-2xxx   1/1     Running   0          16h
pod-2xxx   1/1     Running   0          16h


2)查看任意一个pod下的挂载项,可以看到/tmp路径成功挂载了云存储网关共享。

ack-4.png


3)查看挂载路径/tmp下的文件,可以看到为空,说明暂时没有文件。

ack-5.png


2.4.2 创建文件

1)执行下面的命令,创建文件aaa

kubectl exec pod-1xxx --touch /tmp/aaa


2)执行下面的命令:

kubectl exec pod-1xxx --ls /tmp

预期结果:

aaa

说明在挂载路径下成功创建了文件aaa。


另外,还可以登录OSS控制台,去对应的bucket中查看创建的aaa文件。


2.4.3 验证持久化存储

1)执行以下命令,删除pod-1xxx。

kubectl delete pod pod-1xxx

结果预期:

pod "pod-1xxx" deleted


2)执行以下命令,查看重建的pod名称(下文中记为pod-1new):

kubectl get pod


3)执行以下命令,查看文件是否还在:

kubectl exec pod-1new --ls /tmp

预期结果:

aaa

说明文件是持久化存储的,pod删除并不会导致文件被删除。


2.4.4 验证共享存储

执行以下命令:

kubectl exec pod-2xxx --ls /tmp

预期结果:

aaa

说明不同pod之间可以共享存储。


三、通过kubectl命令行挂载

3.1 创建存储卷(PV)

创建一个yaml文件pv-csg.yaml,内容参考下面:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-csg
  labels:
    alicloud-pvname: pv-csg
spec:
  capacity:
    storage: 40Gi
  storageClassName: nas
  accessModes:
- ReadWriteOnce
  csi:
    driver: nasplugin.csi.alibabacloud.com
    volumeAttributes:
      path: #共享挂载路径,如: /share      server: xxx.xxx.xxx.xxx
    volumeHandle: pv-csg
  persistentVolumeReclaimPolicy: Retain
  volumeMode: Filesystem
# 如果有其他的nfs挂载参数,可以再添加下面的字段:  mountoptions:  
-# 部分挂载参数示例:nolock,proto=tcp,noresvport  -vers=3# 3 或 4.0

在kubectl客户端执行下面的命令:

kubectl create -f pv-csg.yaml 

预期结果:

persistentvolume/pv-csg created

登录控制台,可以看到存储-存储卷中新增了一项pv-csg。


3.2 创建存储卷声明(PVC)

创建一个yaml文件pvc-csg.yaml,内容参考下面:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-csg
spec:
  accessModes:
- ReadWriteOnce
  resources:
    requests:
      storage: 40Gi
  selector:
    matchLabels:
      alicloud-pvname: pv-csg # 3.1节中的pv name  storageClassName: nas
  volumeMode: Filesystem
  volumeName: pv-csg

在kubectl客户端执行下面的命令:

kubectl create -f pvc-csg.yaml 

预期结果:

persistentvolumeclaim/pvc-csg created

登录控制台,可以看到存储-存储声明中新增了一项pvc-csg。


3.3 创建应用

以魔方游戏为例创建一个无状态应用ack-cube。创建一个yaml文件cube.yaml,内容参考下面:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: ack-cube
  name: ack-cube
  namespace: default
spec:
  replicas: 3# pod副本数量  selector:
    matchLabels:
      app: ack-cube
  template:
    metadata:
      labels:
        app: ack-cube
    spec:
      containers:
- image: 'registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0'          imagePullPolicy: IfNotPresent
          name: ack-cube
          ports:
- containerPort: 80          volumeMounts:
- mountPath: /tmp # 容器存储卷挂载路径              name: volume-pvc-csg
      volumes:
- name: volume-pvc-csg
          persistentVolumeClaim:
            claimName: pvc-csg # 3.2节中存储卷的名称

在kubectl客户端执行下面的命令:

kubectl create -f cube.yaml

预期结果:

deployment.apps/ack-cube created

登录控制台,可以看到工作负载-无状态中新增了一项ack-cube。


3.4 验证存储

验证存储可以采用和2.4节同样的方法。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3天前
|
存储 弹性计算 运维
阿里云容器服务Kubernetes版(ACK)部署与管理体验评测
阿里云容器服务Kubernetes版(ACK)是一个功能全面的托管Kubernetes服务,它为企业提供了快速、灵活的云上应用管理能力。
67 1
|
27天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
DataWorks产品使用合集之如何将CSV文件从阿里云OSS同步到ODPS表,并且使用列作为表分区
|
9天前
|
监控 Serverless 持续交付
阿里云云效产品使用问题之如何让流水线支持构建 flutter web 应用到 OSS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7天前
|
存储 Java Maven
大事件后端项目31--------文件上传_阿里云OSS_入门程序
大事件后端项目31--------文件上传_阿里云OSS_入门程序
|
7天前
|
存储 运维 Java
大事件后端项目30------文件上传_阿里云OSS_准备工作
大事件后端项目30------文件上传_阿里云OSS_准备工作
|
9天前
|
Kubernetes 网络协议 Docker
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
|
2月前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
56501 7
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
19天前
|
Java 对象存储
java对接阿里云OSS上传
java对接阿里云OSS上传
91 2
|
2天前
|
缓存 对象存储 数据安全/隐私保护
阿里云OSS, 跨域请求, No ‘Access-Control-Allow-Origin‘
阿里云OSS, 跨域请求, No ‘Access-Control-Allow-Origin‘
8 0
|
7天前
|
对象存储
大事件后端项目32--------文件上传_阿里云OSS_程序集成
大事件后端项目32--------文件上传_阿里云OSS_程序集成

相关产品

  • 容器服务Kubernetes版