一 卷的由来以及种类和常用的卷的类型

  前面介绍了大部分都是pod的管理以及在集群内部和集群外部如何访问pod,但是我们也了解到,pod是有生命周期的,当pod所在节点下线,或者等其他原因原因导致pod需要中止服务,此时

之前pod里面存储的数据也会随之而消失,所以这里就需要一个持久化存储手段,kubernets提供了一种持久化存储的方式称之为卷,并且根据可存储的内容分为很多种类

  • emptyDir---用于存储临时数据的简单空目录
  • hostPath---用于将目录从工作节点的文件系统挂载到pod中
  • gitRepo---用于检出Git仓库的内容来初始化的卷
  • nfs---挂载到pod中的NFS共享卷
  • configMap,secret,downwardAPI---用于将集群部分资源和集群信息公开个给pod的特殊类型的卷
  • (persistentVolumeClaim)pvc---一种使用预置或者动态配置的持久化存储类型(应用的较为多)

二 emptyDir的应用以及介绍

  2.1  emptyDir最大的特点就是与之关联的pod可以写入任何形式的文件,并且它的生命周期和pod的生命周期保持一致,当pod消失之后该卷也会随之消失,而最大的作用其实是在pod的不同的

容器之间共享数据,可以将一个或若干个emptyDir挂载在一个pod的多个容器上,由于容器之间是相互隔离的,所以无法通信,但是通过这种挂载卷的形式就使得数据能够流通。

  2.2 一个pod里面带有2个容器,并且通过挂载卷的方式使其相互通信的配置如下

apiVersion: v1
kind: Pod
metadata:
name: fortune
spec:
containers:
- image: luksa/fortune
name: html-generator
volumeMounts:
- name: html
mountPath: /var/htdocs
- image: nginx:alpine
name: web-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
emptyDir: {}
  • 这个pod里面定义了2个容器,并且还挂载了一个名为html的空白卷
  • 分别挂载在nginx容器和fortune容器的文件系统上面某个位置,如此就可以让本来互相隔离的容器通过这个来通信

  

  2.3查看pod的状态

[root@node01 ~]# k get po
NAME READY STATUS RESTARTS AGE
fortune 2/2 Running 0 4h21m

[root@node01 ~]# curl http://127.1:8080
You are only young once, but you can stay immature indefinitely.

[root@node01 ~]# curl http://127.1:8080
The secret source of humor is not joy but sorrow; there is no humor in Heaven.
-- Mark Twain
  • 这2个容器的作用,第一个是每10秒产生一个html并存储在空白卷里面
  • 第二个容器用来展示该空白卷里面的html文件
  • 而结果也很好的展示了通过这个空白卷将这一个pod里面的容器相互通信

三 hostPath卷的介绍以及应用

  3.1  首先了解一下,hospath区别于其他类型的卷的地方,顾名思义,hostpath的卷是依赖于node节点的,就是将pod的数据持久化存储在节点上面,这个是区别于emptyDir卷的存在

但是有一个缺点是,众所周知,pod是有生命周期的,一旦pod由于任何原因消失,kubernets就会重新调度到节点上,但是会随机的调度到集群的任一节点,所以当第一个pod消失之后,很有可能

会调度到其他节点上,所以这个类型的卷不适合存储应用级别的卷,而是适合存储由daemonSet创建的pod,因为DaemonSet的pod属于系统级别的pod,每个节点都会存在一个

  

