云原生必备知识: 应用储存

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解决上述的两个问题。在Docker有存储卷的概念卷,但Docker中存储卷只是磁盘的或另一个容器中的目录,并没有对其生命周期进行管理。Kubernetes的存储卷有自己的生命周期,它的生命周期与使用的它Pod生命周期一致。因此,相比于在Pod中运行的容器来说,存储卷的存在时间会比的其中的任何容器都长,并且在容器

所属技术领域:

云原生

| 名词定义 |

由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解决上述的两个问题。
在Docker有存储卷的概念卷,但Docker中存储卷只是磁盘的或另一个容器中的目录,并没有对其生命周期进行管理。Kubernetes的存储卷有自己的生命周期,它的生命周期与使用的它Pod生命周期一致。因此,相比于在Pod中运行的容器来说,存储卷的存在时间会比的其中的任何容器都长,并且在容器重新启动时会保留数据。当然,当Pod停止存在时,存储卷也将不再存在。在Kubernetes支持多种类型的卷,而Pod可以同时使用各种类型和任意数量的存储卷。
在Pod中通过指定下面的字段来使用存储卷:
• spec.volumes:通过此字段提供指定的存储卷
• spec.containers.volumeMounts:通过此字段将存储卷挂接到容器中

| 技术特点 |

1通过scale来完成扩容或缩容
假设 redis-slave 这个pod原来定义了5个副本(reolics:5)
扩容到10个,执行命令: kubectl scale rc redis-slave --replicas=10
缩容到2个,执行命令:kubectl scale rc redis-slave --replicas=2
2动态扩容缩容(HPA)
通过对cpu使用率的监控,HPA(Horizontal Pod Autoscaler),来动态的扩容或缩容。pod cpu使用率是靠heapster组件来获取的,所以要预先安装好。
创建HPA:
在创建HPA前需要已经存在一个RC或Deployment对象,并且该RC或Deployment中的Pod必须定义 resource.request.cpu的请求值,否则无法获取cpu使用情导致HPA 无法工作
| 相关词 |

  1. 本地存储,常用的有 emptydir/hostpath;
  2. 网络存储:网络存储当前的实现方式有两种,一种是 in-tree,它的实现代码是放在 K8s 代码仓库中的,随着 K8s 对存储类型支持的增多,这种方式会给 K8s 本身的维护和发展带来很大的负担;而第二种实现方式是 out-of-tree,它的实现其实是给 K8s 本身解耦的,通过抽象接口将不同存储的 driver 实现从 K8s 代码仓库中剥离,因此 out-of-tree 是后面社区主推的一种实现网络存储插件的方式;
  3. Projected Volumes:它其实是将一些配置信息,如 secret/configmap 用卷的形式挂载在容器中,让容器中的程序可以通过 POSIX 接口来访问配置数据;
  4. emptryDir (本地数据卷)
    emptyDir类型的Volume在Pod分配到Node上时被创建,Kubernetes会在Node上自动分配一个目录,因此无需指定宿主机Node上对应的目录文件。 这个目录的初始内容为空,当Pod从Node上移除时,emptyDir中的数据会被永久删除。emptyDir Volume主要用于某些应用程序无需永久保存的临时目录,多个容器的共享目录等。
  5. hostPath(本地数据卷)
    hostPath类型的存储卷用于将宿主机的文件系统的文件或目录挂接到Pod中,除了需要指定path字段之外,在使用hostPath类型的存储卷时,也可以设置type,type支持的枚举值由下表。另外在使用hostPath时,

需要注意下面的事项:
 具有相同配置的Pod(例如:从同一个podTemplate创建的),可能会由于Node的文件不同,而行为不同。
 在宿主机上创建的文件或目录,只有root用户具写入的权限。您要么在容器中以root身份运行进程,要么在主机上修改的文件或目录的权限,以便具备写入内容到hostPath的存储卷中。

  1. nfs(网络数据卷)
    在Kubernetes中,可以通过nfs类型的存储卷将现有的NFS(网络文件系统)到的挂接到Pod中。在移除Pod时,NFS存储卷中的内容被不会被删除,只是将存储卷卸载而已。这意味着在NFS存储卷总可以预先填充数据,并且可以在Pod之间共享数据。NFS可以被同时挂接到多个Pod中,并能同时进行写入。需要注意的是:在使用nfs存储卷之前,必须已正确部署和运行NFS服务器,并已经设置了共享目录。
  2. persistentVolumeClaim
    persistentVolumeClaim类型存储卷将PersistentVolume挂接到Pod中作为存储卷。使用此类型的存储卷,用户并不知道存储卷的详细信息。
  3. subPath
    有时,可以在一个pod中,将同一个卷共享,使其有多个用处。volumeMounts.subPath特性可以用来指定卷中的一个子目录,而不是直接使用卷的根目录。
  4. secret(信息数据卷)
    Kubemetes提供了Secret来处理敏感数据,比如密码、Token和密钥,相比于直接将敏感数据配置在Pod的定义或者镜像中,Secret提供了更加安全的机制(Base64加密),防止数据泄露。Secret的创建是独立于Pod的,以数据卷的形式挂载到Pod中,Secret的数据将以文件的形式保存,容器通过读取文件可以获取需要的数据。

