k8s中使用volume

【云原生kubernetes】k8s数据存储之Volume使用详解【转】 通过之前学习了解到,k8s中Pod是最小的运行单元,Pod中运行的是一个个容器,但是容器的生命周期可能很短,被频繁地创建和销毁。当容器崩溃时文件丢失,kubelet 会重新启动容器,但容器会以干净的状态重启,之前保存在容器中的数据也会被清除;当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件;基于这些问题,k8s中就出现了“卷”这个组件来解决Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题,卷的核心是包含一些数据的目录,Pod 中的容器可以访问该目录。 阅读详情

kubernetes实现数据卷的方式是PV & PVC

PV有很多持久卷插件可以实现,例如:GCEPersistentDisk,AWSElasticBlockStore,NFS,ISCSI,RDB,Glusterfs,HostPath(单节点测试使用),本地持久卷

我们本次使用NFS方式,先介绍一下NFS。

NFS卷能将 NFS (网络文件系统) 挂载到您的 Pod 中。 不像 emptyDir 那样会在删除 Pod 的同时也会被删除,nfs 卷的内容在删除 Pod 时会被保存,卷只是被卸载掉了。 这意味着 nfs 卷可以被预先填充数据,并且这些数据可以在 Pod 之间”传递”。
NFS 是Network File System 的缩写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC远程掉用实现,其允许一个系统在网络上与他人共享目录和文件,通过使用NFS,程序可以像使用本地文件一样使用远端系统上的文件。NFS是一个非常稳定的, 可移植的网络文件系统,具备可扩展和高性能特性,达到了企业级应用质量标准。由于网络速度的增加延时降低,NFS一直是通过网络系统提供文件系统服务的有竞争力选择

NFS原理

NFS的工作原理是使用客户端/服务器架构,由一个客户端程序和服务器程序组成。 从客户端的角度来说,NFS 中的第一个操作称为 mount。Mount 代表将远程文件系统加载到本地文件系统空间中。该流程以对 mount(Linux 系统调用)的调用开始,它通过 VFS 路由到 NFS 组件。确认了加载端口号之后(通过 get_port 请求对远程服务器 RPC 调用),客户端执行 RPC mount 请求。这一请求发生在客户端和负责 mount 协议(rpc.mountd)的特定守护进程之间。这一守护进程基于服务器当前导出文件系统来检查客户端请求;如果所请求的文件系统存在,并且客户端已经访问了,一个 RPC mount 响应为文件系统建立了文件句柄。客户端这边存储具有本地加载点的远程加载信息,并建立执行 I/O 请求的能力。这一协议表示一个潜在的安全问题;因此,NFSv4 用内部 RPC 调用替换这一辅助 mount 协议,来管理加载点
由于VFS的存在,客户端可以像使用其他普通文件系统一样使用NFS文件系统

安装NFS服务端
  • 安装NFS服务端

    # ubuntu
    apt-get install -y nfs-kernel-server
    # centos
    yum -y install nfs-utils rpcbind
    
  • 创建共享文件目录,并给目录添加读写权限

    mkdir -p /kubernetes/volumes
    chmod a+rw /kubernetes/volumes
    
  • 配置NFS服务目录-打开文件/etc/exports在尾部添加内容

    /kubernetes/volumes *(rw,sync,no_subtree_check,no_root_squash)
    
  • 配置生效

    exportfs -r
    
  • 启动rpcbind、nfs服务

    systemctl start rpcbind
    systemctl start nfs
    
  • 在 server 端先自我测试一下是否可以联机,展示出连接目录

    showmount -e localhost
    

    命令解释

    配置项含义
    *任何ip都可以访问
    rw读写权限
    sync同步权限
    no_subtree_check如果输出目录是一个子目录,NFS服务器不检查其父目录的权限
    no_root_squash客户端连接服务端如果使用的也是root,那么也拥有对服务端分享目录的root权限
安装NFS客户端

我们找一个新的机器进行测试

  • 安装客户端

    yum -y install nfs-utils
    
  • 挂载

    # 创建挂载目录
    mkdir /testnfs
    # 挂载服务端
    mount -t nfs 10.10.103.80:/kubernetes/volumes /testnfs
    # 查看挂载结果
    df -h
    

    挂载之后,我们在客户端的/testnfs文件夹下创建文件,会发现服务端的/kubernetes/volumes文件夹下的文件创建成功了。

  • 取消挂载(非必须)

    # 取消挂载命令
    umount /testnfs
    

    挂载坑如果已经挂载了一个远程目录,服务端关闭,客户端进入根目录会失败,这时需要强制取消挂载 -lf

    umount -lf /testnfs
    
kubernetes 中使用数据卷

