K8S有状态服务-共享存储使用最佳实践

简介:

介绍

阿里云Kubernetes集群目前支持NAS、OSS、CPFS等阿里云共享存储服务,并通过flexvolume进行挂载;

共享存储支持一个存储卷被多个Pod同时挂载,多个Pod可能同时修改相同数据,这时需要应用自行实现数据的同步功能;

NAS:适合于IO较高的应用,读写性能相对OSS高,可实现跨主机文件共享;如文件服务器;

OSS:适用于低IO服务,配置文件、图片、小视频等共享业务;

使用NAS卷创建应用

创建NAS存储盘

  1. 在NAS控制台创建一个NAS文件系统盘;
  2. 创建NAS挂载点,挂载点配置成集群所在的VPC网络;
  3. 可以在集群中一个节点挂载NAS卷测试是否可行;

创建PV

通过NAS卷创建PV资源类型,配置PV唯一性标签alicloud-pvname: pv-nas;

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nas
  labels:
    alicloud-pvname: pv-nas
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  flexVolume:
    driver: "alicloud/nas"
    options:
      server: "***-**.cn-beijing.nas.aliyuncs.com"
      path: "/k8s1"
      vers: "4.0"

options支持的参数:

server:NAS的挂载点;

path:所想挂载NAS文件系统的目录,如果目录不存在会自动创建;

vers:使用NFS的版本,支持3.0、4.0;

mode:挂载目录后配置目录的访问权限,如果挂载的目录文件量很大,此操作会很慢,不建议配置;

options:挂载NAS时,附加的参数,可选;

创建应用

PVC中通过selector来显式指定所要绑定的pv;

NAS为共享存储,可以在Deployment中配置replicas为2;

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-nas
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      alicloud-pvname: pv-nas
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nas-static
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
          - name: pvc-nas
            mountPath: "/data"
      volumes:
        - name: pvc-nas
          persistentVolumeClaim:
            claimName: pvc-nas

共享存储验证

创建服务:

# kubectl create -f nas.yaml

# kubectl get pod
NAME                          READY     STATUS    RESTARTS   AGE
nas-static-6bcf7895dd-ddf7t   1/1       Running   0          15m
nas-static-6bcf7895dd-mhv5w   1/1       Running   0          15m

NAS盘上创建临时文件:

# kubectl exec nas-static-6bcf7895dd-ddf7t ls /data
# kubectl exec nas-static-6bcf7895dd-mhv5w ls /data

# kubectl exec nas-static-6bcf7895dd-ddf7t touch /data/nas1

# kubectl exec nas-static-6bcf7895dd-ddf7t ls /data
nas1    
# kubectl exec nas-static-6bcf7895dd-mhv5w ls /data
nas1

高可用验证

删除所有Pod:

# kubectl delete pod nas-static-6bcf7895dd-ddf7t nas-static-6bcf7895dd-mhv5w
pod "nas-static-6bcf7895dd-ddf7t" deleted
pod "nas-static-6bcf7895dd-mhv5w" deleted

# kubectl get pod
NAME                          READY     STATUS              RESTARTS   AGE
nas-static-6bcf7895dd-5zgxz   0/1       ContainerCreating   0          3s
nas-static-6bcf7895dd-99ppg   0/1       ContainerCreating   0          3s
nas-static-6bcf7895dd-ddf7t   0/1       Terminating         0          18m
nas-static-6bcf7895dd-mhv5w   0/1       Terminating         0          18m

查看新创建Pod数据:

# kubectl exec nas-static-6bcf7895dd-5zgxz ls /data
nas1
# kubectl exec nas-static-6bcf7895dd-99ppg ls /data
nas1
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
420 1
|
7月前
|
运维 Kubernetes 持续交付
ACK One GitOps:让全球化游戏服务持续交付更简单
ACK One GitOps 致力于提供开箱即用的多集群 GitOps 持续交付能力,简化游戏等服务的多集群/多地域统一部署,让您更加专注于业务开发。
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
699 266
|
11月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
329 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
12月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
253 1
|
11月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
存储 Kubernetes 安全
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes提供了多种存储类型,满足不同的应用需求。`emptyDir`和 `hostPath`适用于临时和宿主机存储需求,`nfs`适用于共享存储,`PersistentVolumeClaim`和 `StorageClass`实现了持久存储的灵活管理。通过理解和配置这些存储类型,可以有效提升Kubernetes集群的存储管理能力。
643 13
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。

热门文章

最新文章

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多