11 k8s 第七篇

1.数据存储

在这里插入图片描述

01.volume存储介绍

在这里插入图片描述

docekr更适合无状态服务,如LVS  Nginx  阿帕奇,比如数据库这种有状态服
务,因为数据库会不断更新数据,所以如果当这些服务剔除docker集群之后,无
状态服务可以通过NFS恢复,但是数据库则不能,因为k8s是基础设施服务的领航
者,所以他要公破有状态服务的数据也能恢复或持久,所以引申除了PV和PVC
  由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些
  问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件
  将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一
  起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解
  决上述的两个问题。在Docker有存储卷的概念卷,但Docker中存储卷只是磁
  盘的或另一个容器中的目录,并没有对其生命周期进行管理。Kubernetes的
  存储卷有自己的生命周期,它的生命周期与使用的它Pod生命周期一致。
  因此,相比于在Pod中运行的容器来说,存储卷的存在时间会比的其中的任何
  容器都长,并且在容器重新启动时会保留数据。当然,当Pod停止存在时,存
  储卷也将不再存在。在Kubernetes支持多种类型的卷,而Pod可以同时使用
  各种类型和任意数量的存储卷。在Pod中通过指定下面的字段来使用存储卷:
spec.volumes:通过此字段提供指定的存储卷
spec.containers.volumeMounts:通过此字段将存储卷挂接到容器中

在这里插入图片描述

常用的数据卷:
• 本地(hostPath,emptyDir)
• 网络(NFS,Ceph,GlusterFS)
• 公有云(AWS EBS)
• K8S资源(configmap,secret)

a.临时存储卷 EmptyDir

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
案例解释:
在这里插入图片描述
在这里插入图片描述
第二个案列:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三个案列:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

b.节点存储卷 HostPath

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 ---上面的图片中写错了    应该修改属主属组为kubelete 

在这里插入图片描述

在这里插入图片描述
案例一:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例二:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

c.网络存储卷 NFS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

d.PV和PVC

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

e.PV

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例yaml文件解释:
在这里插入图片描述

案例二:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

f.PVC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:
第一步:要有外部存储设备,比如nfs存储服务器
第二步:创建pv,标明此pv定的多大的存储空间,然后让出pv与nfs关联
第三步:创建PVC让PVC去pv申请存储空间,然后把pvc的申明与pod进行挂载,当找到相应的pv之后,挂载的就是pv了,pvc只是负责申明

g.生命周期

在这里插入图片描述
在这里插入图片描述

h.ConfigMap

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:

第一步新建configmap文件
apiVersion: v1   ---版本
kind: ConfigMap  ---种类为configmap
metadata:        ---定义元数据
  name: front-conf   ---名称为front-conf
  namespace: tsp     ---所属名称空间
data:                ---定义数据信息
  baseUrl.js: |      ---key名
    window.baseUrl = 'http://xxx.com/'   ---value值
    window.websocketUrl = 'ws://xxx:8090/ws'
第二步创建pod进行文件名目录挂载
deployment.spec  ---使用的是deployment类型的pod
  containers:
  - name: app
    image: xxx.docker.com/project/myapp:myversion
    ...
    volumeMounts: ---挂载导入的configmap文件
      - name: front-config   ---这个要和下面的volumes定义的name保持一样才能被挂载
        mountPath: /mx-nodejs/dist/ ---挂载路径
  volumes: ---导入第一步创建的configmap文件
    - name: front-config  ---名为front-config
      configMap:          
        name: front-conf  ---这个要和第一步创建configmap文件的name保持一样才能够被导入
启动deployment后,便可在应用容器内发现/mx-nodejs/dist/baseUrl.js
文件(可见简单理解为在mountPath目录中挂载configMap.data中的多个文件)
可以看到这里的文件路径下的内容已经是configmap文件里面的内容
了,以后的Nginx或者Tomcat等等的配置文件都可以这样使用挂载了

在这里插入图片描述

i.secret

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值