PV(Persistent Volume)是集群中的一块网络存储,和node一样也是集群的资源,PV和Volume类似,不过会有独立与Pod的生命周期,这一API对象包含了存储的实现细节,例如NFS,ISCSI或者其他云服务商提供的存储系统,PVC(Persistent Volume Claim)是用户的一个请求,跟pod类似,pod消费node资源,PVC消费PV资源。Pod能够申请特定的资源(CPU和内存),PVC能够请求特定的尺寸和访问模式(例如加载一个读写,以及多个只读实例)

PV 与PVC
PV是集群的资源。PVC对这一资源的请求,也是对资源的所有权检验,PV和PVC之间的互动遵循如下的生命周期:

供应: 集群管理员会创建一系列的PV,这些PV包含了为集群用户提供的真是存储资源,他们可利用kubernetes API 来消费。

绑定: 用户创建一个包含了容量可访问模式的持久卷申请,master会监听PVC的产生,并尝试根据请求内容查找匹配的PV,并把PV和PVC绑定,用户能够获取满足需要的资源, 并且在使用过程中可能超出请求数量,如果找不到合适的卷,这一申请就会持续处于绑定状态,一直到出现合适的PV,例如一个集群准备了很多的40G的持久卷,也无法响应41G的申请,除非把超过41G的PV加入集群

使用: pod把申请作为卷来使用。集群会通过PVC查找绑定的PV,并Mount给pod,对于支持多种访问方式的卷,用户在使用PVC作为卷的时候可以指定需要的访问方式,一旦用户拥有了一个已经绑定的PVC,被绑定的PV就归该用户所有了,用户的pod能够在pod的卷中包含PVC来访问他们占有的PV

释放: 当用户完成对卷的使用是,就可以利用API删除对应的PVC对象了。 而且他还可以重新申请,删除PVC后,对应的卷被视为“被释放”,但是这时还不能给其他的PVC使用,之前的PVC数据还保存在卷中,要根据策略来进行后续处理。