kubernets之卷的更多相关文章

  1. kubernets之持久卷的动态配置

    一  介绍持久卷的动态配置原理 前面介绍的pv以及pvc,都需要kubernets集群管理员来支持实际的底层存储,但是kubernets还支持动态配置持久卷来自动化完成这个任务集群管理员可以创建一个持 ...

  2. Kubernets 资源类型简介

    # Node 代表 Kubernets 集群运行的宿主物理机或者虚拟服务器, 为容器提供必要的计算资源: 内存 与 CPU 等. # Pod 最底层的抽象. 一个 Pod 中可以包含一个或者多个运行的 ...

  3. kubernets基础

    1.定义和功能. 1.1定义:kubernets解释为舵手或者飞行员,以Borg为主衍生出. 1.2功能:自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚. 密钥和配置管理,存储编排, ...

  4. 【01】Kubernets:捋一捋概念性东西

    写在前面的话 docker 先告一段,现在开始进入 Kubernets(K8S) 的学习阶段,在学习过程中,可结合之前学的 docker swarm 比对着理解. 啥是 K8S 先来看一下两个 log ...

  5. kubernets之节点和网络的安全保障策略

    一  在pod中使用宿主节点的命名空间 1.1  在pod中使用宿主的网络命名空间 [root@node01 Chapter13]# cat pod-with-host-network.yml api ...

  6. kubernets集群的安全防护(上)

    一  了解认证机制 1.1   API的服务器在接收来自客户端的请求的时候会对发起的用户进行几个步骤 认证插件进行认证,确认发起的用户是外部用户,还是集群中的某个命名空间里面的pod 确认用户属于哪个 ...

  7. kubernets之statefulset资源

    一  了解Statefulset 1.1  对比statefulset与RS以及RC的区别以及相同点 Statefulset是有状态的,而RC以及RS等是没有状态的 Statefulset是有序的,拥 ...

  8. kubernets与API服务器进行交互

    一  为何需要与kubernets集群的API服务器进行交互 1.1  kubernets提供了一种downapi的资源可以将pod的元数据渲染成环境变量或者downward卷的形式挂载到容器的文件系 ...

  9. kubernets之从应用访问pod元数据以及其他资源

    一  downwardAPI的应用 1.1  前面我们介绍了如何通过configmap以及secret将配置传入到pod的容器中,但是传递的这些都是预先能够安排和只晓得,对于那些只有当pod创建起来之 ...

随机推荐

  1. LLVM程序分析日记之CMake使用

    我们编写LLVM Pass或者将LLVM嵌入自己的项目时,需要用到CMake来组织自己的项目目录. Documents [1] http://llvm.org/docs/CMake.html#embe ...

  2. IO(02)--属性集、缓冲流、转换流

    属性集[Properties] java.util.Properties类继承于Hashtable,用来表示一个持久的属性集.它使用键值结构存储数据,每个键及其对应的值都是一个字符串. 构造方法 ​ ...

  3. MySQL锁(三)行锁:幻读是什么?如何解决幻读?

    概述 前面两篇文章介绍了MySQL的全局锁和表级锁,今天就介绍一下MySQL的行锁. MySQL的行锁是各个引擎内部实现的,不是所有的引擎支持行锁,例如MyISAM就不支持行锁. 不支持行锁就意味着在 ...

  4. 04-flask-模版基础

    Jinja2 概念 Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Fl ...

  5. Elasticsearch 学习二(请求流程).

    一.写入数据 1.ES 的任意节点都可以作为协调(Coordinating)节点接受请求(包括新建.索引或者删除请求),每个节点都知道集群中任一文档位置: 2.协调节点会通过 routing 字段计算 ...

  6. Java 持久层框架之 MyBatis

    MyBatis 简介 MyBatis 是一个基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需关注 SQL 语句本身,而不用再花费精力去处理诸如注册驱动.创建 Connection.配 ...

  7. .NET Core 使用MediatR CQRS模式 读写分离

    前言 CQRS(Command Query Responsibility Segregation)命令查询职责分离模式,它主要从我们业务系统中进行分离出我们(Command 增.删.改)和(Query ...

  8. ML.net重新训练模型需要注意的事项。

    ml.net是微软机器学习的东西,如果你的需求是需要一个固定的模型来进行操作的话那就按着官网的教程来就可以,但是大部分的模型可能不满足现有的需求,那么我们需要对模型进行重新训练. 重新训练模型有限制条 ...

  9. 微信小程序--相对路径和绝对路径

    相对路径: ../表示返回访问上一级目录 如:../../components/like/index 绝对路径: 以"/"开头 表示从根目录开始寻找文件 如:/components ...

  10. Vue2+Koa2+Typescript前后端框架教程--03后端路由和三层模式配置

    昨天将Koa2的基础框架和自动编译调试重启服务完成,今天开始配置路由和搭建基础的三层架构模式. 路由中间件:koa-router,即路由导航,就是我们平时使用最广泛的get/post方法执行的URL路 ...