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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 本文将详细介绍如何使用阿里云容器服务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节同样的方法。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2天前
|
存储 Docker 容器
docker中挂载数据卷到容器
【10月更文挑战第12天】
14 5
|
2月前
|
人工智能 缓存 Cloud Native
用 Higress AI 网关降低 AI 调用成本 - 阿里云天池云原生编程挑战赛参赛攻略
《Higress AI 网关挑战赛》正在火热进行中,Higress 社区邀请了目前位于排行榜 top5 的选手杨贝宁同学分享他的心得。本文是他整理的参赛攻略。
527 70
|
3天前
|
存储 测试技术 开发者
docker中将数据卷挂载到容器
【10月更文挑战第11天】
14 3
|
1月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
10天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
存储 API Swift
Ceph Reef(18.2.X)之Swift操作对象存储网关
这篇文章详细介绍了Ceph Reef(18.2.X)中通过Swift API操作对象存储网关的方法,包括创建用户、子用户、配置环境变量、以及使用swift命令行工具进行存储桶和对象的管理。
30 7
Ceph Reef(18.2.X)之Swift操作对象存储网关
|
1月前
|
存储 对象存储
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
这篇文章是关于Ceph Reef(18.2.X)版本中对象存储系统的配置和使用案例,包括对象存储网关的概述、核心资源介绍、Ceph RGW支持的接口、高可用radosgw的部署、s3cmd工具的使用以及如何通过HTTP方式访问对象存储。
52 3
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
|
1月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
262 12
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
存储 对象存储
radosgw高可用对象存储网关实战指南
关于radosgw高可用对象存储网关的实战指南,涵盖了从基本概念到具体操作案例,再到架构设计和使用技巧的全面介绍。
55 6

相关产品

  • 容器服务Kubernetes版