适用场景:

• 场景一:如果 pod 中的某一个容器在运行时异常退出,被 kubelet 重新拉起之后,如何保证之前容器产生的重要数据没有丢失?
• 场景二:如果同一个 pod 中的多个容器想要共享数据,应该如何去做?
以上两个场景,其实都可以借助 Volumes 来很好地解决

资料来源:

  1. 名词定义:https://www.cnblogs.com/hongdada/p/11586514.html
  2. 技术特点:简书https://www.jianshu.com/p/d867539a15cf
  3. 适用场景:
    https://yq.aliyun.com/articles/720251?spm=a2c4e.11155472.0.0.68b67958mJPSr4
  4. 相关词:https://www.cnblogs.com/hongdada/p/11586514.html
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6天前
|
运维 Cloud Native 持续交付
探索云原生架构:构建现代应用的基石
【7月更文挑战第9天】本文深入探讨了云原生架构的核心概念、关键技术组件以及实施的最佳实践。通过分析云原生技术如何促进微服务架构的实现,容器化技术的利用,以及持续集成与持续部署(CI/CD)流程的自动化,本文旨在为读者提供一个全面的云原生技术框架视图,并揭示其在加速企业数字化转型过程中的关键作用。
|
5天前
|
Kubernetes Cloud Native 安全
探索云原生技术在现代企业中的应用与挑战
随着云计算技术的不断进步,云原生已成为推动企业数字化转型的关键力量。本文将深入探讨云原生的核心概念、关键技术以及在实际应用中所面临的挑战和解决方案。通过分析具体案例,本文旨在为读者提供一套完整的云原生技术应用框架,帮助企业有效利用云原生技术提升业务灵活性和市场竞争力。
|
5天前
|
Cloud Native 安全 持续交付
云原生技术在现代企业中的应用与挑战
本文深入探讨了云原生技术如何革新现代企业的IT架构,并分析了在实施过程中所面临的主要挑战。通过具体案例分析,本文揭示了云原生技术在提高业务敏捷性、降低成本和促进创新方面的巨大潜力,同时也指出了企业在采用云原生技术时需谨慎应对的技术复杂性和安全风险等问题。
16 0
|
2天前
|
运维 Cloud Native Devops
云原生技术在现代企业中的应用与挑战
【7月更文挑战第13天】本文深入探讨了云原生技术在现代企业中的实际应用情况,包括其带来的优势和所面临的挑战。通过分析云原生的核心概念、主要技术组件以及在不同行业中的应用场景,文章揭示了云原生技术如何助力企业实现快速迭代、弹性扩展和自动化管理。同时,本文也指出了企业在采纳云原生技术过程中可能遇到的技术复杂性、安全风险和文化适应性等问题,并提出了相应的解决策略。
|
3天前
|
Cloud Native 安全 API
云原生架构在现代企业中的应用与挑战
随着云计算技术的飞速发展,云原生架构逐渐成为推动企业数字化转型的重要力量。本文深入探讨了云原生架构的核心组件、实施策略以及面临的主要挑战,旨在为读者提供一套系统的云原生应用框架和解决方案。通过分析多个行业案例,本文揭示了云原生技术如何助力企业提升业务灵活性、加快产品上市时间并优化资源管理。
|
4天前
|
Kubernetes Cloud Native Devops
云原生技术在现代企业中的应用与挑战
本文深入探讨了云原生技术如何革新现代企业的IT架构,提升业务的灵活性和扩展性。通过分析Kubernetes容器编排、微服务架构以及DevOps文化的应用案例,揭示了云原生技术带来的效率提升和成本优化。同时,文章也指出了企业在采用云原生技术时面临的安全、技术复杂性和人才缺乏等挑战,并提供了应对策略。
|
6天前
|
运维 Cloud Native Devops
云原生架构在现代企业中的应用与挑战
随着数字化转型的深入,云原生技术成为支撑企业创新和灵活性的关键。本文将探讨云原生架构的核心概念、优势以及在实际应用中面临的主要挑战。通过分析不同行业的案例,我们将揭示云原生如何助力企业实现资源的最优配置和业务流程的自动化,同时指出安全性、合规性和技术复杂性等实施障碍,为读者提供一套实施云原生架构时的考量框架。
|
8天前
|
Kubernetes Cloud Native 安全
云原生技术在现代企业中的应用与挑战
【7月更文挑战第7天】随着数字化转型的深入,云原生技术已成为推动企业IT架构现代化的关键力量。本文将探讨云原生技术的基本原理、核心组件及其在现代企业中的具体应用场景。同时,我们也将分析实施云原生技术时可能遇到的挑战和相应的解决策略,以期为企业提供一条清晰的云原生转型路径。
|
7天前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
15天前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎产品使用合集之在SAE2.0上的应用如何访问云原生数据库PolarDB MySQL版集群
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。