作者 | 阚俊宝 阿里云技术专家 导读:云原生存储详解系列文章将从云原生存储服务的概念、特点、需求、原理、使用及案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战。 相关文章推荐: 云原生存储详解:云原生应用的基石 云原生存储详解:容器存储与 K8s 存储卷 云原生存储的两个关键领域:Docker 存储卷、K8s 存储卷; Docker 存储卷:容器服务在单节点的存储组织形式 K8s 是一个容器编排系统,其关注的是容器应用在整个集群的管理和部署形式,所以在考虑 K8s 应用存储的时候就需要从集群角度考虑。K8s 存储卷定义了在 K8s 系统中应用与存储的关联关系。 存储卷是一个集群级别的概念,其对象作用范围是整个 K8s 集群,而不是而一个节点; K8s 存储卷包含一些对象(PVC、PV、SC),这些对象和应用负载(Pod)是独立,通过编排模板进行关联; K8s K8s 为了实现上述复杂的存储卷编排能力,其实现架构也较为复杂,下节内容我们将为您介绍 K8s 的存储架构和实现流程。
Kubernetes(k8s)临时存储一、几种临时存储Kubernetes 为了不同的目的,支持几种不同类型的临时卷: emptyDir: Pod 启动时为空,存储空间来自本地的 kubelet 根目录 secret: 将不同类型的 Kubernetes 数据注入到 Pod 中 CSI 临时卷: 类似于前面的卷类型,但由专门支持此特性的指定 CSI 驱动程序提供 通用临时卷: 它可以由所有支持持久卷的存储驱动程序提供 存储空间来自本地的 kubelet 根目录(通常是根磁盘)或内存 apiVersion: v1kind: Podmetadata: name: "multi-container-pod" namespace hostPath官方文档:卷 | KubernetesapiVersion: v1kind: Podmetadata: name: test-pdspec: containers: - image: k8s.gcr.io DirectoryapiVersion: v1kind: Podmetadata: name: test-webserverspec: containers: - name: test-webserver image: k8s.gcr.io
最近在研究如何实现Database as a Service,给有状态的应用提供云原生持久化存储方案是最重要的因素,来自CNCF的孵化项目Rook就映入眼帘了。 翻译过来概况下 Rook是一个开源的云原生存储编排系统,提供平台、框架和支持,提供了一套多样化的存储解决方案,可以与云原生环境进行天然集成。 Rook利用云原生容器管理、调度和调度平台提供的设施,将存储软件转化为自我管理、自我扩展和自我修复的存储服务,实现自动化部署、启动、配置、扩容、升级、迁移、灾难恢复、监控和资源管理。 因此,Rook解决的问题是: 快速部署一套云原生存储集群; 平台化管理云原生存储集群,包括存储的扩容、升级、监控、灾难恢复等全生命周期管理; 本身基于云原生容器管理(如Kubernetes),管理方便。 以前苦于没有部署云原生存储系统,一直没法实践这些特性,这次得益于Rook的便捷性,赶紧来尝鲜下。
/provisioner-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/controller-expand-secret-name : rook-csi-rbd-provisioner csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node csi.storage.k8s.io ,例如层次化,csi.storage.k8s.io/provisioner-secret-name,csi.storage.k8s.io/controller-expand-secret-name 和 当使用rook搭建好集群后,它已经将用于身份验证和授权所需的 Kubernetes Secret 对象创建好了,使用下面命令可以查看: [root@k8s-a-master rbd]# kubectl 开始创建 kubectl create -f storageclass.yaml 创建后验证 # 查看 Rook CephBlockPool 的资源定义 [root@k8s-a-master rbd]
"LowerDir": "/var/lib/docker/overlay2/97d6b86a78f355c15fb43d539fc284b60f464c0ee768d87a8e5cbe62e3a62626 /diff:/var/lib/docker/overlay2/4649e6ac724d477b2fe8db2da934d572eaaaa946a847936794b506edf8b0c87d/diff" "UpperDir": "/var/lib/docker/overlay2/97d6b86a78f355c15fb43d539fc284b60f464c0ee768d87a8e5cbe62e3a62626 "WorkDir": "/var/lib/docker/overlay2/97d6b86a78f355c15fb43d539fc284b60f464c0ee768d87a8e5cbe62e3a62626 ", "Source": "/var/lib/docker/volumes/3b1eab4eb072a43375068c8ff534028de2a7f6dd6aeceb60c0d1584c4bc046a6
云原生存储作为一种存储系统,可靠性、性能、高可用等特点都是必不可少的。除此之外,云原生环境对存储系统提出了更高的要求。 面对诸多挑战云原生存储应具备哪些特点呢? 云原生生态 云原生存储还需要能够很好地和其他云原生基础设施配合,例如云原生数据库,使得云原生数据库可以真正的在公有云和私有云都能够得到一致的用户体验。 市场上的云原生存储方案 为了更好的理解在云环境中如何构建云原生存储,先看几个在Kubernetes企业环境中部署主流的云原生存储方案。 在CNCF公布的《2019 Cloud Native Computing Foundation》市场调研中,分析了当前和未来K8s采用情况,其中许多用户将他们当前的存储和云的供应商列为云原生候选名单中。 但是,它们没有很好地集成到K8s工具和工作流中,因而可能更难以维护和配置。 剩下的第三梯队产品,基本是由以存储为中心的服务商提供的服务,如Dell EMC、NetApp和Pure Storage。
为什么容器技术如此火热 云原生时代,容器凭借其易移植、云上云下自由运行、自由迁移的特点,得到了众多企业的青睐。 当前,企业容器化改造面临四大挑战: 1、高可用能力不足:容器挂死后,保存在本地的数据丢失,数据找回需要耗费大量人力、时间; 2、性能不足:大规模k8s平台,应用多、日志多、并发大,日志存储、日志分析存在性能瓶颈 SAN存储上的数据无法在上千台计算集群中共享,因此不是容器存储的最佳选择。 三大组件,并同广泛的容器生态伙伴合作,已完成与Kubernetes、Openshift、VMware Tanzu、Rancher、CCE敏捷版、FusionCompute、FusionStage、道客云、 灵雀云等业内主流的容器管理平台的对接,帮助客户实现容器的快速部署和稳定运行。
OrioleDB – 构建现代云原生存储引擎 OrioleDB是PG的一个新存储引擎,为世界上最受欢迎的数据库平台带来一种现代化数据库容量、功能和性能方法。 通过扩展和增强当前的表访问方法,OrioleDB为未来更强大的存储模型打开了大门,这些模型对云和现代硬件架构进行了优化。目前是标准的PG许可。 1)专为现代硬件而设计。 OrioleDB的设计针对数十个和上百CPU内核现代服务器,避免CPU瓶颈,提供了针对现代存储技术,例如SSD和NVM,的使用方法。 2)减少维护需求。 OrioleDB内存中page直接连接到存储层的页。消除了对缓冲区映射及相关瓶颈。此外,内存中页面读取不涉及原子操作。这些设计决策共同将PG的垂直扩展性提升到了一个全新的水平。 旧版本的元组不会导致主存储系统膨胀,而是将其放逐到undo链的undo日志中。页级别的undo记录允许系统很方便地尽快回收已删除元组占用的空间。
什么是云原生? “云原生”是一个被人们经常使用但不是定义很清楚的一个术语。我们认为“云原生应用”应有以下特点: 1. 通过明确定义云原生的含义,我们可以更好地定义各种云原生技术组件的职责划分。这些云原生应用组件的实例包括调度软件、网络软件以及存储软件。 是什么让Portworx与众不同? • 支持适用于跨数据中心跨云的存储集群云原生架构(私有或公有云)。 2. 自动调整: Portworx根据每个服务器的配置参数自动调优最佳数据放置和分层算法。 Lighthouse云监控管理: 您的数据可以保存在您的云中,也可以存储在本地环境,都可以通过Portworx的Lighthouse云监控服务和直观的用户界面来管理。 4. 云原生扩展,包括: •自动快照和备份到S3 •数据反馈,云中的虚拟卷可以访问来自不同云或数据中心的数据 •CoS与不同EBS卷类型配对 •Restful APIs可用于查询命名空间的修改情况——避免了在元数据管理中进行昂贵的命名空间操作
本期金融云原生漫谈,将和您一起探寻如何打造更适合云原生的数据存储方案。 近年来,金融服务形态经历了巨大的变化。线上业务的兴起,带来了海量的数据接入和业务的不确定性。 同时,存储系统自身的自动化运维能力,也成为IT建设者关注的焦点…… 那么,云原生时代,我们需要什么样的数据存储方案? 容器云数据持久化存储方案怎么选? 首先,容器云平台的底座主流是Kubernetes,所以从理论上来说,只要支持K8s CSI存储接口的商用存储产品,就可以选择使用。 是基于CSI插件的方式提供对于存储实现扩展,不仅仅是存储协议,具体存储设备也需要提供对应的CSI才能实现与k8s最佳的融合。 现在国内容器云产品在K8s 的工作负载支持方面都做得不错,以灵雀云为例,我们在产品中使用K8s的Operator技术进行有状态应用的部署、运维等能力,并且提供中间件的容器化服务 RDS 能力,是对数据服务
开发者学习 kubernetes 可以使用的环境有几种: 使用云厂商提供的套装 在云主机上自己安装和配置 在开发者主机上安装和配置 从成本上来说,在开发者主机上安装和配置是比较方便的。 user: kind-hello-k8s name: kind-hello-k8s - context: cluster: kind-test user: kind-test Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。Pod是 K8s 的最小可部署单元。 worker 两种节点 我们也掌握了安装 k8s 的概念 kubectl 可以用来和 k8s 集群通讯,是 k8s 的命令行客户端 使用 minikube/kind 可以创建学习环境 k8s 集群 使用 kubeadm 可以创建生产环境 k8s 现在,我们简要介绍下 k8s 的核心组件 etcd : 实现了raft分布式一致性协议的元数据存储 apiserver: 提供了元数据读写 etcd 的api
北京时间11月5日消息,云存储服务提供商Dropbox宣布与微软达成协议,将对后者旗下的桌面、移动及网页版Office套件提供原生的云服务支持。 外界猜测,Dropbox将与微软自家的云服务OneDrive同时存在,用户在使用时可任选其一,并能直接打开和编辑存于该服务下的文档文件。 目前,Dropbox拥有3亿以上的个人用户(70%非美国本土)和400万企业用户,其服务平台存储的Office文档高达350亿份。
Rook 是一个开源 cloud-native storage orchestrator(云原生存储编排器),为各种存储解决方案提供平台、框架和支持,以与云原生环境进行原生集成。 Rook 将存储软件转变为自我管理(self-managing)、自我扩展(self-scaling)和自我修复(self-healing)的存储服务。 Rook 使用底层云原生容器管理、调度和编排平台提供的设施来执行其职责。 Rook 利用扩展点深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全、监控和用户体验提供无缝体验。 这很重要,因为它表明 Rook 已成功扩展 Kubernetes,使 Cassandra 集群成为 Kubernetes 云原生环境中的一等公民。 Storage 有关 Rook 公开的三种存储类型的演练,请参阅以下指南: Block:创建要由 Pod 使用的块(block)存储 Object:创建可在 Kubernetes 集群内部或外部访问的对象存储
图片网络和存储原理前言博主语录:一文精讲一个知识点,多了你记不住,一句废话都没有经典语录:勇者愤怒,抽刃向更强者;怯者愤怒,却抽刃向更弱者 图片 **文末惊喜** 一、Docker存储1、镜像如何存 41e4fa41a2ad1dca9616d4c8254a04c4d9d6a3d462c862f1e9a0562de2384dbc- init/diff:/var/lib/docker/overlay2/e3b8bdbb0cfbe5450696c470994b3f99e8a7942078e2639a788027529c6278f7 在容器中添加新数据或修改现有数据的所有写操作都存储在此可写层中。 删除容器后,可写层也会被删除。 基础图像保持不变。 卷是在Docker中持久存储数据的最佳方法。 Bind mounts(绑定挂载) :可以在任何地方 存储在主机系统上。 它们甚至可能是重要的系统文件或目录。 3、docker run -d -P --name tomcat --net bridge tomcat:8 3.2、网络模式图片3.3、自建网络测试 1、docker0网络的特点。
worker node and list the interfaces using, ip route and filter interface matching the pod IP. root@k8s-node calixxxxxxxxx -w /opt/capture.pcap & https://iximiuz.com/en/posts/container-learning-path/ https://learnk8s.io
CurveBS 的核心应用场景主要包括: 虚拟机/容器的性能型、混合型、容量型云盘或持久化卷,以及物理机的远程存储盘 高性能存算分离架构:基于RDMA+SPDK的高性能低时延架构,支撑MySQL、kafka 等各类数据库、中间件的存算分离部署架构,提升实例交付效率和资源利用率 CurveFS 的核心应用场景主要包括: AI训练(含机器学习等)场景下的高性价比存储 大数据场景下的冷热数据自动化分层存储 公有云上高性价比的共享文件存储 :可用于AI、大数据、文件共享等业务场景 混合云存储:热数据存储在本地IDC,冷数据存储在公有云 图片 使用 CurveAdm 部署 CurveFS CurveAdm 是 Curve 团队为提高系统易用性而设计的工具 minutes 426ac76e28f9 metaserver curve 1/1 f413efeeb5c9 Up 17 minutes 部署 Rainbond Rainbond 是一个云原生应用管理平台 图片 未来规划 Rainbond 社区未来会使用 Curve 云原生存储作为 Rainbond 底层的共享存储,为用户提供更好、更简单的云原生应用管理平台和云原生存储,共同推进开源社区生态以及给用户提供一体化的解决方案
在腾讯20多年的发展历程中,存储并非像其他技术那样万众瞩目,它更像是盖房子时的“地基”,看不见,却不可或缺。 随着数据量爆炸的时代来临,在网络安全政策越来越完善的情况下,如何对存储的数据进行强有力的内容安全保障,已经受到各界的关注。 而腾讯云对象存储内容安全依托于腾讯优图实验室的识别技术,联合腾讯安全天御内容安全团队推出了全数据内容审核服务。 随着2021“清朗”系列专项行动开展—— 治理网络乱象 净化网络空间,腾讯云对象存储(COS)承担起社会责任,将20多年积累的对抗经验和数据能力用于帮助云用户解决安全难点和痛点,推出“净网行动”,全力净化网络环境 将来我们会不忘初心,牢记使命,为您提供更安全的云服务!
云原生-K8s安全-etcd未授权访问 如上图所示:etcd服务是运行在master节点上的,master节点上查看该服务默认通过证书认证,主要存放节点的数据,如一些token和证书。 kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token=“ey…” -n kube-system get pods 云原生 Dashboard如图: 有漏洞的情况下:(没搭建出来……) 点击跳过直接进入控制面板 利用流程:找到暴露面板->dashboard跳过-创建或上传pod->进入pod执行-利用挂载逃逸 云原生 K8s configfile作为K8s集群的管理凭证,其中包含有关K8s集群的详细信息(API Server、登录凭证)。 连接pod后进行容器挂载逃逸 kubectl exec -it xiaodisec bash -n default --kubeconfig=config cd /mnt chroot . bash 云原生
因此云原生存储的概念也在云原生的基础上应运而生,接下来本文将会逐步梳理云原生存储的概念、工具的选型,最后会选择一个代表性的云原生存储工具来演示如何使用。 作者:郭杨勇 单位:中国移动智慧家庭运营中心 1 云原生存储的概念 云原生存储的概念来源于云原生应用,顾名思义:一个应用为了满足云原生特性的要求,其对存储所要求的特性是云原生存储的特性,而满足这些特性的存储方案 以上满足云原生基本要求的存储方案中,公有云存储、商业化的私有云存储的部署位置和成本的限制,无法完全应用在私有云环境,而基于开源架构自建的云存储,可靠性不高,且维护成本高,还无法完全与云原生集群实现一体化运营 2 开源容器存储的技术路线 图2 如上图2所示,目前比较主流的开源容器存储解决方案,主要包括: 基于云原生社区重新造轮子--原生方案:基于容器化和k8s的应用场景,单独开发一套比较轻量的分布式存储系统 移植传统的分布式存储--移植方案:基于传统的分布式存储框架,进行容器化和k8s的编排,移植到k8s集群中部署。
例如 centos 上有 yum 例如 ubuntu 上有 apt-get Mac系统上有包管理软件: 例如 brew Windows 上也有可用的包管理软件: 例如 scoop 例如 choco 云原生的事实标准平台 k8s 上也可以安装各种组件和服务。 而 helm 就是 k8s 的包管理软件,用来给 k8s 平台安装各种组件包或者服务包。 在不同平台上,通过对应平台的包管理软件,可以快速安装 helm 客户端命令。 Repository:是 chart 的存储库。 /chart/hello-py/ --generate-name 检测下 k8s 的 deployment 和 sevice: 端口转发: 访问服务: helm 可以规范化k8s