第六章 卷:将磁盘挂载到容器

news/2024/7/4 8:09:53 标签: kubernetes, 容器, 云原生

1. 介绍卷

每个新容器都是通过在构建镜像时加入的详细配置文件来启动的。 将此与pod 中容器重新启动的现象结合起来。

存储卷是 pod 的一个组成部分。这意味着在 pod 启动时创建卷, 并在删除 pod时销毁卷。 因此, 在容器重新启动期间, 卷的内容将保持不变, 在重新启动容器之后, 新容器可以识别前一个容器写入卷的所有文件。

另外,如果一个 pod 包含多个容器, 那这个卷可以同时被所有的容器使用。

1.1 卷类型

• emptyDir 用于存储临时数据的简单空目录。
• hostPath 用于将目录从工作节点的文件系统挂载到pod中。
• gitRepo 通过检出Git仓库的内容来初始化的卷。
• nfs 挂载到pod中的NFS共享卷。

2. 通过卷在容器之间共享数据

2.1 使用 emptyDir

关注它是如何用于在 pod 的多个容器之间共享数据的。卷从一个 目录开始,运行在 pod 内的应用程序可以写入它需要 的任何文件。pod 含两个容器和 个挂载在两个容器中的共用的卷,但在不同的路径上。

apiVersion: vl 
kind: Pod 
metadata: 
	name : fortune 
spec: 
	containers: 
	-image: luksa/fortune 
		name: html generator
		volumeMounts: 
		- name: html 
		  mountPath: /var/htdocs   名为html的卷挂载在/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                叫html的emptyDir卷,挂载在上面的两个容器中
	emptyDir: {}

将端口从本地机器转发到 pod 来实现,计算机的 808 端口来访问服务
 kubectl port-forward fortune 8080:80

volumes: 
 - name: html 
   emptyDir
	  medium: Memory          # 存在内存上

2.2 使用 Git 仓库作为存储卷

