pause容器为基础架构容器,每一个节点都有一个pause镜像, 为每一个pod提供底层基础支撑设备,所有pod中容器会共享此容器的网络空间,存储卷也是

还可使用csi,存储插件。

使用存储卷步骤1.在pod中配置使用存储卷,2.在pod中的容器定义挂载存储卷则可使用

配置volume示例

apiVersion: v1
kind: Pod
metadata:
name: myapp
mamespace: vol
labels
app: myapp
spec
#nodeName: node3 #此方式可以固定pod调度的节点
containers:
- name: myapp
image: ikubernetes/ myapp:v1#镜像
volumeMounts :#定义挂载内容
- name: webstor #使用的存储卷名称,这跟下面volume字段相同表示使用webstor这个存储卷
mountPath: /usr/share ng inx/html#挂载至容器中哪个目录
readOnly: true #自读方式挂载
volumes : #volumes字段定义了paues容器关联的宿主机或分布式文件系统存储卷
- name: webstor #存储卷名称
hostPath : #路径,为宿主机或其他存储路径
path: /data/volumes/myapp
type:DirectoryOrCreate #定义类型,这表示如果宿主机没有此目录则会自动创建

kubectl describe pod myapp -n vol #查看pod内部状态。

此pod被调度至node3节点。传递一个页面至node3中由我们在yml配置文件中定义的路径。即可访问



这个方式只能在单独节点创建,如果pod调度至别的节点则关联存储卷会失败

存储卷类型:

local方式挂载:可挂载至本地磁盘,硬盘。

emptyDir:可使用节点中的多哥容器使用宿主机部分内存当作缓存来共享文件。当pod被删除之后empdir即消失

使用外部存储nfs作为存储卷

1。构建nfs文件系统

yum install nfs-utils -y #在集群每个节点都要安装
mkdir -p /vols/v{1,2,3,4,5}创建目录
vim /etc/exports
/vols/v1 192.168.1.0/24(rw,no_root_squash)#将目录导出给k8s集群所在网段
systemctl start nfs #启动nfs服务 ##配置文件
apiversion: u1
kind: Pod
metadata
name: wol -nfs -pod
namespace: vol
labels
app: redis
spec
containers
- name: redis
image: redis :alpine
ports : #定义容器内端口
- containerPort: 6379
name : redis
volumeMounts
- mountPath: /data#关联至容器内目录
name: data#存储卷名称
volumes :
- name: data
nfs: #定义存储卷格式使用nfs
server: 192.168.1.199 #指定nfs主机
path: /vols/v1#指定nfs挂着卷 kubectl apply -f vol-nfs.yaml#应用文件



此时可以跨节点保存数据,也不怕pod被调度至其他节点了

使用pv。pvc

pv:是指将外部存储系统的某目录,磁盘,云盘等抽象为k8s集群可用存储单元。pv为集群级别资源。且一个名称空间只能使用一个pv,需要将pv注册至名称空间

需要创建一个pvc将请求占用pv,即可一一对应(binding)一旦占用一个pv之后空间中的pod就可使用pvc了。

pv回收策略(reclaim):

delete

Recycle(废弃)

Retain

pv生命周期。

供给存储单元

绑定

使用

回收

配置过程。



配置好外部存储系统

apiVersion: v1
kind: Persistentvolume #类型为PV
metadata #元数据。注意此处没有名称空间,因为pv属于集群资源
name: pu-nfs-v2
labels:
storage: nfs
spec:
#定义访问模式。单路读写,多路读写,多路只读
accessModes [ "ReadwriteOnce ","ReadwriteMany" ,"ReadOnlyMany"]
capacity: #定义了存储空间大小限制
storage: 5Gi#限制为5G
volumeMode: Filesystem#存储卷类型。有文件系统,和块设备等
persistentvolumeReclaimPolicy: Retain #回收策略。删除了pvc之后pv怎么处理retain表示删除pvc时保存pv中数据
nfs : #nfs定义
server: 192 .168.1.199
path: /vols/v2

而后在名称空间中定义pvc来请求这个pv资源

kind: PersistenVolumeClaim
apiVersion: v1
metadata:
name: redis-data
mamespcae: vol#pvc属于名称空间级别
spec :
accessModes :#访问模式。需要少于pv的三种类型才可被匹配
- ReadWhriteOnce
volumeMode: Filesystem
resources:#资源配置
request : #请求资源,与Pod中资源限制不同
storage: 3Gi #磁盘大小为3G



而后此pvc会自动关联至pv,因为此pv多路读写,多路只读,单路读写,而且空间为5G高于pvc的条件。

创建Pod使用pvc资源
apiVersion: v1
kind: Pod
metadata
name: redis -demo
namespace: vo1
labels
app: redis -demo
spec
containers:
name: redis -demo
image: redis:alpine #容器镜像
volumeMounts :#定义容器存储卷
name:data
mountPath: /data#挂载目录
volumes : #定义存储卷
name: data#名称
persistentvollumeClaim : #使用存储卷类型。这里为pvc
claimName: redis-data #绑定同一名称空间中的pvc。当作自己的存储卷