回收策略: PV的回收策略向集群阐述了在PVC释放卷的时候应如何进行后续工作,目前可以采用三种策略:Retain、Recycle、Delete

  1. Retain:保留策略允许重新申请这一资源。
  2. Recycle:基础擦除(rm -rf /thevolume/*)
  3. Delete:同时删除持久卷以及卷中存储的内容。如果插件支持。
创建PV

创建一个nfs-pv-logs.yml的配置文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv-logs
spec:
  # 设置容量
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  # 访问模式
  accessModes:
    # ReadWriteOnce:单节点加载读写
    # ReadWriteMany:多节点加载读写
    - ReadWriteMany
  # 回收策略,这里是人工重新申请
  persistentVolumeReclaimPolicy: Retain
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    # NFS服务端配置的路径
    path: /kubernetes/volumes
    # NFS服务端ip
    server: 10.10.103.80
    readOnly: false

创建之前在所有的node节点上安装nfs客户端

创建PVC

创建文件nfs-pvc-logs-login.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc-log-all
spec:
  accessModes:
    # 要和PV一致的访问模式,
    - ReadWriteMany
  # 按需分配资源
  resources:
    requests:
      storage: 1Gi

参考文档
kubernetes 官网-volumes
kubernetes 官网-persistent-volumes
github中的示例
百度词条

k8s数据存储之Volume使用详解 k8s数据卷使用 阅读详情

相关推荐

用Quartus II和LPM_ROM手把手复现西电计组课设:从微指令到五条指令的完整流程

本文详细介绍了使用Quartus II和LPM_ROM复现西电计组课设的完整流程,从微指令编写到五条指令的实现。通过环境搭建、LPM_ROM配置、微程序设计及调试技巧,帮助读者高效完成课程设计,避开常见问题。适合计组课程设计的学习者和实践者参考。

weixin_29288313的博客 460

k8s中的Volume

1. 背景     容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。 2. 概念 ...

weixin_43849415的博客 7825

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 265

Kubernetes(k8s)之Volume(卷)

apiVersion: v1 kind: Pod metadata: name: vol1 spec: containers: - image: busyboxplus name: vm1 command: ["sleep", "300"] volumeMounts: - mountPath: /cache name: cache-volume - name: vm2 image: nginx volumeMounts: .

Tuki来了 7268

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化

高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。

weixin_32075843的博客 194

YOLOv12改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv12的模型配置文件在中,里面包含yolov12的以及的不同大小的模型,本文将详细介绍一下YOLOv12模型文件中各参数的含义。

Limiiiing的博客 3278

Kubernetes(k8s)实战:深入详解Volume,详解k8s文件同步存储

Volume官网:https://kubernetes.io/docs/concepts/storage/volumes/容器中的磁盘上文件是短暂的,这给在容器中运行的重要应用程序带来了一些问题。首先,当一个容器崩溃时,kubelet会重启它,但是文件会丢失——容器以干净的状态开始。其次,当在一个Pod中一起运行容器时,通常需要在这些容器之间共享文件。Kubernetes的Volume 抽象解决了这两个问题。我们发现,使用volume形式,会与宿主机共享目录,里面数据内容是一致的。

秃了也弱了 1799

SAP CPI 如何代理第三方接口?

代理接口是指在系统 A 和系统 B 之间引入一个中间层(如 SAP CPI),由中间层负责接收来自系统 A 的请求,进行必要的处理或转换,然后将请求转发给系统 B。由于 OData 服务通常使用 JSON 格式的数据,而某些内部系统可能需要 XML 格式,因此我们添加一个 JSON 到 XML 的转换器,以确保数据格式的兼容性。为了确保返回的数据格式符合内部系统的要求,添加一个 XML 到 JSON 的转换器,将 OData 服务的响应从 XML 转换为 JSON。在集成包中,添加一个新的集成流,命名为。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1749

【k8s】8、数据存储

第八章 数据存储 ​ 在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。 ​ Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命容

努力充实,远方可期 948

SOME/IP协议详解「2.1.2·Payload数据类型序列化」

SOME/IP协议详解「2.1.2·Payload数据类型序列化」 点击返回雪云飞星的SOME/IP协议详解「总目录」 SOME/IP协议详解「2.1.2·Payload数据类型序列化」1 大小端问题2 数据对齐填充问题3 都有哪些数据类型 之前简单的概括了一下序列化/反序列化,就是降维打击,从这一章开始到2.1所有章节结束,都在讲解这个降维打击的详细规则与原理 1 大小端问题 首先什么是大小端: 大端:高字节存放到内存的低地址 小端:高字节存放到内存的高地址 假如有一个数据是0x12345678

雪云飞星的博客 4630

30、优化算法在芯片布局与药物设计中的应用

本文探讨了优化算法在芯片布局与药物设计中的关键应用。针对芯片布局问题,提出了一种改进的粒子群优化(PSO)方法,通过引入转向因子、重叠检测与消除机制以及优先处理约束模块,有效优化了芯片面积、线长和运行时间,并在有无布局约束条件下均优于传统方法。在药物设计领域,介绍了基于蚁群优化(ACO)的PLANTS算法,用于解决蛋白质-配体对接问题,通过离散化连续变量、信息素更新、局部搜索和聚类处理,提高了构象预测的准确性。文章还总结了两种算法的操作流程,并展望了未来在多约束集成与算法融合方向的发展潜力。

egg99的博客 95

【云原生之kubernetes系列】--volume的使用

概念上与 Pod 类似。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。如下表所示,提供者(驱动)的能力不同,每个 PV 卷的访问模式都会设置为对应卷所支持的模式值。当pod被创建时,会先创建emptyDir卷.只要该pod在该节点上运行,这个卷就会一直存在.被创建的时候这个卷是空的.pod中的容器可以读写该emptyDir卷中的文件.当pod被删除时,emptyDir将被永久删除.可以放一些缓存或日志等不重要的文件.

weixin_58519482的博客 1477

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1804

Kubernetes Azure Volume Drivers 使用指南

Kubernetes Azure Volume Drivers 使用指南 项目目录结构及介绍 https://github.com/Azure/kubernetes-volume-drivers 是一个专为Azure环境设计的Kubernetes存储驱动器集合。该项目划分为几个关键的子目录,以支持不同的存储解决方案: CSI (Container Storage Interface): 此目录...

gitblog_00557的博客 1118

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【一起来学kubernetes】20、Volume使用详解

Volume是Kubernetes抽象出来的对象,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下。通过Volume,Kubernetes实现了同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命周期不与Pod中单个容器的生命周期相关,当容器终止或者重启时,Volume中的数据也不会丢失。Kubernetes支持许多类型的Volume,Pod也能同时使用任意数量的Volume。

技术人集结地 1696

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

k8s的使用2:Kubernetes Volume与Kubernetes Configure

ConfigMap 是一个存储其他对象所需要使用的配置的API 对象。ConfigMap 使用data和binaryData字段,保存键值对数据。data字段,用来保存 UTF-8 字符串。binaryData字段,用来保存二进制数据(base64 编码的字串)。ConfigMap 的名字必须是一个合法的DNS 子域名。data或binaryData字段下面的每个键的名称都必须由字母、数字或者或组成。在data下保存的键名不可以与在binaryData下出现的键名有重叠。

m0_65060929的博客 247

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

k8s使用volume将ConfigMap作为文件或目录直接挂载_NET Core + Kubernetes:Volume

和 Docker 类似,Kubernetes 中也提供了 Volume 来实现数据卷挂载,但 Kubernetes 中 Volume 是基于 Pod,而不是容器,它可被 Pod 中多个容器共享,另外 Kubernetes 中提供比较丰富的 Volume 类型,如:emptyDir、hostPath、nfs、persistentVolumeClaim、downwardAPI、secret、confi...

weixin_39827585的博客 686

k8s使用volume将ConfigMap作为文件或目录直接挂载_Kubernetes 0-1 了解ConfigMap

几乎所有的应用都需要配置信息,在K8S部署应用,最佳实践是将应用的配置信息(环境变量或者配置文件)和程序本身分离,这样配置信息的更新和复用都可以更简单,也使得程序更加灵活。Kubernetes允许将配置选项分离到单独的资源对象ConfigMap中,本质上是一个键值对映射,值可以是一个短string串,也可以是一个完整的配置文件。本篇主要介绍ConfigMap资源的创建和使用。ConfigMap的创...

weixin_39934613的博客 4064

k8s - Volume 简介和HostPath的使用

官方定义:hostPath 卷能将主机节点文件系统上的文件或目录挂载到你的 Pod 中。虽然这不是大多数 Pod 需要的,但是它为一些应用提供了强大的逃生舱。简单来讲就是让k8s node 的目录or 文件map在你的POD 容器里至于为什么上面提到的逃生舱, 是因为假如你的POD 崩溃了or 被shutdown, 我们仍然可以在node对应的path上找到我们想要的数据(前提是把相应的数据output 到hostpath)但是 官方并不推荐使用hostpath 把数据输出到node上。

nvd11的专栏 1943

Kubernetes Volume Autoscaler 使用教程

Kubernetes Volume Autoscaler 使用教程 1. 项目介绍 Kubernetes Volume Autoscaler 是一个开源项目,旨在自动扩展 Kubernetes 中的持久卷(Persistent Volume,PV)。当持久卷接近满载时,该控制器会自动增加持久卷声明(PersistentVolumeClaim,PVC)的大小,从而避免手动调整卷大小的繁琐操作。该项目...

gitblog_00998的博客 469

从Docker到Kubernetes——Volume使用案例

文章目录Volume使用案例EmptyDirHostDirGCEPersistentDiskNFS Volume使用案例 EmptyDir EmptyDir类型的volume创建于pod被调度到某个宿主机上的时候,而同一个pod内的容器都能读写EmptyDir的同一文件。一旦pod离开了这个宿主机,EmptyDir中的数据就会被永久删除,所以目前EmptyDir类型的volume主要用作临时空间,...

No_Game_No_Life_的博客 494

Kubernetes(k8s)的Volume数据存储介绍和各种基本储存类型(EmptyDir、HostPath、NFS)的使用

目录1. 概述2. EmptyDir2.1 概述2.2 EmptyDir使用实战2.2.1 创建pod2.2.2 查看pod2.2.3 访问Pod中的Nginx:2.3.4 查看busybox容器的标准输出3. HostPath3.1 概述3.2 HostPath使用实战3.2.1 创建pod3.2.2 查看pod3.2.3 访问Pod中的Nginx:3.3.4 查看Pod所在node节点的日志4. NFS4.1 概述4.2 搭建NFS服务器4.3 NFS使用实战4.3.1 创建pod4.3.2 查看pod

Bulut0907 2407

k8s使用volume将ConfigMap作为文件或目录直接挂载_《蹲坑学kubernetes》之17-19:ConfigMap

ConfigMap:用于将应用的配置信息与程序的分离。这种方式不仅可以实现应用程序被的复用,而且还可以通过不同的配置实现更灵活的功能。在创建容器时,用户可以将应用程序打包为容器镜像后,通过环境变量或者外接挂载文件的方式进行配置注入。一、创建ConfigMap1、使用kubectl命令创建[root@k8s-master ~]# mkdir /data[root@k8s-master data]# ...

weixin_39593718的博客 940

K8S - Volume - NFS 卷的简介和使用

在之前的文章里已经介绍了 K8S 中两个简单卷类型 hostpath 和 emptydir但是这两种卷都有同1个限制, 就是依赖于 k8s nodes的空间如果某个service pod中需要的volumn 空间很大, 这时我们就需要考虑网络磁盘方案, 其中NAS 类型的Volume 是常用且简单的选择之一。

nvd11的专栏 1738

k8s 使用volume 磁盘映射

在 Kubernetes 中,Volume 是属于 Pod 对象的一部分。 所以,我们就需要修改这个 YAML 文件里的 template.spec 字段,如下所示: apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: ...

zhaoyangjian724的专栏 1756

kubernetes的ceph RBD volume(2): 使用Ceph RBD作为persistent volume

以下是使用ceph RBD作为persistent volume的例子:

junming_zhao的博客 792
上一篇: Kubernetes基础概念
下一篇: linux权限
RobertLee~~~~~~~~
博客等级 码龄18年 14粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值