gitRepo 卷基本上也是 emptyDir 卷,它通过克隆 Git 仓库并在 pod时(但在创建容器之前 检出特定版本来填充数据。

注意:

  • 在创建gitRepo 卷后,它并不能和对应 repo 保持同步。 当向库推送新增 的提交时,文件将不会被更新。
  • 然而,如果所用 pod 是由ReplicationController 管理的,删除这个 pod 将触发新建一个新的 pod ,而这个新 pod
    的卷中将包含最新的提交。
apiVersion : vl 
kind: Pod 
metadata: 
	name: gi trepo-volume-pod
	spec: 
		containers: 
		- image: nginx:alpine 
			name: web -server 
			volumeMounts : 
		- name : html 
			mountPath: / usr/share/nginx/ html 
			readOnly: true 
			ports: 
				containerPort: 80 
				protocol: TCP 
	volumes                     
		- name: html                
		gitRepo: https://githubo.com/...
		revision: master     github 库的mater分支下载
		directory: .         创建在根目录

如果想要将私有的 Git repo 克隆到容器中, 则应该使用 gitsync sidecar 或类似的方法, 而不是使用 gitRepo 卷。

3 访问工作节点文件系统上的文件(hostPath卷)

大多数 pod 应该忽略它们的主机节点, 因此它们不应该访问节点文件系统上的任何文件。

hostPath 卷指向节点文件系统上的特定文件或目录。 在同一个节点上运行并在其 hostPath 卷中使用相同路径的 pod 可以看到相同的文件。

hostPath 卷是我们介绍的第 一种类型的持久性存储。切勿使用它们来持久化跨 pod的数据。

kubect1 get pod s --namespace kube-system

查看hostpaht 的使用, 切勿使用它们来持久化跨 pod的数据
kubectl describe po fluentd-kubia-4ebc2fle-9a3e --namespace kube-system

4 使用持久化存储

当运行在一个 pod 中的应用程序需要将数据保存到磁盘上, 并且即使该 pod 重新调度到另 一个节点时也要求具有相同的数据可用。此必须将其存储在某种类型的网络存储 (NAS) 中。

使用 GCE 持久磁盘作为底层存储机制。

同 一区域的 Kubemetes 集群中创建
gcloud container clusters list
NAME   ZONE          MASTER VERSION  MASTER_IP 
kubia europe-westl-b 1.2.5  		104.155.84.137


在europe-westl-b 区域中创建了集群 创建GCE 持久磁盘
gcloud compute disks create --size=lGiB --zone=europe-west-b mongodb

apiVersion: vl 
kind: Pod 
metadata:
	name: mongodb 
spec: 
	volumes: 
	- name: mongodb-data   卷名, 与挂载卷一致
	gcePersistentDisk:     类型是GCE持久磁盘
		pdName: mongodb    名称需要与创建的PD一致
		fsType: ext4       文件系统类型
	containers: 
	- image: mongo
		name: mongodb      
		volumeMountS:
		- name: mongodb-data    挂载卷
		  mountPath: /data/db
	  ports: 
		- containerPort: 27017
		  protocol: TCP

http://www.niftyadmin.cn/n/5285459.html

相关文章

OAuth2.0入门(01)

目录 引言1. OAuth2.0基础概念1.1 授权与认证的区别1.2 OAuth2.0核心角色1.3 OAuth2.0授权类型授权码模式简化(隐式)模式密码模式客户端模式 2. OAuth2.0工作流程2.1 授权流程2.2 令牌获取流程 总结 引言 OAuth2.0是当前互联网领域中广泛使用的授权框架,它为用户资…

【银行测试】银行金融项目测试总结+面试题汇总(答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、银行项目测试的…

年终盘点文生图的狂飙之路,2023年文生图卷到什么程度了?

目录 前言发展1月2月3月4月5月6月7月9月10月11月12月 思考与总结参考文献 前言 说到文生图,可能有些人不清楚,但要说AI绘画,就有很多人直呼: 2022可以说是AI绘图大爆发的元年。 AI绘画模型可以分为扩散模型(Diffusio…

el-date-picker周选择器获取选择的日期范围

<el-date-pickerv-model"formData.date"type"week"format"yyyy 第 WW 周"placeholder"选择周"change"weekChange"> </el-date-picker>// 方法一&#xff1a;weekChange(val) {let startTime new Date(val.getT…

JAVA—substring()方法的作用

substring()作用&#xff1a;用于切割字符串&#xff0c;索引从0开始 两个参数&#xff0c;(beginIndex,endIndex) public class SubstringDemo {public static void main(String[] args) {String str "abcdefghijklmn";/**(beginIndex,endIndex) 从当前开始索引&…

水务行业数字化招标采购系统建设解决方案

国家“十四五”规划和2035年远景目标纲要&#xff1a;提升产业链供应链现代化水平。加快数字化发展&#xff0c;推动产业数字化&#xff0c;数字产业化&#xff0c;以数字化转型整体驱动生产方式、生活方式和治理方式变革。利用数字技术重构价值链、重组业务流程&#xff0c;或…

基于谷歌模型gemini-pro 的开发的QT 对话项目

支持的功能&#xff0c;新建对话框&#xff0c;目前发现相关梯子不支持访问谷歌的api 的可能代理设置的不对&#xff0c; QNetworkAccessManager manager;// Set up your requestQNetworkRequest request;request.setUrl(QUrl("https://generativelanguage.googleapis.com…

新版IDEA中Git的使用(二)

说明&#xff1a;前面介绍了在新版IDEA中Git的基本操作&#xff0c;本文介绍关于分支合并、拉取等操作&#xff1b; 例如&#xff0c;现在有一个项目&#xff0c;分支如下&#xff1a; main&#xff1a;主分支&#xff1b; dev&#xff1a;开发分支&#xff1b; test&#x…