pod创建成功之后可在redis存入数据,将会保存至存储节点中



pv回收顺序先删除pod>pvc>pv。

k8s之volume的更多相关文章

  1. 容器编排系统K8s之Volume的基础使用

    前文我们聊到了k8s上的ingress资源相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14167581.html:今天们来聊一下k8s上volum ...

  2. k8s namespace/volume

    https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/ 只挑个人感觉使用较多/比较重要的点来说 ...

  3. k8s local volume 和host path volume的区别

    k8s提供多种volume接口,其中local 和host path是容易混淆的两个接口.下面这篇文章解释了两者的区别: https://groups.google.com/forum/#!topic ...

  4. 6.k8s.存储Volume.PV.PVC

    #Volume Volume 解决数据持久化和容器间共享数据 Kubernetes支持几十种类型的后端存储卷 #hostPath挂载实例,挂载Node节点/tmp/test-volume目录到容器/t ...

  5. Kubernetes --(k8s)volume 数据管理

    容器的磁盘的生命周期是短暂的,这就带来了许多问题:第一:当一个容器损坏了,kubelet会重启这个容器,但是数据会随着container的死亡而丢失:第二:当很多容器在同一Pod中运行的时候,经常需要 ...

  6. k8s volume

        只有nfs和rbd的,本人翻译确实很渣         在容器中磁盘文件寿命是短暂的,当在容器中运行一些重要程序时,这会产生一些问题. 首先,当一个容器崩溃后,kubelet将重新启动该容器, ...

  7. [经验交流] k8s mount 文件到容器目录

    docker 的 volume 可以 mount 单个文件(比如单个配置文件)到容器目录.同时保留原目录的内容.放到 k8s 中,结果却变成了这样:k8s 的 volume 把文件mount 到容器目 ...

  8. 理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  9. k8s 架构浅析

    文章目录 目录 Kubernetes 的电梯间演讲 Kubernetes 的核心层级对象 Kubernetes 的组件架构 Kubernetes 的组件通信协议/接口 Kubernetes 的分层架构 ...

随机推荐

  1. org.apache.hadoop.fs.FsUrlStreamHandlerFactory 在哪个jar包

    org.apache.hadoop.fs.FsUrlStreamHandlerFactory在org.apache.hadoop类中,org.apache.hadoop在hadoop安装目录下.

  2. 经典面试题之——如何自由转换两个没有继承关系的字段及类型相同的实体模型,AutoMapper?

    相信很多童鞋们都被问到过这个问题,不管是在面试的时候被问过,还是笔试题里考过,甚至有些童鞋们找我要学习资料的时候我也考过这个问题,包括博主我自己,也曾被问过,而且博主现在有时作为公司的面试官,也喜欢问 ...

  3. 百度URL参数解析

    在用Python爬取百度搜索的内容时,发现百度搜索的url非常的长,往往会跟一大段的参数,但其实很多参数都是没有必要的,如同样是搜索java关键字,可以通过 http://www.baidu.com/ ...

  4. vba实现工具的序列号验证框架

    对于密码破译方面笔者不太懂,之前对于各种序列号的激活也有些臆测,自己根据想法做了个序列号验证的小框架,以后做的工具也可以用之保护一下下... 主要思路是:用户打开小工具后,系统检测是否已激活,如果未激 ...

  5. vue脚手架(vue-cli)老版本(2.xx版)的使用

    1. 在idea新建一个Static Web项目 2. 在新建的项目下打开cmd 3. 输入安装脚手架命令:npm install -g vue-cli 4. 查看安装的版本:vue -V   (2. ...

  6. Label&Button

    Button中的bg参数设置按钮背景颜色,fg参数设置字体颜色 pack中的fill参数告诉Packer让QUIT按钮占据剩余的水平空间,而expand参数则引导它填充整个水平可视空间,将按钮拉伸到左 ...

  7. SQLite接口函数 - C核心api实践与总结

    SQLite核心源代码由C语言写就,同时提供了很多的扩展包可应用于其他编程语言和类库,如Python.Ruby.Java.Perl..Net/C#.Qt和ODBC.在很多情况下,针对一种语言有很多扩展 ...

  8. [开源]Gin + GORM + Casbin+vue-element-admin 实现权限管理系统(golang)

    简析 基于 Gin + GORM + Casbin + vue-element-admin 实现的权限管理系统. 基于Casbin 实现RBAC权限管理. 前端实现: vue-element-admi ...

  9. Java8 集合相关操作

    // java8 集合快速转成string List<String> cities; String citiesCommaSeparated = String.join(",&q ...

  10. RabbitMq 概述

    RabbitMQ是实现了高级消息队列协议(Advanced Message Queueing Protocol , AMQP)的开源消息代理软件(亦称面向消息的中间件). 1.AMQP协议 Rocke ...